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

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

Issue 11577022: Issue 7093. Support for inlining function references. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 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 560847a7c0449584f84abab90b17a4f39ca9c3a6..d0615c55e8b46dfa1b49f6f694aaf87f4ca7cfa8 100644
--- a/compiler/java/com/google/dart/compiler/parser/DartParser.java
+++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java
@@ -1603,7 +1603,7 @@ public class DartParser extends CompletionHooksParserBase {
redirectedConstructorName = parseIdentifier();
}
expect(Token.SEMICOLON);
- DartFunction function = doneWithoutConsuming(new DartFunction(formals.val,
+ DartFunction function = doneWithoutConsuming(new DartFunction(formals.val, formals.openParen,
formals.optionalOpenOffset, formals.optionalCloseOffset, parametersCloseParen, null, null));
return DartMethodDefinition.create(name, function, modifiers, redirectedTypeName,
redirectedConstructorName);
@@ -1613,11 +1613,12 @@ public class DartParser extends CompletionHooksParserBase {
if (peekPseudoKeyword(0, NATIVE_KEYWORD)) {
modifiers = modifiers.makeNative();
function = new DartFunction(formals.val, formals.optionalOpenOffset,
- formals.optionalCloseOffset, parametersCloseParen, parseNativeBlock(modifiers), null);
+ formals.optionalOpenOffset, formals.optionalCloseOffset, parametersCloseParen,
+ parseNativeBlock(modifiers), null);
} else {
function = new DartFunction(formals.val, formals.optionalOpenOffset,
- formals.optionalCloseOffset, parametersCloseParen, parseFunctionStatementBody(
- !modifiers.isExternal(), true), null);
+ formals.optionalOpenOffset, formals.optionalCloseOffset, parametersCloseParen,
+ parseFunctionStatementBody(!modifiers.isExternal(), true), null);
}
doneWithoutConsuming(function);
return DartMethodDefinition.create(name, function, modifiers, null);
@@ -1737,7 +1738,7 @@ public class DartParser extends CompletionHooksParserBase {
// Parse the parameters definitions.
FormalParameters parametersInfo;
if (modifiers.isGetter()) {
- parametersInfo = new FormalParameters(new ArrayList<DartParameter>(), -1, -1);
+ parametersInfo = new FormalParameters(new ArrayList<DartParameter>(), -1, -1, -1);
if (peek(0) == Token.LPAREN) {
reportError(position(), ParserErrorCode.DEPRECATED_GETTER);
parametersInfo = parseFormalParameterList();
@@ -1790,8 +1791,8 @@ public class DartParser extends CompletionHooksParserBase {
}
expect(Token.SEMICOLON);
DartFunction function = doneWithoutConsuming(new DartFunction(parameters,
- parametersInfo.optionalOpenOffset, parametersInfo.optionalCloseOffset,
- parametersCloseParen, null, returnType));
+ parametersInfo.openParen, parametersInfo.optionalOpenOffset,
+ parametersInfo.optionalCloseOffset, parametersCloseParen, null, returnType));
return DartMethodDefinition.create(name, function, modifiers, redirectedTypeName,
redirectedConstructorName);
}
@@ -1821,8 +1822,8 @@ public class DartParser extends CompletionHooksParserBase {
}
DartFunction function = doneWithoutConsuming(new DartFunction(parameters,
- parametersInfo.optionalOpenOffset, parametersInfo.optionalCloseOffset,
- parametersCloseParen, body, returnType));
+ parametersInfo.openParen, parametersInfo.optionalOpenOffset,
+ parametersInfo.optionalCloseOffset, parametersCloseParen, body, returnType));
return DartMethodDefinition.create(name, function, modifiers, initializers);
}
@@ -2065,11 +2066,13 @@ public class DartParser extends CompletionHooksParserBase {
private static class FormalParameters {
private final List<DartParameter> val;
+ private final int openParen;
private final int optionalOpenOffset;
private final int optionalCloseOffset;
- public FormalParameters(List<DartParameter> parameters, int optionalOpenOffset,
+ public FormalParameters(List<DartParameter> parameters, int openParen, int optionalOpenOffset,
int optionalCloseOffset) {
this.val = parameters;
+ this.openParen = openParen;
this.optionalOpenOffset = optionalOpenOffset;
this.optionalCloseOffset = optionalCloseOffset;
}
@@ -2109,6 +2112,7 @@ public class DartParser extends CompletionHooksParserBase {
int optionalCloseOffset = -1;
expect(Token.LPAREN);
boolean done = optional(Token.RPAREN);
+ int openParen = ctx.getTokenLocation().getBegin();
boolean isOptional = false;
boolean isNamed = false;
while (!done) {
@@ -2156,7 +2160,7 @@ public class DartParser extends CompletionHooksParserBase {
}
}
- return new FormalParameters(done(params), optionalOpenOffset, optionalCloseOffset);
+ return new FormalParameters(done(params), openParen, optionalOpenOffset, optionalCloseOffset);
}
/**
@@ -3671,8 +3675,9 @@ public class DartParser extends CompletionHooksParserBase {
FormalParameters params = parseFormalParameterList();
int parametersCloseParen = ctx.getTokenLocation().getBegin();
DartBlock body = parseFunctionStatementBody(true, isDeclaration);
- DartFunction function = new DartFunction(params.val, params.optionalOpenOffset,
- params.optionalCloseOffset, parametersCloseParen, body, returnType);
+ DartFunction function = new DartFunction(params.val, params.openParen,
+ params.optionalOpenOffset, params.optionalCloseOffset, parametersCloseParen, body,
+ returnType);
doneWithoutConsuming(function);
return function;
}

Powered by Google App Engine
This is Rietveld 408576698