Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2309)

Unified Diff: compiler/java/com/google/dart/compiler/parser/DartParser.java

Issue 8728001: Support for 'abstract' modifier for class and spec recommended warnings, issue 375 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Merge. Warning for factory constructor of abstract class. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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));
}
}

Powered by Google App Engine
This is Rietveld 408576698