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

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

Issue 10996036: Quick fixes 'Create class' and 'Create constructor' (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 months 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 dcdeadae89bda1e16b77ef347b5b5d6a5a59b990..66632b83f61c61baabc57c0c81299b4f8613791f 100644
--- a/compiler/java/com/google/dart/compiler/parser/DartParser.java
+++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java
@@ -963,16 +963,28 @@ public class DartParser extends CompletionHooksParserBase {
}
// Parse the members.
+ int openBraceOffset = -1;
+ int closeBraceOffset = -1;
List<DartNode> members = new ArrayList<DartNode>();
- parseClassOrInterfaceBody(members);
+ if (optional(Token.LBRACE)) {
+ openBraceOffset = ctx.getTokenLocation().getBegin();
+ parseClassOrInterfaceBody(members);
+ expectCloseBrace(true);
+ closeBraceOffset = ctx.getTokenLocation().getBegin();
+ } else {
+ reportErrorWithoutAdvancing(ParserErrorCode.EXPECTED_CLASS_DECLARATION_LBRACE);
+ }
if (isParsingInterface) {
- return done(new DartClass(name, superType, interfaces, members, typeParameters, defaultClass));
+ return done(new DartClass(name, superType, interfaces, openBraceOffset, closeBraceOffset,
+ members, typeParameters, defaultClass));
} else {
return done(new DartClass(name,
nativeName,
superType,
interfaces,
+ openBraceOffset,
+ closeBraceOffset,
members,
typeParameters,
modifiers));
@@ -982,26 +994,21 @@ public class DartParser extends CompletionHooksParserBase {
/**
* Helper for {@link #parseClass()}.
*
- * '{' classMemberDefinition* '}'
+ * classMemberDefinition*
*/
@Terminals(tokens={Token.RBRACE, Token.SEMICOLON})
private void parseClassOrInterfaceBody(List<DartNode> members) {
- if (optional(Token.LBRACE)) {
- while (!match(Token.RBRACE) && !EOS() && !looksLikeTopLevelKeyword()) {
- List<DartAnnotation> metadata = parseMetadata();
- DartNodeWithMetadata member = parseFieldOrMethod(true);
- if (member != null) {
- setMetadata(member, metadata);
- members.add(member);
- }
- // Recover at a semicolon
- if (optional(Token.SEMICOLON)) {
- reportUnexpectedToken(position(), null, Token.SEMICOLON);
- }
+ while (!match(Token.RBRACE) && !EOS() && !looksLikeTopLevelKeyword()) {
+ List<DartAnnotation> metadata = parseMetadata();
+ DartNodeWithMetadata member = parseFieldOrMethod(true);
+ if (member != null) {
+ setMetadata(member, metadata);
+ members.add(member);
+ }
+ // Recover at a semicolon
+ if (optional(Token.SEMICOLON)) {
+ reportUnexpectedToken(position(), null, Token.SEMICOLON);
}
- expectCloseBrace(true);
- } else {
- reportErrorWithoutAdvancing(ParserErrorCode.EXPECTED_CLASS_DECLARATION_LBRACE);
}
}

Powered by Google App Engine
This is Rietveld 408576698