| Index: compiler/java/com/google/dart/compiler/parser/DartParser.java
|
| diff --git a/compiler/java/com/google/dart/compiler/parser/DartParser.java b/compiler/java/com/google/dart/compiler/parser/DartParser.java
|
| index 5912a1ff839f51739413bc4d6555a974a7005c6d..3a23979cf5c7435e5d160d1deefe713f86222969 100644
|
| --- a/compiler/java/com/google/dart/compiler/parser/DartParser.java
|
| +++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java
|
| @@ -114,7 +114,6 @@ public class DartParser extends CompletionHooksParserBase {
|
| private boolean isParsingInterface;
|
| private boolean isTopLevelAbstract;
|
| private DartScanner.Position topLevelAbstractModifierPosition;
|
| - private DartScanner.Position classLevelAbstractModifierPosition;
|
| private boolean isParsingClass;
|
|
|
| /**
|
| @@ -868,7 +867,6 @@ public class DartParser extends CompletionHooksParserBase {
|
| reportError(position(), ParserErrorCode.ABSTRACT_MEMBER_IN_INTERFACE);
|
| }
|
| modifiers = modifiers.makeAbstract();
|
| - classLevelAbstractModifierPosition = position();
|
| } else if (optionalPseudoKeyword(FACTORY_KEYWORD)) {
|
| if (isParsingInterface) {
|
| reportError(position(), ParserErrorCode.FACTORY_MEMBER_IN_INTERFACE);
|
| @@ -1209,13 +1207,15 @@ public class DartParser extends CompletionHooksParserBase {
|
| private DartNode parseMethodOrAccessor(Modifiers modifiers, DartTypeNode returnType) {
|
| DartMethodDefinition method = done(parseMethod(modifiers, returnType));
|
| // Abstract method can not have a body.
|
| - if (method.getModifiers().isAbstract() && method.getFunction().getBody() != null) {
|
| - Location location =
|
| - new Location(classLevelAbstractModifierPosition,
|
| - classLevelAbstractModifierPosition.getAdvancedColumns(ABSTRACT_KEYWORD.length()));
|
| - reportError(new DartCompilationError(ctx.getSource(),
|
| - location,
|
| - ParserErrorCode.ABSTRACT_METHOD_WITH_BODY));
|
| + if (method.getFunction().getBody() != null) {
|
| + if (isParsingInterface) {
|
| + reportError(new DartCompilationError(method.getName(),
|
| + ParserErrorCode.INTERFACE_METHOD_WITH_BODY));
|
| + }
|
| + if (method.getModifiers().isAbstract()) {
|
| + reportError(new DartCompilationError(method.getName(),
|
| + ParserErrorCode.ABSTRACT_METHOD_WITH_BODY));
|
| + }
|
| }
|
| // If getter or setter, generate DartFieldDefinition instead.
|
| if (method.getModifiers().isGetter() || method.getModifiers().isSetter()) {
|
|
|