| 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 da8ce9ce83b02ce63e3bcaa554655a3aaa114ea4..85e54bf233d968aeb3ba567714bd926568e0b44c 100644
|
| --- a/compiler/java/com/google/dart/compiler/parser/DartParser.java
|
| +++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java
|
| @@ -111,6 +111,7 @@ public class DartParser extends CompletionHooksParserBase {
|
| private Set<String> prefixes;
|
| private boolean isDietParse;
|
| private boolean isParsingInterface;
|
| + private boolean isParsingAbstract;
|
|
|
| /**
|
| * Determines the maximum number of errors before terminating the parser. See
|
| @@ -253,6 +254,12 @@ public class DartParser extends CompletionHooksParserBase {
|
| DartNode node = null;
|
| beginTopLevelElement();
|
| isParsingInterface = false;
|
| + // Check for ABSTRACT_KEYWORD.
|
| + isParsingAbstract = false;
|
| + if (optionalPseudoKeyword(ABSTRACT_KEYWORD)) {
|
| + isParsingAbstract = true;
|
| + }
|
| + // Parse top level element.
|
| if (optionalPseudoKeyword(CLASS_KEYWORD)) {
|
| node = done(parseClass());
|
| } else if (optionalPseudoKeyword(INTERFACE_KEYWORD)) {
|
| @@ -546,6 +553,12 @@ public class DartParser extends CompletionHooksParserBase {
|
| private DartDeclaration<?> parseClass() {
|
| beginClassBody();
|
|
|
| + // Parse modifiers.
|
| + Modifiers modifiers = Modifiers.NONE;
|
| + if (isParsingAbstract) {
|
| + modifiers = modifiers.makeAbstract();
|
| + }
|
| +
|
| DartIdentifier name = parseIdentifier();
|
| List<DartTypeParameter> typeParameters = parseTypeParametersOpt();
|
|
|
| @@ -599,7 +612,13 @@ public class DartParser extends CompletionHooksParserBase {
|
| if (isParsingInterface) {
|
| return done(new DartClass(name, superType, interfaces, members, typeParameters, factory));
|
| } else {
|
| - return done(new DartClass(name, nativeName, superType, interfaces, members, typeParameters));
|
| + return done(new DartClass(name,
|
| + nativeName,
|
| + superType,
|
| + interfaces,
|
| + members,
|
| + typeParameters,
|
| + modifiers));
|
| }
|
| }
|
|
|
|
|