From 414f04715c226ea7e26c326217e02ba02e6a8146 Mon Sep 17 00:00:00 2001 From: "Fuji, Goro" <goro-fuji@cookpad.com> Date: Sun, 13 Oct 2013 11:42:53 +0900 Subject: [PATCH] close #279; do not raise compile errors for static functions --- src/classdef.jsx | 2 +- t/run/357.issue279-static-method.jsx | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 t/run/357.issue279-static-method.jsx diff --git a/src/classdef.jsx b/src/classdef.jsx index deb593b7..cf097fbe 100644 --- a/src/classdef.jsx +++ b/src/classdef.jsx @@ -882,7 +882,7 @@ class ClassDefinition implements Stashable { } if (! Util.typesAreEqual((this._members[i] as MemberFunctionDefinition).getArgumentTypes(), member.getArgumentTypes())) continue; - if ((! isCheckingInterface) && (member.flags() & ClassDefinition.IS_OVERRIDE) == 0) { + if ((! isCheckingInterface) && ((member.flags() | this._members[i].flags()) & ClassDefinition.IS_STATIC) == 0 && (member.flags() & ClassDefinition.IS_OVERRIDE) == 0) { var error = new CompileError(member.getNameToken(), "overriding functions must have 'override' attribute set"); error.addCompileNote(new CompileNote(this._members[i].getNameToken(), Util.format("defined in base class '%1'", [this.classFullName()]))); context.errors.push(error); diff --git a/t/run/357.issue279-static-method.jsx b/t/run/357.issue279-static-method.jsx new file mode 100644 index 00000000..cc7ee1de --- /dev/null +++ b/t/run/357.issue279-static-method.jsx @@ -0,0 +1,21 @@ +/*EXPECTED +ok +*/ + +class StaticParent +{ + static function f() : void { } +} + +class StaticInstanceChild extends StaticParent +{ + function f() : void { } +} + +class _Main { + static function main(args : string[]):void { + log "ok"; + } +} + +// vim: set expandtab tabstop=2 shiftwidth=2 ft=jsx: