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 8d21c71f65e9b81ef2fcd78ca6d824e7fe2355f7..dffb6799ac861dbd73aee0e5806071fd3085aa55 100644 |
--- a/compiler/java/com/google/dart/compiler/parser/DartParser.java |
+++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java |
@@ -1754,6 +1754,7 @@ public class DartParser extends CompletionHooksParserBase { |
List<DartExpression> arguments = new ArrayList<DartExpression>(); |
expect(Token.LPAREN); |
// SEMICOLON is for error recovery |
+ boolean namedArgumentParsed = false; |
while (!match(Token.RPAREN) && !match(Token.EOS) && !match(Token.SEMICOLON)) { |
beginParameter(); |
DartExpression expression; |
@@ -1761,8 +1762,12 @@ public class DartParser extends CompletionHooksParserBase { |
DartIdentifier name = parseIdentifier(); |
expect(Token.COLON); |
expression = new DartNamedExpression(name, parseExpression()); |
+ namedArgumentParsed = true; |
} else { |
expression = parseExpression(); |
+ if (namedArgumentParsed) { |
+ reportError(expression, ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT); |
+ } |
} |
arguments.add(done(expression)); |
switch(peek(0)) { |