Index: sdk/lib/_internal/compiler/implementation/resolution/members.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/sdk/lib/_internal/compiler/implementation/resolution/members.dart |
index 4135d0cc3585607fda7a57ae98f58db2ebdae025..d69635e889e0642f272536c869eee16bccee7833 100644 |
--- a/sdk/lib/_internal/compiler/implementation/resolution/members.dart |
+++ b/sdk/lib/_internal/compiler/implementation/resolution/members.dart |
@@ -2727,6 +2727,27 @@ class ResolverVisitor extends MappingVisitor<Element> { |
} else { |
visitor.variables.type = compiler.types.dynamicType; |
} |
+ |
+ Modifiers modifiers = node.modifiers; |
+ void reportExtraModifier(String modifier) { |
+ Node modifierNode; |
+ for (var nodes = modifiers.nodes; !nodes.isEmpty; nodes = nodes.tail) { |
+ if (modifier == nodes.head.asIdentifier().source.stringValue) { |
+ modifierNode = nodes.head; |
+ break; |
+ } |
+ } |
+ assert(modifierNode != null); |
+ compiler.reportError(modifierNode, MessageKind.EXTRANEOUS_MODIFIER, |
+ {'modifier': modifier}); |
+ } |
+ if (modifiers.isFinal() && (modifiers.isConst() || modifiers.isVar())) { |
+ reportExtraModifier('final'); |
+ } |
+ if (modifiers.isVar() && (modifiers.isConst() || node.type != null)) { |
+ reportExtraModifier('var'); |
+ } |
+ |
visitor.visit(node.definitions); |
} |