Index: lib/compiler/implementation/scanner/class_element_parser.dart |
diff --git a/lib/compiler/implementation/scanner/class_element_parser.dart b/lib/compiler/implementation/scanner/class_element_parser.dart |
index 02f6eaab530429b9ea26a40f8ea34c8083672ed1..0a117e2d0e2395a3bf370842cd0753f651294960 100644 |
--- a/lib/compiler/implementation/scanner/class_element_parser.dart |
+++ b/lib/compiler/implementation/scanner/class_element_parser.dart |
@@ -22,6 +22,7 @@ class PartialClassElement extends ClassElement { |
ClassNode parseNode(DiagnosticListener diagnosticListener) { |
if (cachedNode != null) return cachedNode; |
+ |
MemberListener listener = new MemberListener(diagnosticListener, this); |
Parser parser = new ClassElementParser(listener); |
Token token = parser.parseTopLevelDeclaration(beginToken); |
@@ -109,10 +110,18 @@ class MemberListener extends NodeListener { |
bool isConstructor = isConstructorName(method.name); |
SourceString name = getMethodNameHack(method.name); |
ElementKind kind = ElementKind.FUNCTION; |
+ Modifiers modifiers = method.modifiers; |
+ if (modifiers.isFinal()) { |
+ recoverableError('illegal modifier', node: modifiers); |
ahe
2012/08/24 08:32:18
I would rather catch this in the resolver.
|
+ } |
if (isConstructor) { |
if (getOrSet !== null) { |
recoverableError('illegal modifier', token: getOrSet); |
} |
+ if (modifiers.isStatic() || |
+ modifiers.isAbstract()) { |
+ recoverableError('illegal modifier', node: modifiers); |
ahe
2012/08/24 08:32:18
Ditto.
|
+ } |
kind = ElementKind.GENERATIVE_CONSTRUCTOR; |
} else if (getOrSet !== null) { |
kind = (getOrSet.stringValue === 'get') |