Chromium Code Reviews| Index: lib/compiler/implementation/resolver.dart |
| diff --git a/lib/compiler/implementation/resolver.dart b/lib/compiler/implementation/resolver.dart |
| index 132050d262edc7db89d26cdf70847d240fa79aab..41d4e8656ebe2e871f2428d980d3b42adb3f2fcd 100644 |
| --- a/lib/compiler/implementation/resolver.dart |
| +++ b/lib/compiler/implementation/resolver.dart |
| @@ -119,6 +119,9 @@ class ResolverTask extends CompilerTask { |
| } |
| FunctionExpression tree = element.parseNode(compiler); |
| if (isConstructor) { |
| + if (tree.returnType != null) { |
|
ahe
2012/08/25 04:37:19
Please use !== until dart2js supports the new equa
|
| + error(tree, MessageKind.CONSTRUCTOR_WITH_RETURN_TYPE); |
| + } |
| resolveConstructorImplementation(element, tree); |
| } |
| ResolverVisitor visitor = new ResolverVisitor(compiler, element); |
| @@ -281,6 +284,27 @@ class ResolverTask extends CompilerTask { |
| void checkMembers(ClassElement cls) { |
| if (cls === compiler.objectClass) return; |
| cls.forEachMember((holder, member) { |
| + |
| + // Check modifiers. |
| + if (member.isFunction() && member.modifiers.isFinal()) { |
| + compiler.reportMessage( |
| + compiler.spanFromElement(member), |
| + MessageKind.ILLEGAL_FINAL_METHOD_MODIFIER.error(), |
| + api.Diagnostic.ERROR); |
| + } |
| + if (member.isConstructor()) { |
| + final mismatchedFlagsBinary = |
|
ahe
2012/08/25 04:37:19
How about Bits instead of Binary?
|
| + member.modifiers.flags & |
| + (Modifiers.FLAG_STATIC | Modifiers.FLAG_ABSTRACT); |
| + if (mismatchedFlagsBinary != 0) { |
| + final mismatchedFlags = |
| + new Modifiers.withFlags(null, mismatchedFlagsBinary); |
| + compiler.reportMessage( |
| + compiler.spanFromElement(member), |
| + MessageKind.ILLEGAL_CONSTRUCTOR_MODIFIERS.error([mismatchedFlags]), |
| + api.Diagnostic.ERROR); |
| + } |
| + } |
| checkAbstractField(member); |
| checkValidOverride(member, cls.lookupSuperMember(member.name)); |
| }); |