| OLD | NEW |
| 1 // This code was auto-generated, is not intended to be edited, and is subject to | 1 // This code was auto-generated, is not intended to be edited, and is subject to |
| 2 // significant change. Please see the README file for more information. | 2 // significant change. Please see the README file for more information. |
| 3 library engine.parser; | 3 library engine.parser; |
| 4 import 'dart:collection'; | 4 import 'dart:collection'; |
| 5 import 'java_core.dart'; | 5 import 'java_core.dart'; |
| 6 import 'instrumentation.dart'; | 6 import 'instrumentation.dart'; |
| 7 import 'error.dart'; | 7 import 'error.dart'; |
| 8 import 'source.dart'; | 8 import 'source.dart'; |
| 9 import 'scanner.dart'; | 9 import 'scanner.dart'; |
| 10 import 'ast.dart'; | 10 import 'ast.dart'; |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 420 * value is invalid. | 420 * value is invalid. |
| 421 * | 421 * |
| 422 * @param builder the builder to which the scalar value is to be appended | 422 * @param builder the builder to which the scalar value is to be appended |
| 423 * @param escapeSequence the escape sequence that was parsed to produce the sc
alar value | 423 * @param escapeSequence the escape sequence that was parsed to produce the sc
alar value |
| 424 * @param scalarValue the value to be appended | 424 * @param scalarValue the value to be appended |
| 425 * @param startIndex the index of the first character representing the scalar
value | 425 * @param startIndex the index of the first character representing the scalar
value |
| 426 * @param endIndex the index of the last character representing the scalar val
ue | 426 * @param endIndex the index of the last character representing the scalar val
ue |
| 427 */ | 427 */ |
| 428 void appendScalarValue(JavaStringBuilder builder, String escapeSequence, int s
calarValue, int startIndex, int endIndex) { | 428 void appendScalarValue(JavaStringBuilder builder, String escapeSequence, int s
calarValue, int startIndex, int endIndex) { |
| 429 if (scalarValue < 0 || scalarValue > Character.MAX_CODE_POINT || (scalarValu
e >= 0xD800 && scalarValue <= 0xDFFF)) { | 429 if (scalarValue < 0 || scalarValue > Character.MAX_CODE_POINT || (scalarValu
e >= 0xD800 && scalarValue <= 0xDFFF)) { |
| 430 reportError7(ParserErrorCode.INVALID_CODE_POINT, [escapeSequence]); | 430 reportError8(ParserErrorCode.INVALID_CODE_POINT, [escapeSequence]); |
| 431 return; | 431 return; |
| 432 } | 432 } |
| 433 if (scalarValue < Character.MAX_VALUE) { | 433 if (scalarValue < Character.MAX_VALUE) { |
| 434 builder.appendChar((scalarValue as int)); | 434 builder.appendChar(scalarValue as int); |
| 435 } else { | 435 } else { |
| 436 builder.append(Character.toChars(scalarValue)); | 436 builder.append(Character.toChars(scalarValue)); |
| 437 } | 437 } |
| 438 } | 438 } |
| 439 | 439 |
| 440 /** | 440 /** |
| 441 * Compute the content of a string with the given literal representation. | 441 * Compute the content of a string with the given literal representation. |
| 442 * | 442 * |
| 443 * @param lexeme the literal representation of the string | 443 * @param lexeme the literal representation of the string |
| 444 * @param first `true` if this is the first token in a string literal | 444 * @param first `true` if this is the first token in a string literal |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 * | 563 * |
| 564 * assignableSelector ::= | 564 * assignableSelector ::= |
| 565 * '[' expression ']' | 565 * '[' expression ']' |
| 566 * | '.' identifier | 566 * | '.' identifier |
| 567 * </pre> | 567 * </pre> |
| 568 * | 568 * |
| 569 * @param expression the expression being checked | 569 * @param expression the expression being checked |
| 570 */ | 570 */ |
| 571 void ensureAssignable(Expression expression) { | 571 void ensureAssignable(Expression expression) { |
| 572 if (expression != null && !expression.isAssignable) { | 572 if (expression != null && !expression.isAssignable) { |
| 573 reportError7(ParserErrorCode.ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE, []); | 573 reportError8(ParserErrorCode.ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE, []); |
| 574 } | 574 } |
| 575 } | 575 } |
| 576 | 576 |
| 577 /** | 577 /** |
| 578 * If the current token is a keyword matching the given string, return it afte
r advancing to the | 578 * If the current token is a keyword matching the given string, return it afte
r advancing to the |
| 579 * next token. Otherwise report an error and return the current token without
advancing. | 579 * next token. Otherwise report an error and return the current token without
advancing. |
| 580 * | 580 * |
| 581 * @param keyword the keyword that is expected | 581 * @param keyword the keyword that is expected |
| 582 * @return the token that matched the given type | 582 * @return the token that matched the given type |
| 583 */ | 583 */ |
| 584 Token expect(Keyword keyword) { | 584 Token expect(Keyword keyword) { |
| 585 if (matches(keyword)) { | 585 if (matches(keyword)) { |
| 586 return andAdvance; | 586 return andAdvance; |
| 587 } | 587 } |
| 588 reportError7(ParserErrorCode.EXPECTED_TOKEN, [keyword.syntax]); | 588 reportError8(ParserErrorCode.EXPECTED_TOKEN, [keyword.syntax]); |
| 589 return _currentToken; | 589 return _currentToken; |
| 590 } | 590 } |
| 591 | 591 |
| 592 /** | 592 /** |
| 593 * If the current token has the expected type, return it after advancing to th
e next token. | 593 * If the current token has the expected type, return it after advancing to th
e next token. |
| 594 * Otherwise report an error and return the current token without advancing. | 594 * Otherwise report an error and return the current token without advancing. |
| 595 * | 595 * |
| 596 * @param type the type of token that is expected | 596 * @param type the type of token that is expected |
| 597 * @return the token that matched the given type | 597 * @return the token that matched the given type |
| 598 */ | 598 */ |
| 599 Token expect2(TokenType type) { | 599 Token expect2(TokenType type) { |
| 600 if (matches5(type)) { | 600 if (matches5(type)) { |
| 601 return andAdvance; | 601 return andAdvance; |
| 602 } | 602 } |
| 603 if (identical(type, TokenType.SEMICOLON)) { | 603 if (identical(type, TokenType.SEMICOLON)) { |
| 604 reportError8(ParserErrorCode.EXPECTED_TOKEN, _currentToken.previous, [type
.lexeme]); | 604 reportError9(ParserErrorCode.EXPECTED_TOKEN, _currentToken.previous, [type
.lexeme]); |
| 605 } else { | 605 } else { |
| 606 reportError7(ParserErrorCode.EXPECTED_TOKEN, [type.lexeme]); | 606 reportError8(ParserErrorCode.EXPECTED_TOKEN, [type.lexeme]); |
| 607 } | 607 } |
| 608 return _currentToken; | 608 return _currentToken; |
| 609 } | 609 } |
| 610 | 610 |
| 611 /** | 611 /** |
| 612 * Search the given list of ranges for a range that contains the given index.
Return the range | 612 * Search the given list of ranges for a range that contains the given index.
Return the range |
| 613 * that was found, or `null` if none of the ranges contain the index. | 613 * that was found, or `null` if none of the ranges contain the index. |
| 614 * | 614 * |
| 615 * @param ranges the ranges to be searched | 615 * @param ranges the ranges to be searched |
| 616 * @param index the index contained in the returned range | 616 * @param index the index contained in the returned range |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1129 * <pre> | 1129 * <pre> |
| 1130 * argumentDefinitionTest ::= | 1130 * argumentDefinitionTest ::= |
| 1131 * '?' identifier | 1131 * '?' identifier |
| 1132 * </pre> | 1132 * </pre> |
| 1133 * | 1133 * |
| 1134 * @return the argument definition test that was parsed | 1134 * @return the argument definition test that was parsed |
| 1135 */ | 1135 */ |
| 1136 ArgumentDefinitionTest parseArgumentDefinitionTest() { | 1136 ArgumentDefinitionTest parseArgumentDefinitionTest() { |
| 1137 Token question = expect2(TokenType.QUESTION); | 1137 Token question = expect2(TokenType.QUESTION); |
| 1138 SimpleIdentifier identifier = parseSimpleIdentifier(); | 1138 SimpleIdentifier identifier = parseSimpleIdentifier(); |
| 1139 reportError8(ParserErrorCode.DEPRECATED_ARGUMENT_DEFINITION_TEST, question,
[]); | 1139 reportError9(ParserErrorCode.DEPRECATED_ARGUMENT_DEFINITION_TEST, question,
[]); |
| 1140 return new ArgumentDefinitionTest.full(question, identifier); | 1140 return new ArgumentDefinitionTest.full(question, identifier); |
| 1141 } | 1141 } |
| 1142 | 1142 |
| 1143 /** | 1143 /** |
| 1144 * Parse a list of arguments. | 1144 * Parse a list of arguments. |
| 1145 * | 1145 * |
| 1146 * <pre> | 1146 * <pre> |
| 1147 * arguments ::= | 1147 * arguments ::= |
| 1148 * '(' argumentList? ')' | 1148 * '(' argumentList? ')' |
| 1149 * | 1149 * |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1162 } | 1162 } |
| 1163 Expression argument = parseArgument(); | 1163 Expression argument = parseArgument(); |
| 1164 arguments.add(argument); | 1164 arguments.add(argument); |
| 1165 bool foundNamedArgument = argument is NamedExpression; | 1165 bool foundNamedArgument = argument is NamedExpression; |
| 1166 bool generatedError = false; | 1166 bool generatedError = false; |
| 1167 while (optional(TokenType.COMMA)) { | 1167 while (optional(TokenType.COMMA)) { |
| 1168 argument = parseArgument(); | 1168 argument = parseArgument(); |
| 1169 arguments.add(argument); | 1169 arguments.add(argument); |
| 1170 if (foundNamedArgument) { | 1170 if (foundNamedArgument) { |
| 1171 if (!generatedError && argument is! NamedExpression) { | 1171 if (!generatedError && argument is! NamedExpression) { |
| 1172 reportError7(ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT, []); | 1172 reportError8(ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT, []); |
| 1173 generatedError = true; | 1173 generatedError = true; |
| 1174 } | 1174 } |
| 1175 } else if (argument is NamedExpression) { | 1175 } else if (argument is NamedExpression) { |
| 1176 foundNamedArgument = true; | 1176 foundNamedArgument = true; |
| 1177 } | 1177 } |
| 1178 } | 1178 } |
| 1179 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); | 1179 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); |
| 1180 return new ArgumentList.full(leftParenthesis, arguments, rightParenthesis); | 1180 return new ArgumentList.full(leftParenthesis, arguments, rightParenthesis); |
| 1181 } | 1181 } |
| 1182 | 1182 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1216 Expression parseAssignableExpression(bool primaryAllowed) { | 1216 Expression parseAssignableExpression(bool primaryAllowed) { |
| 1217 if (matches(Keyword.SUPER)) { | 1217 if (matches(Keyword.SUPER)) { |
| 1218 return parseAssignableSelector(new SuperExpression.full(andAdvance), false
); | 1218 return parseAssignableSelector(new SuperExpression.full(andAdvance), false
); |
| 1219 } | 1219 } |
| 1220 Expression expression = parsePrimaryExpression(); | 1220 Expression expression = parsePrimaryExpression(); |
| 1221 bool isOptional = primaryAllowed || expression is SimpleIdentifier; | 1221 bool isOptional = primaryAllowed || expression is SimpleIdentifier; |
| 1222 while (true) { | 1222 while (true) { |
| 1223 while (matches5(TokenType.OPEN_PAREN)) { | 1223 while (matches5(TokenType.OPEN_PAREN)) { |
| 1224 ArgumentList argumentList = parseArgumentList(); | 1224 ArgumentList argumentList = parseArgumentList(); |
| 1225 if (expression is SimpleIdentifier) { | 1225 if (expression is SimpleIdentifier) { |
| 1226 expression = new MethodInvocation.full(null, null, (expression as Simp
leIdentifier), argumentList); | 1226 expression = new MethodInvocation.full(null, null, expression as Simpl
eIdentifier, argumentList); |
| 1227 } else if (expression is PrefixedIdentifier) { | 1227 } else if (expression is PrefixedIdentifier) { |
| 1228 PrefixedIdentifier identifier = expression as PrefixedIdentifier; | 1228 PrefixedIdentifier identifier = expression as PrefixedIdentifier; |
| 1229 expression = new MethodInvocation.full(identifier.prefix, identifier.p
eriod, identifier.identifier, argumentList); | 1229 expression = new MethodInvocation.full(identifier.prefix, identifier.p
eriod, identifier.identifier, argumentList); |
| 1230 } else if (expression is PropertyAccess) { | 1230 } else if (expression is PropertyAccess) { |
| 1231 PropertyAccess access = expression as PropertyAccess; | 1231 PropertyAccess access = expression as PropertyAccess; |
| 1232 expression = new MethodInvocation.full(access.target, access.operator,
access.propertyName, argumentList); | 1232 expression = new MethodInvocation.full(access.target, access.operator,
access.propertyName, argumentList); |
| 1233 } else { | 1233 } else { |
| 1234 expression = new FunctionExpressionInvocation.full(expression, argumen
tList); | 1234 expression = new FunctionExpressionInvocation.full(expression, argumen
tList); |
| 1235 } | 1235 } |
| 1236 if (!primaryAllowed) { | 1236 if (!primaryAllowed) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1267 if (matches5(TokenType.OPEN_SQUARE_BRACKET)) { | 1267 if (matches5(TokenType.OPEN_SQUARE_BRACKET)) { |
| 1268 Token leftBracket = andAdvance; | 1268 Token leftBracket = andAdvance; |
| 1269 Expression index = parseExpression2(); | 1269 Expression index = parseExpression2(); |
| 1270 Token rightBracket = expect2(TokenType.CLOSE_SQUARE_BRACKET); | 1270 Token rightBracket = expect2(TokenType.CLOSE_SQUARE_BRACKET); |
| 1271 return new IndexExpression.forTarget_full(prefix, leftBracket, index, righ
tBracket); | 1271 return new IndexExpression.forTarget_full(prefix, leftBracket, index, righ
tBracket); |
| 1272 } else if (matches5(TokenType.PERIOD)) { | 1272 } else if (matches5(TokenType.PERIOD)) { |
| 1273 Token period = andAdvance; | 1273 Token period = andAdvance; |
| 1274 return new PropertyAccess.full(prefix, period, parseSimpleIdentifier()); | 1274 return new PropertyAccess.full(prefix, period, parseSimpleIdentifier()); |
| 1275 } else { | 1275 } else { |
| 1276 if (!optional) { | 1276 if (!optional) { |
| 1277 reportError7(ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, []); | 1277 reportError8(ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, []); |
| 1278 } | 1278 } |
| 1279 return prefix; | 1279 return prefix; |
| 1280 } | 1280 } |
| 1281 } | 1281 } |
| 1282 | 1282 |
| 1283 /** | 1283 /** |
| 1284 * Parse a bitwise and expression. | 1284 * Parse a bitwise and expression. |
| 1285 * | 1285 * |
| 1286 * <pre> | 1286 * <pre> |
| 1287 * bitwiseAndExpression ::= | 1287 * bitwiseAndExpression ::= |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1368 Block parseBlock() { | 1368 Block parseBlock() { |
| 1369 Token leftBracket = expect2(TokenType.OPEN_CURLY_BRACKET); | 1369 Token leftBracket = expect2(TokenType.OPEN_CURLY_BRACKET); |
| 1370 List<Statement> statements = new List<Statement>(); | 1370 List<Statement> statements = new List<Statement>(); |
| 1371 Token statementStart = _currentToken; | 1371 Token statementStart = _currentToken; |
| 1372 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET))
{ | 1372 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET))
{ |
| 1373 Statement statement = parseStatement2(); | 1373 Statement statement = parseStatement2(); |
| 1374 if (statement != null) { | 1374 if (statement != null) { |
| 1375 statements.add(statement); | 1375 statements.add(statement); |
| 1376 } | 1376 } |
| 1377 if (identical(_currentToken, statementStart)) { | 1377 if (identical(_currentToken, statementStart)) { |
| 1378 reportError8(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); | 1378 reportError9(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); |
| 1379 advance(); | 1379 advance(); |
| 1380 } | 1380 } |
| 1381 statementStart = _currentToken; | 1381 statementStart = _currentToken; |
| 1382 } | 1382 } |
| 1383 Token rightBracket = expect2(TokenType.CLOSE_CURLY_BRACKET); | 1383 Token rightBracket = expect2(TokenType.CLOSE_CURLY_BRACKET); |
| 1384 return new Block.full(leftBracket, statements, rightBracket); | 1384 return new Block.full(leftBracket, statements, rightBracket); |
| 1385 } | 1385 } |
| 1386 | 1386 |
| 1387 /** | 1387 /** |
| 1388 * Parse a break statement. | 1388 * Parse a break statement. |
| 1389 * | 1389 * |
| 1390 * <pre> | 1390 * <pre> |
| 1391 * breakStatement ::= | 1391 * breakStatement ::= |
| 1392 * 'break' identifier? ';' | 1392 * 'break' identifier? ';' |
| 1393 * </pre> | 1393 * </pre> |
| 1394 * | 1394 * |
| 1395 * @return the break statement that was parsed | 1395 * @return the break statement that was parsed |
| 1396 */ | 1396 */ |
| 1397 Statement parseBreakStatement() { | 1397 Statement parseBreakStatement() { |
| 1398 Token breakKeyword = expect(Keyword.BREAK); | 1398 Token breakKeyword = expect(Keyword.BREAK); |
| 1399 SimpleIdentifier label = null; | 1399 SimpleIdentifier label = null; |
| 1400 if (matchesIdentifier()) { | 1400 if (matchesIdentifier()) { |
| 1401 label = parseSimpleIdentifier(); | 1401 label = parseSimpleIdentifier(); |
| 1402 } | 1402 } |
| 1403 if (!_inLoop && !_inSwitch && label == null) { | 1403 if (!_inLoop && !_inSwitch && label == null) { |
| 1404 reportError8(ParserErrorCode.BREAK_OUTSIDE_OF_LOOP, breakKeyword, []); | 1404 reportError9(ParserErrorCode.BREAK_OUTSIDE_OF_LOOP, breakKeyword, []); |
| 1405 } | 1405 } |
| 1406 Token semicolon = expect2(TokenType.SEMICOLON); | 1406 Token semicolon = expect2(TokenType.SEMICOLON); |
| 1407 return new BreakStatement.full(breakKeyword, label, semicolon); | 1407 return new BreakStatement.full(breakKeyword, label, semicolon); |
| 1408 } | 1408 } |
| 1409 | 1409 |
| 1410 /** | 1410 /** |
| 1411 * Parse a cascade section. | 1411 * Parse a cascade section. |
| 1412 * | 1412 * |
| 1413 * <pre> | 1413 * <pre> |
| 1414 * cascadeSection ::= | 1414 * cascadeSection ::= |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1430 SimpleIdentifier functionName = null; | 1430 SimpleIdentifier functionName = null; |
| 1431 if (matchesIdentifier()) { | 1431 if (matchesIdentifier()) { |
| 1432 functionName = parseSimpleIdentifier(); | 1432 functionName = parseSimpleIdentifier(); |
| 1433 } else if (identical(_currentToken.type, TokenType.OPEN_SQUARE_BRACKET)) { | 1433 } else if (identical(_currentToken.type, TokenType.OPEN_SQUARE_BRACKET)) { |
| 1434 Token leftBracket = andAdvance; | 1434 Token leftBracket = andAdvance; |
| 1435 Expression index = parseExpression2(); | 1435 Expression index = parseExpression2(); |
| 1436 Token rightBracket = expect2(TokenType.CLOSE_SQUARE_BRACKET); | 1436 Token rightBracket = expect2(TokenType.CLOSE_SQUARE_BRACKET); |
| 1437 expression = new IndexExpression.forCascade_full(period, leftBracket, inde
x, rightBracket); | 1437 expression = new IndexExpression.forCascade_full(period, leftBracket, inde
x, rightBracket); |
| 1438 period = null; | 1438 period = null; |
| 1439 } else { | 1439 } else { |
| 1440 reportError8(ParserErrorCode.MISSING_IDENTIFIER, _currentToken, [_currentT
oken.lexeme]); | 1440 reportError9(ParserErrorCode.MISSING_IDENTIFIER, _currentToken, [_currentT
oken.lexeme]); |
| 1441 functionName = createSyntheticIdentifier(); | 1441 functionName = createSyntheticIdentifier(); |
| 1442 } | 1442 } |
| 1443 if (identical(_currentToken.type, TokenType.OPEN_PAREN)) { | 1443 if (identical(_currentToken.type, TokenType.OPEN_PAREN)) { |
| 1444 while (identical(_currentToken.type, TokenType.OPEN_PAREN)) { | 1444 while (identical(_currentToken.type, TokenType.OPEN_PAREN)) { |
| 1445 if (functionName != null) { | 1445 if (functionName != null) { |
| 1446 expression = new MethodInvocation.full(expression, period, functionNam
e, parseArgumentList()); | 1446 expression = new MethodInvocation.full(expression, period, functionNam
e, parseArgumentList()); |
| 1447 period = null; | 1447 period = null; |
| 1448 functionName = null; | 1448 functionName = null; |
| 1449 } else if (expression == null) { | 1449 } else if (expression == null) { |
| 1450 expression = new MethodInvocation.full(expression, period, createSynth
eticIdentifier(), parseArgumentList()); | 1450 expression = new MethodInvocation.full(expression, period, createSynth
eticIdentifier(), parseArgumentList()); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1499 } | 1499 } |
| 1500 ExtendsClause extendsClause = null; | 1500 ExtendsClause extendsClause = null; |
| 1501 WithClause withClause = null; | 1501 WithClause withClause = null; |
| 1502 ImplementsClause implementsClause = null; | 1502 ImplementsClause implementsClause = null; |
| 1503 bool foundClause = true; | 1503 bool foundClause = true; |
| 1504 while (foundClause) { | 1504 while (foundClause) { |
| 1505 if (matches(Keyword.EXTENDS)) { | 1505 if (matches(Keyword.EXTENDS)) { |
| 1506 if (extendsClause == null) { | 1506 if (extendsClause == null) { |
| 1507 extendsClause = parseExtendsClause(); | 1507 extendsClause = parseExtendsClause(); |
| 1508 if (withClause != null) { | 1508 if (withClause != null) { |
| 1509 reportError8(ParserErrorCode.WITH_BEFORE_EXTENDS, withClause.withKey
word, []); | 1509 reportError9(ParserErrorCode.WITH_BEFORE_EXTENDS, withClause.withKey
word, []); |
| 1510 } else if (implementsClause != null) { | 1510 } else if (implementsClause != null) { |
| 1511 reportError8(ParserErrorCode.IMPLEMENTS_BEFORE_EXTENDS, implementsCl
ause.keyword, []); | 1511 reportError9(ParserErrorCode.IMPLEMENTS_BEFORE_EXTENDS, implementsCl
ause.keyword, []); |
| 1512 } | 1512 } |
| 1513 } else { | 1513 } else { |
| 1514 reportError8(ParserErrorCode.MULTIPLE_EXTENDS_CLAUSES, extendsClause.k
eyword, []); | 1514 reportError9(ParserErrorCode.MULTIPLE_EXTENDS_CLAUSES, extendsClause.k
eyword, []); |
| 1515 parseExtendsClause(); | 1515 parseExtendsClause(); |
| 1516 } | 1516 } |
| 1517 } else if (matches(Keyword.WITH)) { | 1517 } else if (matches(Keyword.WITH)) { |
| 1518 if (withClause == null) { | 1518 if (withClause == null) { |
| 1519 withClause = parseWithClause(); | 1519 withClause = parseWithClause(); |
| 1520 if (implementsClause != null) { | 1520 if (implementsClause != null) { |
| 1521 reportError8(ParserErrorCode.IMPLEMENTS_BEFORE_WITH, implementsClaus
e.keyword, []); | 1521 reportError9(ParserErrorCode.IMPLEMENTS_BEFORE_WITH, implementsClaus
e.keyword, []); |
| 1522 } | 1522 } |
| 1523 } else { | 1523 } else { |
| 1524 reportError8(ParserErrorCode.MULTIPLE_WITH_CLAUSES, withClause.withKey
word, []); | 1524 reportError9(ParserErrorCode.MULTIPLE_WITH_CLAUSES, withClause.withKey
word, []); |
| 1525 parseWithClause(); | 1525 parseWithClause(); |
| 1526 } | 1526 } |
| 1527 } else if (matches(Keyword.IMPLEMENTS)) { | 1527 } else if (matches(Keyword.IMPLEMENTS)) { |
| 1528 if (implementsClause == null) { | 1528 if (implementsClause == null) { |
| 1529 implementsClause = parseImplementsClause(); | 1529 implementsClause = parseImplementsClause(); |
| 1530 } else { | 1530 } else { |
| 1531 reportError8(ParserErrorCode.MULTIPLE_IMPLEMENTS_CLAUSES, implementsCl
ause.keyword, []); | 1531 reportError9(ParserErrorCode.MULTIPLE_IMPLEMENTS_CLAUSES, implementsCl
ause.keyword, []); |
| 1532 parseImplementsClause(); | 1532 parseImplementsClause(); |
| 1533 } | 1533 } |
| 1534 } else { | 1534 } else { |
| 1535 foundClause = false; | 1535 foundClause = false; |
| 1536 } | 1536 } |
| 1537 } | 1537 } |
| 1538 if (withClause != null && extendsClause == null) { | 1538 if (withClause != null && extendsClause == null) { |
| 1539 reportError8(ParserErrorCode.WITH_WITHOUT_EXTENDS, withClause.withKeyword,
[]); | 1539 reportError9(ParserErrorCode.WITH_WITHOUT_EXTENDS, withClause.withKeyword,
[]); |
| 1540 } | 1540 } |
| 1541 NativeClause nativeClause = null; | 1541 NativeClause nativeClause = null; |
| 1542 if (matches2(_NATIVE) && matches4(peek(), TokenType.STRING)) { | 1542 if (matches2(_NATIVE) && matches4(peek(), TokenType.STRING)) { |
| 1543 nativeClause = parseNativeClause(); | 1543 nativeClause = parseNativeClause(); |
| 1544 } | 1544 } |
| 1545 Token leftBracket = null; | 1545 Token leftBracket = null; |
| 1546 List<ClassMember> members = null; | 1546 List<ClassMember> members = null; |
| 1547 Token rightBracket = null; | 1547 Token rightBracket = null; |
| 1548 if (matches5(TokenType.OPEN_CURLY_BRACKET)) { | 1548 if (matches5(TokenType.OPEN_CURLY_BRACKET)) { |
| 1549 leftBracket = expect2(TokenType.OPEN_CURLY_BRACKET); | 1549 leftBracket = expect2(TokenType.OPEN_CURLY_BRACKET); |
| 1550 members = parseClassMembers(className, getEndToken(leftBracket)); | 1550 members = parseClassMembers(className, getEndToken(leftBracket)); |
| 1551 rightBracket = expect2(TokenType.CLOSE_CURLY_BRACKET); | 1551 rightBracket = expect2(TokenType.CLOSE_CURLY_BRACKET); |
| 1552 } else { | 1552 } else { |
| 1553 leftBracket = createSyntheticToken2(TokenType.OPEN_CURLY_BRACKET); | 1553 leftBracket = createSyntheticToken2(TokenType.OPEN_CURLY_BRACKET); |
| 1554 rightBracket = createSyntheticToken2(TokenType.CLOSE_CURLY_BRACKET); | 1554 rightBracket = createSyntheticToken2(TokenType.CLOSE_CURLY_BRACKET); |
| 1555 reportError7(ParserErrorCode.MISSING_CLASS_BODY, []); | 1555 reportError8(ParserErrorCode.MISSING_CLASS_BODY, []); |
| 1556 } | 1556 } |
| 1557 ClassDeclaration classDeclaration = new ClassDeclaration.full(commentAndMeta
data.comment, commentAndMetadata.metadata, abstractKeyword, keyword, name, typeP
arameters, extendsClause, withClause, implementsClause, leftBracket, members, ri
ghtBracket); | 1557 ClassDeclaration classDeclaration = new ClassDeclaration.full(commentAndMeta
data.comment, commentAndMetadata.metadata, abstractKeyword, keyword, name, typeP
arameters, extendsClause, withClause, implementsClause, leftBracket, members, ri
ghtBracket); |
| 1558 classDeclaration.nativeClause = nativeClause; | 1558 classDeclaration.nativeClause = nativeClause; |
| 1559 return classDeclaration; | 1559 return classDeclaration; |
| 1560 } | 1560 } |
| 1561 | 1561 |
| 1562 /** | 1562 /** |
| 1563 * Parse a class member. | 1563 * Parse a class member. |
| 1564 * | 1564 * |
| 1565 * <pre> | 1565 * <pre> |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1596 if (matchesIdentifier()) { | 1596 if (matchesIdentifier()) { |
| 1597 if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMIC
OLON])) { | 1597 if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMIC
OLON])) { |
| 1598 reportError(ParserErrorCode.VOID_VARIABLE, returnType, []); | 1598 reportError(ParserErrorCode.VOID_VARIABLE, returnType, []); |
| 1599 return parseInitializedIdentifierList(commentAndMetadata, modifiers.
staticKeyword, validateModifiersForField(modifiers), returnType); | 1599 return parseInitializedIdentifierList(commentAndMetadata, modifiers.
staticKeyword, validateModifiersForField(modifiers), returnType); |
| 1600 } | 1600 } |
| 1601 } | 1601 } |
| 1602 if (isOperator(_currentToken)) { | 1602 if (isOperator(_currentToken)) { |
| 1603 validateModifiersForOperator(modifiers); | 1603 validateModifiersForOperator(modifiers); |
| 1604 return parseOperator(commentAndMetadata, modifiers.externalKeyword, re
turnType); | 1604 return parseOperator(commentAndMetadata, modifiers.externalKeyword, re
turnType); |
| 1605 } | 1605 } |
| 1606 reportError8(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); | 1606 reportError9(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); |
| 1607 return null; | 1607 return null; |
| 1608 } | 1608 } |
| 1609 } else if (matches(Keyword.GET) && matchesIdentifier2(peek())) { | 1609 } else if (matches(Keyword.GET) && matchesIdentifier2(peek())) { |
| 1610 validateModifiersForGetterOrSetterOrMethod(modifiers); | 1610 validateModifiersForGetterOrSetterOrMethod(modifiers); |
| 1611 return parseGetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, null); | 1611 return parseGetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, null); |
| 1612 } else if (matches(Keyword.SET) && matchesIdentifier2(peek())) { | 1612 } else if (matches(Keyword.SET) && matchesIdentifier2(peek())) { |
| 1613 validateModifiersForGetterOrSetterOrMethod(modifiers); | 1613 validateModifiersForGetterOrSetterOrMethod(modifiers); |
| 1614 return parseSetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, null); | 1614 return parseSetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, null); |
| 1615 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { | 1615 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { |
| 1616 validateModifiersForOperator(modifiers); | 1616 validateModifiersForOperator(modifiers); |
| 1617 return parseOperator(commentAndMetadata, modifiers.externalKeyword, null); | 1617 return parseOperator(commentAndMetadata, modifiers.externalKeyword, null); |
| 1618 } else if (!matchesIdentifier()) { | 1618 } else if (!matchesIdentifier()) { |
| 1619 if (isOperator(_currentToken)) { | 1619 if (isOperator(_currentToken)) { |
| 1620 validateModifiersForOperator(modifiers); | 1620 validateModifiersForOperator(modifiers); |
| 1621 return parseOperator(commentAndMetadata, modifiers.externalKeyword, null
); | 1621 return parseOperator(commentAndMetadata, modifiers.externalKeyword, null
); |
| 1622 } | 1622 } |
| 1623 reportError8(ParserErrorCode.EXPECTED_CLASS_MEMBER, _currentToken, []); | 1623 reportError9(ParserErrorCode.EXPECTED_CLASS_MEMBER, _currentToken, []); |
| 1624 return null; | 1624 return null; |
| 1625 } else if (matches4(peek(), TokenType.PERIOD) && matchesIdentifier2(peek2(2)
) && matches4(peek2(3), TokenType.OPEN_PAREN)) { | 1625 } else if (matches4(peek(), TokenType.PERIOD) && matchesIdentifier2(peek2(2)
) && matches4(peek2(3), TokenType.OPEN_PAREN)) { |
| 1626 return parseConstructor(commentAndMetadata, modifiers.externalKeyword, val
idateModifiersForConstructor(modifiers), modifiers.factoryKeyword, parseSimpleId
entifier(), andAdvance, parseSimpleIdentifier(), parseFormalParameterList()); | 1626 return parseConstructor(commentAndMetadata, modifiers.externalKeyword, val
idateModifiersForConstructor(modifiers), modifiers.factoryKeyword, parseSimpleId
entifier(), andAdvance, parseSimpleIdentifier(), parseFormalParameterList()); |
| 1627 } else if (matches4(peek(), TokenType.OPEN_PAREN)) { | 1627 } else if (matches4(peek(), TokenType.OPEN_PAREN)) { |
| 1628 SimpleIdentifier methodName = parseSimpleIdentifier(); | 1628 SimpleIdentifier methodName = parseSimpleIdentifier(); |
| 1629 FormalParameterList parameters = parseFormalParameterList(); | 1629 FormalParameterList parameters = parseFormalParameterList(); |
| 1630 if (matches5(TokenType.COLON) || modifiers.factoryKeyword != null || metho
dName.name == className) { | 1630 if (matches5(TokenType.COLON) || modifiers.factoryKeyword != null || metho
dName.name == className) { |
| 1631 return parseConstructor(commentAndMetadata, modifiers.externalKeyword, v
alidateModifiersForConstructor(modifiers), modifiers.factoryKeyword, methodName,
null, null, parameters); | 1631 return parseConstructor(commentAndMetadata, modifiers.externalKeyword, v
alidateModifiersForConstructor(modifiers), modifiers.factoryKeyword, methodName,
null, null, parameters); |
| 1632 } | 1632 } |
| 1633 validateModifiersForGetterOrSetterOrMethod(modifiers); | 1633 validateModifiersForGetterOrSetterOrMethod(modifiers); |
| 1634 validateFormalParameterList(parameters); | 1634 validateFormalParameterList(parameters); |
| 1635 return parseMethodDeclaration2(commentAndMetadata, modifiers.externalKeywo
rd, modifiers.staticKeyword, null, methodName, parameters); | 1635 return parseMethodDeclaration2(commentAndMetadata, modifiers.externalKeywo
rd, modifiers.staticKeyword, null, methodName, parameters); |
| 1636 } else if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMI
COLON])) { | 1636 } else if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMI
COLON])) { |
| 1637 if (modifiers.constKeyword == null && modifiers.finalKeyword == null && mo
difiers.varKeyword == null) { | 1637 if (modifiers.constKeyword == null && modifiers.finalKeyword == null && mo
difiers.varKeyword == null) { |
| 1638 reportError7(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, []); | 1638 reportError8(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, []); |
| 1639 } | 1639 } |
| 1640 return parseInitializedIdentifierList(commentAndMetadata, modifiers.static
Keyword, validateModifiersForField(modifiers), null); | 1640 return parseInitializedIdentifierList(commentAndMetadata, modifiers.static
Keyword, validateModifiersForField(modifiers), null); |
| 1641 } | 1641 } |
| 1642 TypeName type = parseTypeName(); | 1642 TypeName type = parseTypeName(); |
| 1643 if (matches(Keyword.GET) && matchesIdentifier2(peek())) { | 1643 if (matches(Keyword.GET) && matchesIdentifier2(peek())) { |
| 1644 validateModifiersForGetterOrSetterOrMethod(modifiers); | 1644 validateModifiersForGetterOrSetterOrMethod(modifiers); |
| 1645 return parseGetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, type); | 1645 return parseGetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, type); |
| 1646 } else if (matches(Keyword.SET) && matchesIdentifier2(peek())) { | 1646 } else if (matches(Keyword.SET) && matchesIdentifier2(peek())) { |
| 1647 validateModifiersForGetterOrSetterOrMethod(modifiers); | 1647 validateModifiersForGetterOrSetterOrMethod(modifiers); |
| 1648 return parseSetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, type); | 1648 return parseSetter(commentAndMetadata, modifiers.externalKeyword, modifier
s.staticKeyword, type); |
| 1649 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { | 1649 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { |
| 1650 validateModifiersForOperator(modifiers); | 1650 validateModifiersForOperator(modifiers); |
| 1651 return parseOperator(commentAndMetadata, modifiers.externalKeyword, type); | 1651 return parseOperator(commentAndMetadata, modifiers.externalKeyword, type); |
| 1652 } else if (!matchesIdentifier()) { | 1652 } else if (!matchesIdentifier()) { |
| 1653 if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { | 1653 if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { |
| 1654 return parseInitializedIdentifierList(commentAndMetadata, modifiers.stat
icKeyword, validateModifiersForField(modifiers), type); | 1654 return parseInitializedIdentifierList(commentAndMetadata, modifiers.stat
icKeyword, validateModifiersForField(modifiers), type); |
| 1655 } | 1655 } |
| 1656 if (isOperator(_currentToken)) { | 1656 if (isOperator(_currentToken)) { |
| 1657 validateModifiersForOperator(modifiers); | 1657 validateModifiersForOperator(modifiers); |
| 1658 return parseOperator(commentAndMetadata, modifiers.externalKeyword, type
); | 1658 return parseOperator(commentAndMetadata, modifiers.externalKeyword, type
); |
| 1659 } | 1659 } |
| 1660 reportError8(ParserErrorCode.EXPECTED_CLASS_MEMBER, _currentToken, []); | 1660 reportError9(ParserErrorCode.EXPECTED_CLASS_MEMBER, _currentToken, []); |
| 1661 return null; | 1661 return null; |
| 1662 } else if (matches4(peek(), TokenType.OPEN_PAREN)) { | 1662 } else if (matches4(peek(), TokenType.OPEN_PAREN)) { |
| 1663 SimpleIdentifier methodName = parseSimpleIdentifier(); | 1663 SimpleIdentifier methodName = parseSimpleIdentifier(); |
| 1664 FormalParameterList parameters = parseFormalParameterList(); | 1664 FormalParameterList parameters = parseFormalParameterList(); |
| 1665 if (methodName.name == className) { | 1665 if (methodName.name == className) { |
| 1666 reportError(ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE, type, []); | 1666 reportError(ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE, type, []); |
| 1667 return parseConstructor(commentAndMetadata, modifiers.externalKeyword, v
alidateModifiersForConstructor(modifiers), modifiers.factoryKeyword, methodName,
null, null, parameters); | 1667 return parseConstructor(commentAndMetadata, modifiers.externalKeyword, v
alidateModifiersForConstructor(modifiers), modifiers.factoryKeyword, methodName,
null, null, parameters); |
| 1668 } | 1668 } |
| 1669 validateModifiersForGetterOrSetterOrMethod(modifiers); | 1669 validateModifiersForGetterOrSetterOrMethod(modifiers); |
| 1670 validateFormalParameterList(parameters); | 1670 validateFormalParameterList(parameters); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1684 * @param className the name of the class whose members are being parsed | 1684 * @param className the name of the class whose members are being parsed |
| 1685 * @param closingBracket the closing bracket for the class, or `null` if the c
losing bracket | 1685 * @param closingBracket the closing bracket for the class, or `null` if the c
losing bracket |
| 1686 * is missing | 1686 * is missing |
| 1687 * @return the list of class members that were parsed | 1687 * @return the list of class members that were parsed |
| 1688 */ | 1688 */ |
| 1689 List<ClassMember> parseClassMembers(String className, Token closingBracket) { | 1689 List<ClassMember> parseClassMembers(String className, Token closingBracket) { |
| 1690 List<ClassMember> members = new List<ClassMember>(); | 1690 List<ClassMember> members = new List<ClassMember>(); |
| 1691 Token memberStart = _currentToken; | 1691 Token memberStart = _currentToken; |
| 1692 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET)
&& (closingBracket != null || (!matches(Keyword.CLASS) && !matches(Keyword.TYPED
EF)))) { | 1692 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET)
&& (closingBracket != null || (!matches(Keyword.CLASS) && !matches(Keyword.TYPED
EF)))) { |
| 1693 if (matches5(TokenType.SEMICOLON)) { | 1693 if (matches5(TokenType.SEMICOLON)) { |
| 1694 reportError8(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); | 1694 reportError9(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); |
| 1695 advance(); | 1695 advance(); |
| 1696 } else { | 1696 } else { |
| 1697 ClassMember member = parseClassMember(className); | 1697 ClassMember member = parseClassMember(className); |
| 1698 if (member != null) { | 1698 if (member != null) { |
| 1699 members.add(member); | 1699 members.add(member); |
| 1700 } | 1700 } |
| 1701 } | 1701 } |
| 1702 if (identical(_currentToken, memberStart)) { | 1702 if (identical(_currentToken, memberStart)) { |
| 1703 reportError8(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); | 1703 reportError9(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); |
| 1704 advance(); | 1704 advance(); |
| 1705 } | 1705 } |
| 1706 memberStart = _currentToken; | 1706 memberStart = _currentToken; |
| 1707 } | 1707 } |
| 1708 return members; | 1708 return members; |
| 1709 } | 1709 } |
| 1710 | 1710 |
| 1711 /** | 1711 /** |
| 1712 * Parse a class type alias. | 1712 * Parse a class type alias. |
| 1713 * | 1713 * |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1741 } | 1741 } |
| 1742 ImplementsClause implementsClause = null; | 1742 ImplementsClause implementsClause = null; |
| 1743 if (matches(Keyword.IMPLEMENTS)) { | 1743 if (matches(Keyword.IMPLEMENTS)) { |
| 1744 implementsClause = parseImplementsClause(); | 1744 implementsClause = parseImplementsClause(); |
| 1745 } | 1745 } |
| 1746 Token semicolon; | 1746 Token semicolon; |
| 1747 if (matches5(TokenType.SEMICOLON)) { | 1747 if (matches5(TokenType.SEMICOLON)) { |
| 1748 semicolon = andAdvance; | 1748 semicolon = andAdvance; |
| 1749 } else { | 1749 } else { |
| 1750 if (matches5(TokenType.OPEN_CURLY_BRACKET)) { | 1750 if (matches5(TokenType.OPEN_CURLY_BRACKET)) { |
| 1751 reportError7(ParserErrorCode.EXPECTED_TOKEN, [TokenType.SEMICOLON.lexeme
]); | 1751 reportError8(ParserErrorCode.EXPECTED_TOKEN, [TokenType.SEMICOLON.lexeme
]); |
| 1752 Token leftBracket = andAdvance; | 1752 Token leftBracket = andAdvance; |
| 1753 parseClassMembers(className.name, getEndToken(leftBracket)); | 1753 parseClassMembers(className.name, getEndToken(leftBracket)); |
| 1754 expect2(TokenType.CLOSE_CURLY_BRACKET); | 1754 expect2(TokenType.CLOSE_CURLY_BRACKET); |
| 1755 } else { | 1755 } else { |
| 1756 reportError8(ParserErrorCode.EXPECTED_TOKEN, _currentToken.previous, [To
kenType.SEMICOLON.lexeme]); | 1756 reportError9(ParserErrorCode.EXPECTED_TOKEN, _currentToken.previous, [To
kenType.SEMICOLON.lexeme]); |
| 1757 } | 1757 } |
| 1758 semicolon = createSyntheticToken2(TokenType.SEMICOLON); | 1758 semicolon = createSyntheticToken2(TokenType.SEMICOLON); |
| 1759 } | 1759 } |
| 1760 return new ClassTypeAlias.full(commentAndMetadata.comment, commentAndMetadat
a.metadata, keyword, className, typeParameters, equals, abstractKeyword, supercl
ass, withClause, implementsClause, semicolon); | 1760 return new ClassTypeAlias.full(commentAndMetadata.comment, commentAndMetadat
a.metadata, keyword, className, typeParameters, equals, abstractKeyword, supercl
ass, withClause, implementsClause, semicolon); |
| 1761 } | 1761 } |
| 1762 | 1762 |
| 1763 /** | 1763 /** |
| 1764 * Parse a list of combinators in a directive. | 1764 * Parse a list of combinators in a directive. |
| 1765 * | 1765 * |
| 1766 * <pre> | 1766 * <pre> |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1947 bool partDirectiveFound = false; | 1947 bool partDirectiveFound = false; |
| 1948 bool directiveFoundAfterDeclaration = false; | 1948 bool directiveFoundAfterDeclaration = false; |
| 1949 List<Directive> directives = new List<Directive>(); | 1949 List<Directive> directives = new List<Directive>(); |
| 1950 List<CompilationUnitMember> declarations = new List<CompilationUnitMember>()
; | 1950 List<CompilationUnitMember> declarations = new List<CompilationUnitMember>()
; |
| 1951 Token memberStart = _currentToken; | 1951 Token memberStart = _currentToken; |
| 1952 while (!matches5(TokenType.EOF)) { | 1952 while (!matches5(TokenType.EOF)) { |
| 1953 CommentAndMetadata commentAndMetadata = parseCommentAndMetadata(); | 1953 CommentAndMetadata commentAndMetadata = parseCommentAndMetadata(); |
| 1954 if ((matches(Keyword.IMPORT) || matches(Keyword.EXPORT) || matches(Keyword
.LIBRARY) || matches(Keyword.PART)) && !matches4(peek(), TokenType.PERIOD) && !m
atches4(peek(), TokenType.LT)) { | 1954 if ((matches(Keyword.IMPORT) || matches(Keyword.EXPORT) || matches(Keyword
.LIBRARY) || matches(Keyword.PART)) && !matches4(peek(), TokenType.PERIOD) && !m
atches4(peek(), TokenType.LT)) { |
| 1955 Directive directive = parseDirective(commentAndMetadata); | 1955 Directive directive = parseDirective(commentAndMetadata); |
| 1956 if (declarations.length > 0 && !directiveFoundAfterDeclaration) { | 1956 if (declarations.length > 0 && !directiveFoundAfterDeclaration) { |
| 1957 reportError7(ParserErrorCode.DIRECTIVE_AFTER_DECLARATION, []); | 1957 reportError8(ParserErrorCode.DIRECTIVE_AFTER_DECLARATION, []); |
| 1958 directiveFoundAfterDeclaration = true; | 1958 directiveFoundAfterDeclaration = true; |
| 1959 } | 1959 } |
| 1960 if (directive is LibraryDirective) { | 1960 if (directive is LibraryDirective) { |
| 1961 if (libraryDirectiveFound) { | 1961 if (libraryDirectiveFound) { |
| 1962 reportError7(ParserErrorCode.MULTIPLE_LIBRARY_DIRECTIVES, []); | 1962 reportError8(ParserErrorCode.MULTIPLE_LIBRARY_DIRECTIVES, []); |
| 1963 } else { | 1963 } else { |
| 1964 if (directives.length > 0) { | 1964 if (directives.length > 0) { |
| 1965 reportError7(ParserErrorCode.LIBRARY_DIRECTIVE_NOT_FIRST, []); | 1965 reportError8(ParserErrorCode.LIBRARY_DIRECTIVE_NOT_FIRST, []); |
| 1966 } | 1966 } |
| 1967 libraryDirectiveFound = true; | 1967 libraryDirectiveFound = true; |
| 1968 } | 1968 } |
| 1969 } else if (directive is PartDirective) { | 1969 } else if (directive is PartDirective) { |
| 1970 partDirectiveFound = true; | 1970 partDirectiveFound = true; |
| 1971 } else if (partDirectiveFound) { | 1971 } else if (partDirectiveFound) { |
| 1972 if (directive is ExportDirective) { | 1972 if (directive is ExportDirective) { |
| 1973 reportError8(ParserErrorCode.EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
((directive as NamespaceDirective)).keyword, []); | 1973 reportError9(ParserErrorCode.EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
((directive as NamespaceDirective)).keyword, []); |
| 1974 } else if (directive is ImportDirective) { | 1974 } else if (directive is ImportDirective) { |
| 1975 reportError8(ParserErrorCode.IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
((directive as NamespaceDirective)).keyword, []); | 1975 reportError9(ParserErrorCode.IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
((directive as NamespaceDirective)).keyword, []); |
| 1976 } | 1976 } |
| 1977 } | 1977 } |
| 1978 if (directive is PartOfDirective) { | 1978 if (directive is PartOfDirective) { |
| 1979 if (partOfDirectiveFound) { | 1979 if (partOfDirectiveFound) { |
| 1980 reportError7(ParserErrorCode.MULTIPLE_PART_OF_DIRECTIVES, []); | 1980 reportError8(ParserErrorCode.MULTIPLE_PART_OF_DIRECTIVES, []); |
| 1981 } else { | 1981 } else { |
| 1982 for (Directive preceedingDirective in directives) { | 1982 for (Directive preceedingDirective in directives) { |
| 1983 reportError8(ParserErrorCode.NON_PART_OF_DIRECTIVE_IN_PART, precee
dingDirective.keyword, []); | 1983 reportError9(ParserErrorCode.NON_PART_OF_DIRECTIVE_IN_PART, precee
dingDirective.keyword, []); |
| 1984 } | 1984 } |
| 1985 partOfDirectiveFound = true; | 1985 partOfDirectiveFound = true; |
| 1986 } | 1986 } |
| 1987 } else { | 1987 } else { |
| 1988 if (partOfDirectiveFound) { | 1988 if (partOfDirectiveFound) { |
| 1989 reportError8(ParserErrorCode.NON_PART_OF_DIRECTIVE_IN_PART, directiv
e.keyword, []); | 1989 reportError9(ParserErrorCode.NON_PART_OF_DIRECTIVE_IN_PART, directiv
e.keyword, []); |
| 1990 } | 1990 } |
| 1991 } | 1991 } |
| 1992 directives.add(directive); | 1992 directives.add(directive); |
| 1993 } else if (matches5(TokenType.SEMICOLON)) { | 1993 } else if (matches5(TokenType.SEMICOLON)) { |
| 1994 reportError8(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); | 1994 reportError9(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); |
| 1995 advance(); | 1995 advance(); |
| 1996 } else { | 1996 } else { |
| 1997 CompilationUnitMember member = parseCompilationUnitMember(commentAndMeta
data); | 1997 CompilationUnitMember member = parseCompilationUnitMember(commentAndMeta
data); |
| 1998 if (member != null) { | 1998 if (member != null) { |
| 1999 declarations.add(member); | 1999 declarations.add(member); |
| 2000 } | 2000 } |
| 2001 } | 2001 } |
| 2002 if (identical(_currentToken, memberStart)) { | 2002 if (identical(_currentToken, memberStart)) { |
| 2003 reportError8(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); | 2003 reportError9(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); |
| 2004 advance(); | 2004 advance(); |
| 2005 while (!matches5(TokenType.EOF) && !couldBeStartOfCompilationUnitMember(
)) { | 2005 while (!matches5(TokenType.EOF) && !couldBeStartOfCompilationUnitMember(
)) { |
| 2006 advance(); | 2006 advance(); |
| 2007 } | 2007 } |
| 2008 } | 2008 } |
| 2009 memberStart = _currentToken; | 2009 memberStart = _currentToken; |
| 2010 } | 2010 } |
| 2011 return new CompilationUnit.full(firstToken, scriptTag, directives, declarati
ons, _currentToken); | 2011 return new CompilationUnit.full(firstToken, scriptTag, directives, declarati
ons, _currentToken); |
| 2012 } | 2012 } |
| 2013 | 2013 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2038 } else if (matches(Keyword.TYPEDEF) && !matches4(peek(), TokenType.PERIOD) &
& !matches4(peek(), TokenType.LT)) { | 2038 } else if (matches(Keyword.TYPEDEF) && !matches4(peek(), TokenType.PERIOD) &
& !matches4(peek(), TokenType.LT)) { |
| 2039 validateModifiersForTypedef(modifiers); | 2039 validateModifiersForTypedef(modifiers); |
| 2040 return parseTypeAlias(commentAndMetadata); | 2040 return parseTypeAlias(commentAndMetadata); |
| 2041 } | 2041 } |
| 2042 if (matches(Keyword.VOID)) { | 2042 if (matches(Keyword.VOID)) { |
| 2043 TypeName returnType = parseReturnType(); | 2043 TypeName returnType = parseReturnType(); |
| 2044 if ((matches(Keyword.GET) || matches(Keyword.SET)) && matchesIdentifier2(p
eek())) { | 2044 if ((matches(Keyword.GET) || matches(Keyword.SET)) && matchesIdentifier2(p
eek())) { |
| 2045 validateModifiersForTopLevelFunction(modifiers); | 2045 validateModifiersForTopLevelFunction(modifiers); |
| 2046 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKe
yword, null); | 2046 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKe
yword, null); |
| 2047 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { | 2047 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { |
| 2048 reportError8(ParserErrorCode.TOP_LEVEL_OPERATOR, _currentToken, []); | 2048 reportError9(ParserErrorCode.TOP_LEVEL_OPERATOR, _currentToken, []); |
| 2049 return convertToFunctionDeclaration(parseOperator(commentAndMetadata, mo
difiers.externalKeyword, returnType)); | 2049 return convertToFunctionDeclaration(parseOperator(commentAndMetadata, mo
difiers.externalKeyword, returnType)); |
| 2050 } else if (matchesIdentifier() && matchesAny(peek(), [ | 2050 } else if (matchesIdentifier() && matchesAny(peek(), [ |
| 2051 TokenType.OPEN_PAREN, | 2051 TokenType.OPEN_PAREN, |
| 2052 TokenType.OPEN_CURLY_BRACKET, | 2052 TokenType.OPEN_CURLY_BRACKET, |
| 2053 TokenType.FUNCTION])) { | 2053 TokenType.FUNCTION])) { |
| 2054 validateModifiersForTopLevelFunction(modifiers); | 2054 validateModifiersForTopLevelFunction(modifiers); |
| 2055 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKe
yword, returnType); | 2055 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKe
yword, returnType); |
| 2056 } else { | 2056 } else { |
| 2057 if (matchesIdentifier()) { | 2057 if (matchesIdentifier()) { |
| 2058 if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMIC
OLON])) { | 2058 if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMIC
OLON])) { |
| 2059 reportError(ParserErrorCode.VOID_VARIABLE, returnType, []); | 2059 reportError(ParserErrorCode.VOID_VARIABLE, returnType, []); |
| 2060 return new TopLevelVariableDeclaration.full(commentAndMetadata.comme
nt, commentAndMetadata.metadata, parseVariableDeclarationList2(null, validateMod
ifiersForTopLevelVariable(modifiers), null), expect2(TokenType.SEMICOLON)); | 2060 return new TopLevelVariableDeclaration.full(commentAndMetadata.comme
nt, commentAndMetadata.metadata, parseVariableDeclarationList2(null, validateMod
ifiersForTopLevelVariable(modifiers), null), expect2(TokenType.SEMICOLON)); |
| 2061 } | 2061 } |
| 2062 } | 2062 } |
| 2063 reportError8(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); | 2063 reportError9(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); |
| 2064 return null; | 2064 return null; |
| 2065 } | 2065 } |
| 2066 } else if ((matches(Keyword.GET) || matches(Keyword.SET)) && matchesIdentifi
er2(peek())) { | 2066 } else if ((matches(Keyword.GET) || matches(Keyword.SET)) && matchesIdentifi
er2(peek())) { |
| 2067 validateModifiersForTopLevelFunction(modifiers); | 2067 validateModifiersForTopLevelFunction(modifiers); |
| 2068 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKeyw
ord, null); | 2068 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKeyw
ord, null); |
| 2069 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { | 2069 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { |
| 2070 reportError8(ParserErrorCode.TOP_LEVEL_OPERATOR, _currentToken, []); | 2070 reportError9(ParserErrorCode.TOP_LEVEL_OPERATOR, _currentToken, []); |
| 2071 return convertToFunctionDeclaration(parseOperator(commentAndMetadata, modi
fiers.externalKeyword, null)); | 2071 return convertToFunctionDeclaration(parseOperator(commentAndMetadata, modi
fiers.externalKeyword, null)); |
| 2072 } else if (!matchesIdentifier()) { | 2072 } else if (!matchesIdentifier()) { |
| 2073 reportError8(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); | 2073 reportError9(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); |
| 2074 return null; | 2074 return null; |
| 2075 } else if (matches4(peek(), TokenType.OPEN_PAREN)) { | 2075 } else if (matches4(peek(), TokenType.OPEN_PAREN)) { |
| 2076 validateModifiersForTopLevelFunction(modifiers); | 2076 validateModifiersForTopLevelFunction(modifiers); |
| 2077 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKeyw
ord, null); | 2077 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKeyw
ord, null); |
| 2078 } else if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMI
COLON])) { | 2078 } else if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEMI
COLON])) { |
| 2079 if (modifiers.constKeyword == null && modifiers.finalKeyword == null && mo
difiers.varKeyword == null) { | 2079 if (modifiers.constKeyword == null && modifiers.finalKeyword == null && mo
difiers.varKeyword == null) { |
| 2080 reportError7(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, []); | 2080 reportError8(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, []); |
| 2081 } | 2081 } |
| 2082 return new TopLevelVariableDeclaration.full(commentAndMetadata.comment, co
mmentAndMetadata.metadata, parseVariableDeclarationList2(null, validateModifiers
ForTopLevelVariable(modifiers), null), expect2(TokenType.SEMICOLON)); | 2082 return new TopLevelVariableDeclaration.full(commentAndMetadata.comment, co
mmentAndMetadata.metadata, parseVariableDeclarationList2(null, validateModifiers
ForTopLevelVariable(modifiers), null), expect2(TokenType.SEMICOLON)); |
| 2083 } | 2083 } |
| 2084 TypeName returnType = parseReturnType(); | 2084 TypeName returnType = parseReturnType(); |
| 2085 if ((matches(Keyword.GET) || matches(Keyword.SET)) && matchesIdentifier2(pee
k())) { | 2085 if ((matches(Keyword.GET) || matches(Keyword.SET)) && matchesIdentifier2(pee
k())) { |
| 2086 validateModifiersForTopLevelFunction(modifiers); | 2086 validateModifiersForTopLevelFunction(modifiers); |
| 2087 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKeyw
ord, returnType); | 2087 return parseFunctionDeclaration(commentAndMetadata, modifiers.externalKeyw
ord, returnType); |
| 2088 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { | 2088 } else if (matches(Keyword.OPERATOR) && isOperator(peek())) { |
| 2089 reportError8(ParserErrorCode.TOP_LEVEL_OPERATOR, _currentToken, []); | 2089 reportError9(ParserErrorCode.TOP_LEVEL_OPERATOR, _currentToken, []); |
| 2090 return convertToFunctionDeclaration(parseOperator(commentAndMetadata, modi
fiers.externalKeyword, returnType)); | 2090 return convertToFunctionDeclaration(parseOperator(commentAndMetadata, modi
fiers.externalKeyword, returnType)); |
| 2091 } else if (matches5(TokenType.AT)) { | 2091 } else if (matches5(TokenType.AT)) { |
| 2092 return new TopLevelVariableDeclaration.full(commentAndMetadata.comment, co
mmentAndMetadata.metadata, parseVariableDeclarationList2(null, validateModifiers
ForTopLevelVariable(modifiers), returnType), expect2(TokenType.SEMICOLON)); | 2092 return new TopLevelVariableDeclaration.full(commentAndMetadata.comment, co
mmentAndMetadata.metadata, parseVariableDeclarationList2(null, validateModifiers
ForTopLevelVariable(modifiers), returnType), expect2(TokenType.SEMICOLON)); |
| 2093 } else if (!matchesIdentifier()) { | 2093 } else if (!matchesIdentifier()) { |
| 2094 reportError8(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); | 2094 reportError9(ParserErrorCode.EXPECTED_EXECUTABLE, _currentToken, []); |
| 2095 Token semicolon; | 2095 Token semicolon; |
| 2096 if (matches5(TokenType.SEMICOLON)) { | 2096 if (matches5(TokenType.SEMICOLON)) { |
| 2097 semicolon = andAdvance; | 2097 semicolon = andAdvance; |
| 2098 } else { | 2098 } else { |
| 2099 semicolon = createSyntheticToken2(TokenType.SEMICOLON); | 2099 semicolon = createSyntheticToken2(TokenType.SEMICOLON); |
| 2100 } | 2100 } |
| 2101 List<VariableDeclaration> variables = new List<VariableDeclaration>(); | 2101 List<VariableDeclaration> variables = new List<VariableDeclaration>(); |
| 2102 variables.add(new VariableDeclaration.full(null, null, createSyntheticIden
tifier(), null, null)); | 2102 variables.add(new VariableDeclaration.full(null, null, createSyntheticIden
tifier(), null, null)); |
| 2103 return new TopLevelVariableDeclaration.full(commentAndMetadata.comment, co
mmentAndMetadata.metadata, new VariableDeclarationList.full(null, null, null, re
turnType, variables), semicolon); | 2103 return new TopLevelVariableDeclaration.full(commentAndMetadata.comment, co
mmentAndMetadata.metadata, new VariableDeclarationList.full(null, null, null, re
turnType, variables), semicolon); |
| 2104 } | 2104 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2187 if (matches5(TokenType.EQ)) { | 2187 if (matches5(TokenType.EQ)) { |
| 2188 separator = andAdvance; | 2188 separator = andAdvance; |
| 2189 redirectedConstructor = parseConstructorName(); | 2189 redirectedConstructor = parseConstructorName(); |
| 2190 body = new EmptyFunctionBody.full(expect2(TokenType.SEMICOLON)); | 2190 body = new EmptyFunctionBody.full(expect2(TokenType.SEMICOLON)); |
| 2191 if (factoryKeyword == null) { | 2191 if (factoryKeyword == null) { |
| 2192 reportError(ParserErrorCode.REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR, redi
rectedConstructor, []); | 2192 reportError(ParserErrorCode.REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR, redi
rectedConstructor, []); |
| 2193 } | 2193 } |
| 2194 } else { | 2194 } else { |
| 2195 body = parseFunctionBody(true, ParserErrorCode.MISSING_FUNCTION_BODY, fals
e); | 2195 body = parseFunctionBody(true, ParserErrorCode.MISSING_FUNCTION_BODY, fals
e); |
| 2196 if (constKeyword != null && factoryKeyword != null) { | 2196 if (constKeyword != null && factoryKeyword != null) { |
| 2197 reportError8(ParserErrorCode.CONST_FACTORY, factoryKeyword, []); | 2197 reportError9(ParserErrorCode.CONST_FACTORY, factoryKeyword, []); |
| 2198 } else if (body is EmptyFunctionBody) { | 2198 } else if (body is EmptyFunctionBody) { |
| 2199 if (factoryKeyword != null && externalKeyword == null) { | 2199 if (factoryKeyword != null && externalKeyword == null) { |
| 2200 reportError8(ParserErrorCode.FACTORY_WITHOUT_BODY, factoryKeyword, [])
; | 2200 reportError9(ParserErrorCode.FACTORY_WITHOUT_BODY, factoryKeyword, [])
; |
| 2201 } | 2201 } |
| 2202 } else { | 2202 } else { |
| 2203 if (constKeyword != null) { | 2203 if (constKeyword != null) { |
| 2204 reportError(ParserErrorCode.CONST_CONSTRUCTOR_WITH_BODY, body, []); | 2204 reportError(ParserErrorCode.CONST_CONSTRUCTOR_WITH_BODY, body, []); |
| 2205 } else if (!bodyAllowed) { | 2205 } else if (!bodyAllowed) { |
| 2206 reportError(ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY, body, []); | 2206 reportError(ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY, body, []); |
| 2207 } | 2207 } |
| 2208 } | 2208 } |
| 2209 } | 2209 } |
| 2210 return new ConstructorDeclaration.full(commentAndMetadata.comment, commentAn
dMetadata.metadata, externalKeyword, constKeyword, factoryKeyword, returnType, p
eriod, name, parameters, separator, initializers, redirectedConstructor, body); | 2210 return new ConstructorDeclaration.full(commentAndMetadata.comment, commentAn
dMetadata.metadata, externalKeyword, constKeyword, factoryKeyword, returnType, p
eriod, name, parameters, separator, initializers, redirectedConstructor, body); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2272 * <pre> | 2272 * <pre> |
| 2273 * continueStatement ::= | 2273 * continueStatement ::= |
| 2274 * 'continue' identifier? ';' | 2274 * 'continue' identifier? ';' |
| 2275 * </pre> | 2275 * </pre> |
| 2276 * | 2276 * |
| 2277 * @return the continue statement that was parsed | 2277 * @return the continue statement that was parsed |
| 2278 */ | 2278 */ |
| 2279 Statement parseContinueStatement() { | 2279 Statement parseContinueStatement() { |
| 2280 Token continueKeyword = expect(Keyword.CONTINUE); | 2280 Token continueKeyword = expect(Keyword.CONTINUE); |
| 2281 if (!_inLoop && !_inSwitch) { | 2281 if (!_inLoop && !_inSwitch) { |
| 2282 reportError8(ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, continueKeyword, []
); | 2282 reportError9(ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP, continueKeyword, []
); |
| 2283 } | 2283 } |
| 2284 SimpleIdentifier label = null; | 2284 SimpleIdentifier label = null; |
| 2285 if (matchesIdentifier()) { | 2285 if (matchesIdentifier()) { |
| 2286 label = parseSimpleIdentifier(); | 2286 label = parseSimpleIdentifier(); |
| 2287 } | 2287 } |
| 2288 if (_inSwitch && !_inLoop && label == null) { | 2288 if (_inSwitch && !_inLoop && label == null) { |
| 2289 reportError8(ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE, continueKeywo
rd, []); | 2289 reportError9(ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE, continueKeywo
rd, []); |
| 2290 } | 2290 } |
| 2291 Token semicolon = expect2(TokenType.SEMICOLON); | 2291 Token semicolon = expect2(TokenType.SEMICOLON); |
| 2292 return new ContinueStatement.full(continueKeyword, label, semicolon); | 2292 return new ContinueStatement.full(continueKeyword, label, semicolon); |
| 2293 } | 2293 } |
| 2294 | 2294 |
| 2295 /** | 2295 /** |
| 2296 * Parse a directive. | 2296 * Parse a directive. |
| 2297 * | 2297 * |
| 2298 * <pre> | 2298 * <pre> |
| 2299 * directive ::= | 2299 * directive ::= |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2567 keyword = andAdvance; | 2567 keyword = andAdvance; |
| 2568 if (isTypedIdentifier(_currentToken)) { | 2568 if (isTypedIdentifier(_currentToken)) { |
| 2569 type = parseTypeName(); | 2569 type = parseTypeName(); |
| 2570 } | 2570 } |
| 2571 } else if (matches(Keyword.VAR)) { | 2571 } else if (matches(Keyword.VAR)) { |
| 2572 keyword = andAdvance; | 2572 keyword = andAdvance; |
| 2573 } else { | 2573 } else { |
| 2574 if (isTypedIdentifier(_currentToken)) { | 2574 if (isTypedIdentifier(_currentToken)) { |
| 2575 type = parseReturnType(); | 2575 type = parseReturnType(); |
| 2576 } else if (!optional) { | 2576 } else if (!optional) { |
| 2577 reportError7(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, []); | 2577 reportError8(ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE, []); |
| 2578 } | 2578 } |
| 2579 } | 2579 } |
| 2580 return new FinalConstVarOrType(keyword, type); | 2580 return new FinalConstVarOrType(keyword, type); |
| 2581 } | 2581 } |
| 2582 | 2582 |
| 2583 /** | 2583 /** |
| 2584 * Parse a formal parameter. At most one of `isOptional` and `isNamed` can be | 2584 * Parse a formal parameter. At most one of `isOptional` and `isNamed` can be |
| 2585 * `true`. | 2585 * `true`. |
| 2586 * | 2586 * |
| 2587 * <pre> | 2587 * <pre> |
| 2588 * defaultFormalParameter ::= | 2588 * defaultFormalParameter ::= |
| 2589 * normalFormalParameter ('=' expression)? | 2589 * normalFormalParameter ('=' expression)? |
| 2590 * | 2590 * |
| 2591 * defaultNamedParameter ::= | 2591 * defaultNamedParameter ::= |
| 2592 * normalFormalParameter (':' expression)? | 2592 * normalFormalParameter (':' expression)? |
| 2593 * </pre> | 2593 * </pre> |
| 2594 * | 2594 * |
| 2595 * @param kind the kind of parameter being expected based on the presence or a
bsence of group | 2595 * @param kind the kind of parameter being expected based on the presence or a
bsence of group |
| 2596 * delimiters | 2596 * delimiters |
| 2597 * @return the formal parameter that was parsed | 2597 * @return the formal parameter that was parsed |
| 2598 */ | 2598 */ |
| 2599 FormalParameter parseFormalParameter(ParameterKind kind) { | 2599 FormalParameter parseFormalParameter(ParameterKind kind) { |
| 2600 NormalFormalParameter parameter = parseNormalFormalParameter(); | 2600 NormalFormalParameter parameter = parseNormalFormalParameter(); |
| 2601 if (matches5(TokenType.EQ)) { | 2601 if (matches5(TokenType.EQ)) { |
| 2602 Token seperator = andAdvance; | 2602 Token seperator = andAdvance; |
| 2603 Expression defaultValue = parseExpression2(); | 2603 Expression defaultValue = parseExpression2(); |
| 2604 if (identical(kind, ParameterKind.NAMED)) { | 2604 if (identical(kind, ParameterKind.NAMED)) { |
| 2605 reportError8(ParserErrorCode.WRONG_SEPARATOR_FOR_NAMED_PARAMETER, sepera
tor, []); | 2605 reportError9(ParserErrorCode.WRONG_SEPARATOR_FOR_NAMED_PARAMETER, sepera
tor, []); |
| 2606 } else if (identical(kind, ParameterKind.REQUIRED)) { | 2606 } else if (identical(kind, ParameterKind.REQUIRED)) { |
| 2607 reportError(ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP, paramete
r, []); | 2607 reportError(ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP, paramete
r, []); |
| 2608 } | 2608 } |
| 2609 return new DefaultFormalParameter.full(parameter, kind, seperator, default
Value); | 2609 return new DefaultFormalParameter.full(parameter, kind, seperator, default
Value); |
| 2610 } else if (matches5(TokenType.COLON)) { | 2610 } else if (matches5(TokenType.COLON)) { |
| 2611 Token seperator = andAdvance; | 2611 Token seperator = andAdvance; |
| 2612 Expression defaultValue = parseExpression2(); | 2612 Expression defaultValue = parseExpression2(); |
| 2613 if (identical(kind, ParameterKind.POSITIONAL)) { | 2613 if (identical(kind, ParameterKind.POSITIONAL)) { |
| 2614 reportError8(ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER, s
eperator, []); | 2614 reportError9(ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER, s
eperator, []); |
| 2615 } else if (identical(kind, ParameterKind.REQUIRED)) { | 2615 } else if (identical(kind, ParameterKind.REQUIRED)) { |
| 2616 reportError(ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, parameter, []
); | 2616 reportError(ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP, parameter, []
); |
| 2617 } | 2617 } |
| 2618 return new DefaultFormalParameter.full(parameter, kind, seperator, default
Value); | 2618 return new DefaultFormalParameter.full(parameter, kind, seperator, default
Value); |
| 2619 } else if (kind != ParameterKind.REQUIRED) { | 2619 } else if (kind != ParameterKind.REQUIRED) { |
| 2620 return new DefaultFormalParameter.full(parameter, kind, null, null); | 2620 return new DefaultFormalParameter.full(parameter, kind, null, null); |
| 2621 } | 2621 } |
| 2622 return parameter; | 2622 return parameter; |
| 2623 } | 2623 } |
| 2624 | 2624 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2666 bool reportedMuliplePositionalGroups = false; | 2666 bool reportedMuliplePositionalGroups = false; |
| 2667 bool reportedMulipleNamedGroups = false; | 2667 bool reportedMulipleNamedGroups = false; |
| 2668 bool reportedMixedGroups = false; | 2668 bool reportedMixedGroups = false; |
| 2669 bool wasOptionalParameter = false; | 2669 bool wasOptionalParameter = false; |
| 2670 Token initialToken = null; | 2670 Token initialToken = null; |
| 2671 do { | 2671 do { |
| 2672 if (firstParameter) { | 2672 if (firstParameter) { |
| 2673 firstParameter = false; | 2673 firstParameter = false; |
| 2674 } else if (!optional(TokenType.COMMA)) { | 2674 } else if (!optional(TokenType.COMMA)) { |
| 2675 if (getEndToken(leftParenthesis) != null) { | 2675 if (getEndToken(leftParenthesis) != null) { |
| 2676 reportError7(ParserErrorCode.EXPECTED_TOKEN, [TokenType.COMMA.lexeme])
; | 2676 reportError8(ParserErrorCode.EXPECTED_TOKEN, [TokenType.COMMA.lexeme])
; |
| 2677 } else { | 2677 } else { |
| 2678 reportError8(ParserErrorCode.MISSING_CLOSING_PARENTHESIS, _currentToke
n.previous, []); | 2678 reportError9(ParserErrorCode.MISSING_CLOSING_PARENTHESIS, _currentToke
n.previous, []); |
| 2679 break; | 2679 break; |
| 2680 } | 2680 } |
| 2681 } | 2681 } |
| 2682 initialToken = _currentToken; | 2682 initialToken = _currentToken; |
| 2683 if (matches5(TokenType.OPEN_SQUARE_BRACKET)) { | 2683 if (matches5(TokenType.OPEN_SQUARE_BRACKET)) { |
| 2684 wasOptionalParameter = true; | 2684 wasOptionalParameter = true; |
| 2685 if (leftSquareBracket != null && !reportedMuliplePositionalGroups) { | 2685 if (leftSquareBracket != null && !reportedMuliplePositionalGroups) { |
| 2686 reportError7(ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS, [])
; | 2686 reportError8(ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS, [])
; |
| 2687 reportedMuliplePositionalGroups = true; | 2687 reportedMuliplePositionalGroups = true; |
| 2688 } | 2688 } |
| 2689 if (leftCurlyBracket != null && !reportedMixedGroups) { | 2689 if (leftCurlyBracket != null && !reportedMixedGroups) { |
| 2690 reportError7(ParserErrorCode.MIXED_PARAMETER_GROUPS, []); | 2690 reportError8(ParserErrorCode.MIXED_PARAMETER_GROUPS, []); |
| 2691 reportedMixedGroups = true; | 2691 reportedMixedGroups = true; |
| 2692 } | 2692 } |
| 2693 leftSquareBracket = andAdvance; | 2693 leftSquareBracket = andAdvance; |
| 2694 currentParameters = positionalParameters; | 2694 currentParameters = positionalParameters; |
| 2695 kind = ParameterKind.POSITIONAL; | 2695 kind = ParameterKind.POSITIONAL; |
| 2696 } else if (matches5(TokenType.OPEN_CURLY_BRACKET)) { | 2696 } else if (matches5(TokenType.OPEN_CURLY_BRACKET)) { |
| 2697 wasOptionalParameter = true; | 2697 wasOptionalParameter = true; |
| 2698 if (leftCurlyBracket != null && !reportedMulipleNamedGroups) { | 2698 if (leftCurlyBracket != null && !reportedMulipleNamedGroups) { |
| 2699 reportError7(ParserErrorCode.MULTIPLE_NAMED_PARAMETER_GROUPS, []); | 2699 reportError8(ParserErrorCode.MULTIPLE_NAMED_PARAMETER_GROUPS, []); |
| 2700 reportedMulipleNamedGroups = true; | 2700 reportedMulipleNamedGroups = true; |
| 2701 } | 2701 } |
| 2702 if (leftSquareBracket != null && !reportedMixedGroups) { | 2702 if (leftSquareBracket != null && !reportedMixedGroups) { |
| 2703 reportError7(ParserErrorCode.MIXED_PARAMETER_GROUPS, []); | 2703 reportError8(ParserErrorCode.MIXED_PARAMETER_GROUPS, []); |
| 2704 reportedMixedGroups = true; | 2704 reportedMixedGroups = true; |
| 2705 } | 2705 } |
| 2706 leftCurlyBracket = andAdvance; | 2706 leftCurlyBracket = andAdvance; |
| 2707 currentParameters = namedParameters; | 2707 currentParameters = namedParameters; |
| 2708 kind = ParameterKind.NAMED; | 2708 kind = ParameterKind.NAMED; |
| 2709 } | 2709 } |
| 2710 FormalParameter parameter = parseFormalParameter(kind); | 2710 FormalParameter parameter = parseFormalParameter(kind); |
| 2711 parameters.add(parameter); | 2711 parameters.add(parameter); |
| 2712 currentParameters.add(parameter); | 2712 currentParameters.add(parameter); |
| 2713 if (identical(kind, ParameterKind.REQUIRED) && wasOptionalParameter) { | 2713 if (identical(kind, ParameterKind.REQUIRED) && wasOptionalParameter) { |
| 2714 reportError(ParserErrorCode.NORMAL_BEFORE_OPTIONAL_PARAMETERS, parameter
, []); | 2714 reportError(ParserErrorCode.NORMAL_BEFORE_OPTIONAL_PARAMETERS, parameter
, []); |
| 2715 } | 2715 } |
| 2716 if (matches5(TokenType.CLOSE_SQUARE_BRACKET)) { | 2716 if (matches5(TokenType.CLOSE_SQUARE_BRACKET)) { |
| 2717 rightSquareBracket = andAdvance; | 2717 rightSquareBracket = andAdvance; |
| 2718 currentParameters = normalParameters; | 2718 currentParameters = normalParameters; |
| 2719 if (leftSquareBracket == null) { | 2719 if (leftSquareBracket == null) { |
| 2720 if (leftCurlyBracket != null) { | 2720 if (leftCurlyBracket != null) { |
| 2721 reportError7(ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP, [
"}"]); | 2721 reportError8(ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP, [
"}"]); |
| 2722 rightCurlyBracket = rightSquareBracket; | 2722 rightCurlyBracket = rightSquareBracket; |
| 2723 rightSquareBracket = null; | 2723 rightSquareBracket = null; |
| 2724 } else { | 2724 } else { |
| 2725 reportError7(ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GRO
UP, ["["]); | 2725 reportError8(ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GRO
UP, ["["]); |
| 2726 } | 2726 } |
| 2727 } | 2727 } |
| 2728 kind = ParameterKind.REQUIRED; | 2728 kind = ParameterKind.REQUIRED; |
| 2729 } else if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { | 2729 } else if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { |
| 2730 rightCurlyBracket = andAdvance; | 2730 rightCurlyBracket = andAdvance; |
| 2731 currentParameters = normalParameters; | 2731 currentParameters = normalParameters; |
| 2732 if (leftCurlyBracket == null) { | 2732 if (leftCurlyBracket == null) { |
| 2733 if (leftSquareBracket != null) { | 2733 if (leftSquareBracket != null) { |
| 2734 reportError7(ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP, [
"]"]); | 2734 reportError8(ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP, [
"]"]); |
| 2735 rightSquareBracket = rightCurlyBracket; | 2735 rightSquareBracket = rightCurlyBracket; |
| 2736 rightCurlyBracket = null; | 2736 rightCurlyBracket = null; |
| 2737 } else { | 2737 } else { |
| 2738 reportError7(ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GRO
UP, ["{"]); | 2738 reportError8(ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GRO
UP, ["{"]); |
| 2739 } | 2739 } |
| 2740 } | 2740 } |
| 2741 kind = ParameterKind.REQUIRED; | 2741 kind = ParameterKind.REQUIRED; |
| 2742 } | 2742 } |
| 2743 } while (!matches5(TokenType.CLOSE_PAREN) && initialToken != _currentToken); | 2743 } while (!matches5(TokenType.CLOSE_PAREN) && initialToken != _currentToken); |
| 2744 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); | 2744 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); |
| 2745 if (leftSquareBracket != null && rightSquareBracket == null) { | 2745 if (leftSquareBracket != null && rightSquareBracket == null) { |
| 2746 reportError7(ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP, ["]"]
); | 2746 reportError8(ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP, ["]"]
); |
| 2747 } | 2747 } |
| 2748 if (leftCurlyBracket != null && rightCurlyBracket == null) { | 2748 if (leftCurlyBracket != null && rightCurlyBracket == null) { |
| 2749 reportError7(ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP, ["}"]
); | 2749 reportError8(ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP, ["}"]
); |
| 2750 } | 2750 } |
| 2751 if (leftSquareBracket == null) { | 2751 if (leftSquareBracket == null) { |
| 2752 leftSquareBracket = leftCurlyBracket; | 2752 leftSquareBracket = leftCurlyBracket; |
| 2753 } | 2753 } |
| 2754 if (rightSquareBracket == null) { | 2754 if (rightSquareBracket == null) { |
| 2755 rightSquareBracket = rightCurlyBracket; | 2755 rightSquareBracket = rightCurlyBracket; |
| 2756 } | 2756 } |
| 2757 return new FormalParameterList.full(leftParenthesis, parameters, leftSquareB
racket, rightSquareBracket, rightParenthesis); | 2757 return new FormalParameterList.full(leftParenthesis, parameters, leftSquareB
racket, rightSquareBracket, rightParenthesis); |
| 2758 } | 2758 } |
| 2759 | 2759 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2792 variables.add(new VariableDeclaration.full(null, null, variableName, n
ull, null)); | 2792 variables.add(new VariableDeclaration.full(null, null, variableName, n
ull, null)); |
| 2793 variableList = new VariableDeclarationList.full(commentAndMetadata.com
ment, commentAndMetadata.metadata, null, null, variables); | 2793 variableList = new VariableDeclarationList.full(commentAndMetadata.com
ment, commentAndMetadata.metadata, null, null, variables); |
| 2794 } else if (isInitializedVariableDeclaration()) { | 2794 } else if (isInitializedVariableDeclaration()) { |
| 2795 variableList = parseVariableDeclarationList(commentAndMetadata); | 2795 variableList = parseVariableDeclarationList(commentAndMetadata); |
| 2796 } else { | 2796 } else { |
| 2797 initialization = parseExpression2(); | 2797 initialization = parseExpression2(); |
| 2798 } | 2798 } |
| 2799 if (matches(Keyword.IN)) { | 2799 if (matches(Keyword.IN)) { |
| 2800 DeclaredIdentifier loopVariable = null; | 2800 DeclaredIdentifier loopVariable = null; |
| 2801 if (variableList == null) { | 2801 if (variableList == null) { |
| 2802 reportError7(ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH, []); | 2802 reportError8(ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH, []); |
| 2803 } else { | 2803 } else { |
| 2804 NodeList<VariableDeclaration> variables = variableList.variables; | 2804 NodeList<VariableDeclaration> variables = variableList.variables; |
| 2805 if (variables.length > 1) { | 2805 if (variables.length > 1) { |
| 2806 reportError7(ParserErrorCode.MULTIPLE_VARIABLES_IN_FOR_EACH, [vari
ables.length.toString()]); | 2806 reportError8(ParserErrorCode.MULTIPLE_VARIABLES_IN_FOR_EACH, [vari
ables.length.toString()]); |
| 2807 } | 2807 } |
| 2808 VariableDeclaration variable = variables[0]; | 2808 VariableDeclaration variable = variables[0]; |
| 2809 if (variable.initializer != null) { | 2809 if (variable.initializer != null) { |
| 2810 reportError7(ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH, [])
; | 2810 reportError8(ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH, [])
; |
| 2811 } | 2811 } |
| 2812 loopVariable = new DeclaredIdentifier.full(commentAndMetadata.commen
t, commentAndMetadata.metadata, variableList.keyword, variableList.type, variabl
e.name); | 2812 loopVariable = new DeclaredIdentifier.full(commentAndMetadata.commen
t, commentAndMetadata.metadata, variableList.keyword, variableList.type, variabl
e.name); |
| 2813 } | 2813 } |
| 2814 Token inKeyword = expect(Keyword.IN); | 2814 Token inKeyword = expect(Keyword.IN); |
| 2815 Expression iterator = parseExpression2(); | 2815 Expression iterator = parseExpression2(); |
| 2816 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); | 2816 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); |
| 2817 Statement body = parseStatement2(); | 2817 Statement body = parseStatement2(); |
| 2818 return new ForEachStatement.full(forKeyword, leftParenthesis, loopVari
able, inKeyword, iterator, rightParenthesis, body); | 2818 return new ForEachStatement.full(forKeyword, leftParenthesis, loopVari
able, inKeyword, iterator, rightParenthesis, body); |
| 2819 } | 2819 } |
| 2820 } | 2820 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2856 * @return the function body that was parsed | 2856 * @return the function body that was parsed |
| 2857 */ | 2857 */ |
| 2858 FunctionBody parseFunctionBody(bool mayBeEmpty, ParserErrorCode emptyErrorCode
, bool inExpression) { | 2858 FunctionBody parseFunctionBody(bool mayBeEmpty, ParserErrorCode emptyErrorCode
, bool inExpression) { |
| 2859 bool wasInLoop = _inLoop; | 2859 bool wasInLoop = _inLoop; |
| 2860 bool wasInSwitch = _inSwitch; | 2860 bool wasInSwitch = _inSwitch; |
| 2861 _inLoop = false; | 2861 _inLoop = false; |
| 2862 _inSwitch = false; | 2862 _inSwitch = false; |
| 2863 try { | 2863 try { |
| 2864 if (matches5(TokenType.SEMICOLON)) { | 2864 if (matches5(TokenType.SEMICOLON)) { |
| 2865 if (!mayBeEmpty) { | 2865 if (!mayBeEmpty) { |
| 2866 reportError7(emptyErrorCode, []); | 2866 reportError8(emptyErrorCode, []); |
| 2867 } | 2867 } |
| 2868 return new EmptyFunctionBody.full(andAdvance); | 2868 return new EmptyFunctionBody.full(andAdvance); |
| 2869 } else if (matches5(TokenType.FUNCTION)) { | 2869 } else if (matches5(TokenType.FUNCTION)) { |
| 2870 Token functionDefinition = andAdvance; | 2870 Token functionDefinition = andAdvance; |
| 2871 Expression expression = parseExpression2(); | 2871 Expression expression = parseExpression2(); |
| 2872 Token semicolon = null; | 2872 Token semicolon = null; |
| 2873 if (!inExpression) { | 2873 if (!inExpression) { |
| 2874 semicolon = expect2(TokenType.SEMICOLON); | 2874 semicolon = expect2(TokenType.SEMICOLON); |
| 2875 } | 2875 } |
| 2876 return new ExpressionFunctionBody.full(functionDefinition, expression, s
emicolon); | 2876 return new ExpressionFunctionBody.full(functionDefinition, expression, s
emicolon); |
| 2877 } else if (matches5(TokenType.OPEN_CURLY_BRACKET)) { | 2877 } else if (matches5(TokenType.OPEN_CURLY_BRACKET)) { |
| 2878 return new BlockFunctionBody.full(parseBlock()); | 2878 return new BlockFunctionBody.full(parseBlock()); |
| 2879 } else if (matches2(_NATIVE)) { | 2879 } else if (matches2(_NATIVE)) { |
| 2880 Token nativeToken = andAdvance; | 2880 Token nativeToken = andAdvance; |
| 2881 StringLiteral stringLiteral = null; | 2881 StringLiteral stringLiteral = null; |
| 2882 if (matches5(TokenType.STRING)) { | 2882 if (matches5(TokenType.STRING)) { |
| 2883 stringLiteral = parseStringLiteral(); | 2883 stringLiteral = parseStringLiteral(); |
| 2884 } | 2884 } |
| 2885 return new NativeFunctionBody.full(nativeToken, stringLiteral, expect2(T
okenType.SEMICOLON)); | 2885 return new NativeFunctionBody.full(nativeToken, stringLiteral, expect2(T
okenType.SEMICOLON)); |
| 2886 } else { | 2886 } else { |
| 2887 reportError7(emptyErrorCode, []); | 2887 reportError8(emptyErrorCode, []); |
| 2888 return new EmptyFunctionBody.full(createSyntheticToken2(TokenType.SEMICO
LON)); | 2888 return new EmptyFunctionBody.full(createSyntheticToken2(TokenType.SEMICO
LON)); |
| 2889 } | 2889 } |
| 2890 } finally { | 2890 } finally { |
| 2891 _inLoop = wasInLoop; | 2891 _inLoop = wasInLoop; |
| 2892 _inSwitch = wasInSwitch; | 2892 _inSwitch = wasInSwitch; |
| 2893 } | 2893 } |
| 2894 } | 2894 } |
| 2895 | 2895 |
| 2896 /** | 2896 /** |
| 2897 * Parse a function declaration. | 2897 * Parse a function declaration. |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2918 } else if (matches(Keyword.SET) && !matches4(peek(), TokenType.OPEN_PAREN))
{ | 2918 } else if (matches(Keyword.SET) && !matches4(peek(), TokenType.OPEN_PAREN))
{ |
| 2919 keyword = andAdvance; | 2919 keyword = andAdvance; |
| 2920 } | 2920 } |
| 2921 SimpleIdentifier name = parseSimpleIdentifier(); | 2921 SimpleIdentifier name = parseSimpleIdentifier(); |
| 2922 FormalParameterList parameters = null; | 2922 FormalParameterList parameters = null; |
| 2923 if (!isGetter) { | 2923 if (!isGetter) { |
| 2924 if (matches5(TokenType.OPEN_PAREN)) { | 2924 if (matches5(TokenType.OPEN_PAREN)) { |
| 2925 parameters = parseFormalParameterList(); | 2925 parameters = parseFormalParameterList(); |
| 2926 validateFormalParameterList(parameters); | 2926 validateFormalParameterList(parameters); |
| 2927 } else { | 2927 } else { |
| 2928 reportError7(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, []); | 2928 reportError8(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, []); |
| 2929 } | 2929 } |
| 2930 } else if (matches5(TokenType.OPEN_PAREN)) { | 2930 } else if (matches5(TokenType.OPEN_PAREN)) { |
| 2931 reportError7(ParserErrorCode.GETTER_WITH_PARAMETERS, []); | 2931 reportError8(ParserErrorCode.GETTER_WITH_PARAMETERS, []); |
| 2932 parseFormalParameterList(); | 2932 parseFormalParameterList(); |
| 2933 } | 2933 } |
| 2934 FunctionBody body; | 2934 FunctionBody body; |
| 2935 if (externalKeyword == null) { | 2935 if (externalKeyword == null) { |
| 2936 body = parseFunctionBody(false, ParserErrorCode.MISSING_FUNCTION_BODY, fal
se); | 2936 body = parseFunctionBody(false, ParserErrorCode.MISSING_FUNCTION_BODY, fal
se); |
| 2937 } else { | 2937 } else { |
| 2938 body = new EmptyFunctionBody.full(expect2(TokenType.SEMICOLON)); | 2938 body = new EmptyFunctionBody.full(expect2(TokenType.SEMICOLON)); |
| 2939 } | 2939 } |
| 2940 return new FunctionDeclaration.full(commentAndMetadata.comment, commentAndMe
tadata.metadata, externalKeyword, returnType, keyword, name, new FunctionExpress
ion.full(parameters, body)); | 2940 return new FunctionDeclaration.full(commentAndMetadata.comment, commentAndMe
tadata.metadata, externalKeyword, returnType, keyword, name, new FunctionExpress
ion.full(parameters, body)); |
| 2941 } | 2941 } |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3007 TypeName returnType = null; | 3007 TypeName returnType = null; |
| 3008 if (hasReturnTypeInTypeAlias()) { | 3008 if (hasReturnTypeInTypeAlias()) { |
| 3009 returnType = parseReturnType(); | 3009 returnType = parseReturnType(); |
| 3010 } | 3010 } |
| 3011 SimpleIdentifier name = parseSimpleIdentifier(); | 3011 SimpleIdentifier name = parseSimpleIdentifier(); |
| 3012 TypeParameterList typeParameters = null; | 3012 TypeParameterList typeParameters = null; |
| 3013 if (matches5(TokenType.LT)) { | 3013 if (matches5(TokenType.LT)) { |
| 3014 typeParameters = parseTypeParameterList(); | 3014 typeParameters = parseTypeParameterList(); |
| 3015 } | 3015 } |
| 3016 if (matches5(TokenType.SEMICOLON) || matches5(TokenType.EOF)) { | 3016 if (matches5(TokenType.SEMICOLON) || matches5(TokenType.EOF)) { |
| 3017 reportError7(ParserErrorCode.MISSING_TYPEDEF_PARAMETERS, []); | 3017 reportError8(ParserErrorCode.MISSING_TYPEDEF_PARAMETERS, []); |
| 3018 FormalParameterList parameters = new FormalParameterList.full(createSynthe
ticToken2(TokenType.OPEN_PAREN), null, null, null, createSyntheticToken2(TokenTy
pe.CLOSE_PAREN)); | 3018 FormalParameterList parameters = new FormalParameterList.full(createSynthe
ticToken2(TokenType.OPEN_PAREN), null, null, null, createSyntheticToken2(TokenTy
pe.CLOSE_PAREN)); |
| 3019 Token semicolon = expect2(TokenType.SEMICOLON); | 3019 Token semicolon = expect2(TokenType.SEMICOLON); |
| 3020 return new FunctionTypeAlias.full(commentAndMetadata.comment, commentAndMe
tadata.metadata, keyword, returnType, name, typeParameters, parameters, semicolo
n); | 3020 return new FunctionTypeAlias.full(commentAndMetadata.comment, commentAndMe
tadata.metadata, keyword, returnType, name, typeParameters, parameters, semicolo
n); |
| 3021 } else if (!matches5(TokenType.OPEN_PAREN)) { | 3021 } else if (!matches5(TokenType.OPEN_PAREN)) { |
| 3022 reportError7(ParserErrorCode.MISSING_TYPEDEF_PARAMETERS, []); | 3022 reportError8(ParserErrorCode.MISSING_TYPEDEF_PARAMETERS, []); |
| 3023 return new FunctionTypeAlias.full(commentAndMetadata.comment, commentAndMe
tadata.metadata, keyword, returnType, name, typeParameters, new FormalParameterL
ist.full(createSyntheticToken2(TokenType.OPEN_PAREN), null, null, null, createSy
ntheticToken2(TokenType.CLOSE_PAREN)), createSyntheticToken2(TokenType.SEMICOLON
)); | 3023 return new FunctionTypeAlias.full(commentAndMetadata.comment, commentAndMe
tadata.metadata, keyword, returnType, name, typeParameters, new FormalParameterL
ist.full(createSyntheticToken2(TokenType.OPEN_PAREN), null, null, null, createSy
ntheticToken2(TokenType.CLOSE_PAREN)), createSyntheticToken2(TokenType.SEMICOLON
)); |
| 3024 } | 3024 } |
| 3025 FormalParameterList parameters = parseFormalParameterList(); | 3025 FormalParameterList parameters = parseFormalParameterList(); |
| 3026 validateFormalParameterList(parameters); | 3026 validateFormalParameterList(parameters); |
| 3027 Token semicolon = expect2(TokenType.SEMICOLON); | 3027 Token semicolon = expect2(TokenType.SEMICOLON); |
| 3028 return new FunctionTypeAlias.full(commentAndMetadata.comment, commentAndMeta
data.metadata, keyword, returnType, name, typeParameters, parameters, semicolon)
; | 3028 return new FunctionTypeAlias.full(commentAndMetadata.comment, commentAndMeta
data.metadata, keyword, returnType, name, typeParameters, parameters, semicolon)
; |
| 3029 } | 3029 } |
| 3030 | 3030 |
| 3031 /** | 3031 /** |
| 3032 * Parse a getter. | 3032 * Parse a getter. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3044 * @param externalKeyword the 'external' token | 3044 * @param externalKeyword the 'external' token |
| 3045 * @param staticKeyword the static keyword, or `null` if the getter is not sta
tic | 3045 * @param staticKeyword the static keyword, or `null` if the getter is not sta
tic |
| 3046 * @param the return type that has already been parsed, or `null` if there was
no return | 3046 * @param the return type that has already been parsed, or `null` if there was
no return |
| 3047 * type | 3047 * type |
| 3048 * @return the getter that was parsed | 3048 * @return the getter that was parsed |
| 3049 */ | 3049 */ |
| 3050 MethodDeclaration parseGetter(CommentAndMetadata commentAndMetadata, Token ext
ernalKeyword, Token staticKeyword, TypeName returnType) { | 3050 MethodDeclaration parseGetter(CommentAndMetadata commentAndMetadata, Token ext
ernalKeyword, Token staticKeyword, TypeName returnType) { |
| 3051 Token propertyKeyword = expect(Keyword.GET); | 3051 Token propertyKeyword = expect(Keyword.GET); |
| 3052 SimpleIdentifier name = parseSimpleIdentifier(); | 3052 SimpleIdentifier name = parseSimpleIdentifier(); |
| 3053 if (matches5(TokenType.OPEN_PAREN) && matches4(peek(), TokenType.CLOSE_PAREN
)) { | 3053 if (matches5(TokenType.OPEN_PAREN) && matches4(peek(), TokenType.CLOSE_PAREN
)) { |
| 3054 reportError7(ParserErrorCode.GETTER_WITH_PARAMETERS, []); | 3054 reportError8(ParserErrorCode.GETTER_WITH_PARAMETERS, []); |
| 3055 advance(); | 3055 advance(); |
| 3056 advance(); | 3056 advance(); |
| 3057 } | 3057 } |
| 3058 FunctionBody body = parseFunctionBody(externalKeyword != null || staticKeywo
rd == null, ParserErrorCode.STATIC_GETTER_WITHOUT_BODY, false); | 3058 FunctionBody body = parseFunctionBody(externalKeyword != null || staticKeywo
rd == null, ParserErrorCode.STATIC_GETTER_WITHOUT_BODY, false); |
| 3059 if (externalKeyword != null && body is! EmptyFunctionBody) { | 3059 if (externalKeyword != null && body is! EmptyFunctionBody) { |
| 3060 reportError7(ParserErrorCode.EXTERNAL_GETTER_WITH_BODY, []); | 3060 reportError8(ParserErrorCode.EXTERNAL_GETTER_WITH_BODY, []); |
| 3061 } | 3061 } |
| 3062 return new MethodDeclaration.full(commentAndMetadata.comment, commentAndMeta
data.metadata, externalKeyword, staticKeyword, returnType, propertyKeyword, null
, name, null, body); | 3062 return new MethodDeclaration.full(commentAndMetadata.comment, commentAndMeta
data.metadata, externalKeyword, staticKeyword, returnType, propertyKeyword, null
, name, null, body); |
| 3063 } | 3063 } |
| 3064 | 3064 |
| 3065 /** | 3065 /** |
| 3066 * Parse a list of identifiers. | 3066 * Parse a list of identifiers. |
| 3067 * | 3067 * |
| 3068 * <pre> | 3068 * <pre> |
| 3069 * identifierList ::= | 3069 * identifierList ::= |
| 3070 * identifier (',' identifier)* | 3070 * identifier (',' identifier)* |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3248 * missing | 3248 * missing |
| 3249 * @return the library name that was parsed | 3249 * @return the library name that was parsed |
| 3250 */ | 3250 */ |
| 3251 LibraryIdentifier parseLibraryName(ParserErrorCode missingNameError, Token mis
singNameToken) { | 3251 LibraryIdentifier parseLibraryName(ParserErrorCode missingNameError, Token mis
singNameToken) { |
| 3252 if (matchesIdentifier()) { | 3252 if (matchesIdentifier()) { |
| 3253 return parseLibraryIdentifier(); | 3253 return parseLibraryIdentifier(); |
| 3254 } else if (matches5(TokenType.STRING)) { | 3254 } else if (matches5(TokenType.STRING)) { |
| 3255 StringLiteral string = parseStringLiteral(); | 3255 StringLiteral string = parseStringLiteral(); |
| 3256 reportError(ParserErrorCode.NON_IDENTIFIER_LIBRARY_NAME, string, []); | 3256 reportError(ParserErrorCode.NON_IDENTIFIER_LIBRARY_NAME, string, []); |
| 3257 } else { | 3257 } else { |
| 3258 reportError8(missingNameError, missingNameToken, []); | 3258 reportError9(missingNameError, missingNameToken, []); |
| 3259 } | 3259 } |
| 3260 List<SimpleIdentifier> components = new List<SimpleIdentifier>(); | 3260 List<SimpleIdentifier> components = new List<SimpleIdentifier>(); |
| 3261 components.add(createSyntheticIdentifier()); | 3261 components.add(createSyntheticIdentifier()); |
| 3262 return new LibraryIdentifier.full(components); | 3262 return new LibraryIdentifier.full(components); |
| 3263 } | 3263 } |
| 3264 | 3264 |
| 3265 /** | 3265 /** |
| 3266 * Parse a list literal. | 3266 * Parse a list literal. |
| 3267 * | 3267 * |
| 3268 * <pre> | 3268 * <pre> |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3325 TypedLiteral parseListOrMapLiteral(Token modifier) { | 3325 TypedLiteral parseListOrMapLiteral(Token modifier) { |
| 3326 TypeArgumentList typeArguments = null; | 3326 TypeArgumentList typeArguments = null; |
| 3327 if (matches5(TokenType.LT)) { | 3327 if (matches5(TokenType.LT)) { |
| 3328 typeArguments = parseTypeArgumentList(); | 3328 typeArguments = parseTypeArgumentList(); |
| 3329 } | 3329 } |
| 3330 if (matches5(TokenType.OPEN_CURLY_BRACKET)) { | 3330 if (matches5(TokenType.OPEN_CURLY_BRACKET)) { |
| 3331 return parseMapLiteral(modifier, typeArguments); | 3331 return parseMapLiteral(modifier, typeArguments); |
| 3332 } else if (matches5(TokenType.OPEN_SQUARE_BRACKET) || matches5(TokenType.IND
EX)) { | 3332 } else if (matches5(TokenType.OPEN_SQUARE_BRACKET) || matches5(TokenType.IND
EX)) { |
| 3333 return parseListLiteral(modifier, typeArguments); | 3333 return parseListLiteral(modifier, typeArguments); |
| 3334 } | 3334 } |
| 3335 reportError7(ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL, []); | 3335 reportError8(ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL, []); |
| 3336 return new ListLiteral.full(modifier, typeArguments, createSyntheticToken2(T
okenType.OPEN_SQUARE_BRACKET), null, createSyntheticToken2(TokenType.CLOSE_SQUAR
E_BRACKET)); | 3336 return new ListLiteral.full(modifier, typeArguments, createSyntheticToken2(T
okenType.OPEN_SQUARE_BRACKET), null, createSyntheticToken2(TokenType.CLOSE_SQUAR
E_BRACKET)); |
| 3337 } | 3337 } |
| 3338 | 3338 |
| 3339 /** | 3339 /** |
| 3340 * Parse a logical and expression. | 3340 * Parse a logical and expression. |
| 3341 * | 3341 * |
| 3342 * <pre> | 3342 * <pre> |
| 3343 * logicalAndExpression ::= | 3343 * logicalAndExpression ::= |
| 3344 * bitwiseOrExpression ('&&' bitwiseOrExpression)* | 3344 * bitwiseOrExpression ('&&' bitwiseOrExpression)* |
| 3345 * </pre> | 3345 * </pre> |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3495 * </pre> | 3495 * </pre> |
| 3496 * | 3496 * |
| 3497 * @return the modifiers that were parsed | 3497 * @return the modifiers that were parsed |
| 3498 */ | 3498 */ |
| 3499 Modifiers parseModifiers() { | 3499 Modifiers parseModifiers() { |
| 3500 Modifiers modifiers = new Modifiers(); | 3500 Modifiers modifiers = new Modifiers(); |
| 3501 bool progress = true; | 3501 bool progress = true; |
| 3502 while (progress) { | 3502 while (progress) { |
| 3503 if (matches(Keyword.ABSTRACT) && !matches4(peek(), TokenType.PERIOD) && !m
atches4(peek(), TokenType.LT)) { | 3503 if (matches(Keyword.ABSTRACT) && !matches4(peek(), TokenType.PERIOD) && !m
atches4(peek(), TokenType.LT)) { |
| 3504 if (modifiers.abstractKeyword != null) { | 3504 if (modifiers.abstractKeyword != null) { |
| 3505 reportError7(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); | 3505 reportError8(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); |
| 3506 advance(); | 3506 advance(); |
| 3507 } else { | 3507 } else { |
| 3508 modifiers.abstractKeyword = andAdvance; | 3508 modifiers.abstractKeyword = andAdvance; |
| 3509 } | 3509 } |
| 3510 } else if (matches(Keyword.CONST)) { | 3510 } else if (matches(Keyword.CONST)) { |
| 3511 if (modifiers.constKeyword != null) { | 3511 if (modifiers.constKeyword != null) { |
| 3512 reportError7(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); | 3512 reportError8(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); |
| 3513 advance(); | 3513 advance(); |
| 3514 } else { | 3514 } else { |
| 3515 modifiers.constKeyword = andAdvance; | 3515 modifiers.constKeyword = andAdvance; |
| 3516 } | 3516 } |
| 3517 } else if (matches(Keyword.EXTERNAL) && !matches4(peek(), TokenType.PERIOD
) && !matches4(peek(), TokenType.LT)) { | 3517 } else if (matches(Keyword.EXTERNAL) && !matches4(peek(), TokenType.PERIOD
) && !matches4(peek(), TokenType.LT)) { |
| 3518 if (modifiers.externalKeyword != null) { | 3518 if (modifiers.externalKeyword != null) { |
| 3519 reportError7(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); | 3519 reportError8(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); |
| 3520 advance(); | 3520 advance(); |
| 3521 } else { | 3521 } else { |
| 3522 modifiers.externalKeyword = andAdvance; | 3522 modifiers.externalKeyword = andAdvance; |
| 3523 } | 3523 } |
| 3524 } else if (matches(Keyword.FACTORY) && !matches4(peek(), TokenType.PERIOD)
&& !matches4(peek(), TokenType.LT)) { | 3524 } else if (matches(Keyword.FACTORY) && !matches4(peek(), TokenType.PERIOD)
&& !matches4(peek(), TokenType.LT)) { |
| 3525 if (modifiers.factoryKeyword != null) { | 3525 if (modifiers.factoryKeyword != null) { |
| 3526 reportError7(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); | 3526 reportError8(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); |
| 3527 advance(); | 3527 advance(); |
| 3528 } else { | 3528 } else { |
| 3529 modifiers.factoryKeyword = andAdvance; | 3529 modifiers.factoryKeyword = andAdvance; |
| 3530 } | 3530 } |
| 3531 } else if (matches(Keyword.FINAL)) { | 3531 } else if (matches(Keyword.FINAL)) { |
| 3532 if (modifiers.finalKeyword != null) { | 3532 if (modifiers.finalKeyword != null) { |
| 3533 reportError7(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); | 3533 reportError8(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); |
| 3534 advance(); | 3534 advance(); |
| 3535 } else { | 3535 } else { |
| 3536 modifiers.finalKeyword = andAdvance; | 3536 modifiers.finalKeyword = andAdvance; |
| 3537 } | 3537 } |
| 3538 } else if (matches(Keyword.STATIC) && !matches4(peek(), TokenType.PERIOD)
&& !matches4(peek(), TokenType.LT)) { | 3538 } else if (matches(Keyword.STATIC) && !matches4(peek(), TokenType.PERIOD)
&& !matches4(peek(), TokenType.LT)) { |
| 3539 if (modifiers.staticKeyword != null) { | 3539 if (modifiers.staticKeyword != null) { |
| 3540 reportError7(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); | 3540 reportError8(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); |
| 3541 advance(); | 3541 advance(); |
| 3542 } else { | 3542 } else { |
| 3543 modifiers.staticKeyword = andAdvance; | 3543 modifiers.staticKeyword = andAdvance; |
| 3544 } | 3544 } |
| 3545 } else if (matches(Keyword.VAR)) { | 3545 } else if (matches(Keyword.VAR)) { |
| 3546 if (modifiers.varKeyword != null) { | 3546 if (modifiers.varKeyword != null) { |
| 3547 reportError7(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); | 3547 reportError8(ParserErrorCode.DUPLICATED_MODIFIER, [_currentToken.lexem
e]); |
| 3548 advance(); | 3548 advance(); |
| 3549 } else { | 3549 } else { |
| 3550 modifiers.varKeyword = andAdvance; | 3550 modifiers.varKeyword = andAdvance; |
| 3551 } | 3551 } |
| 3552 } else { | 3552 } else { |
| 3553 progress = false; | 3553 progress = false; |
| 3554 } | 3554 } |
| 3555 } | 3555 } |
| 3556 return modifiers; | 3556 return modifiers; |
| 3557 } | 3557 } |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3679 return parseFunctionDeclarationStatement2(commentAndMetadata, returnTy
pe); | 3679 return parseFunctionDeclarationStatement2(commentAndMetadata, returnTy
pe); |
| 3680 } else { | 3680 } else { |
| 3681 if (matchesIdentifier()) { | 3681 if (matchesIdentifier()) { |
| 3682 if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEM
ICOLON])) { | 3682 if (matchesAny(peek(), [TokenType.EQ, TokenType.COMMA, TokenType.SEM
ICOLON])) { |
| 3683 reportError(ParserErrorCode.VOID_VARIABLE, returnType, []); | 3683 reportError(ParserErrorCode.VOID_VARIABLE, returnType, []); |
| 3684 return parseVariableDeclarationStatement(commentAndMetadata); | 3684 return parseVariableDeclarationStatement(commentAndMetadata); |
| 3685 } | 3685 } |
| 3686 } else if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { | 3686 } else if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { |
| 3687 return parseVariableDeclarationStatement2(commentAndMetadata, null,
returnType); | 3687 return parseVariableDeclarationStatement2(commentAndMetadata, null,
returnType); |
| 3688 } | 3688 } |
| 3689 reportError7(ParserErrorCode.MISSING_STATEMENT, []); | 3689 reportError8(ParserErrorCode.MISSING_STATEMENT, []); |
| 3690 return new EmptyStatement.full(createSyntheticToken2(TokenType.SEMICOL
ON)); | 3690 return new EmptyStatement.full(createSyntheticToken2(TokenType.SEMICOL
ON)); |
| 3691 } | 3691 } |
| 3692 } else if (identical(keyword, Keyword.CONST)) { | 3692 } else if (identical(keyword, Keyword.CONST)) { |
| 3693 if (matchesAny(peek(), [ | 3693 if (matchesAny(peek(), [ |
| 3694 TokenType.LT, | 3694 TokenType.LT, |
| 3695 TokenType.OPEN_CURLY_BRACKET, | 3695 TokenType.OPEN_CURLY_BRACKET, |
| 3696 TokenType.OPEN_SQUARE_BRACKET, | 3696 TokenType.OPEN_SQUARE_BRACKET, |
| 3697 TokenType.INDEX])) { | 3697 TokenType.INDEX])) { |
| 3698 return new ExpressionStatement.full(parseExpression2(), expect2(TokenT
ype.SEMICOLON)); | 3698 return new ExpressionStatement.full(parseExpression2(), expect2(TokenT
ype.SEMICOLON)); |
| 3699 } else if (matches4(peek(), TokenType.IDENTIFIER)) { | 3699 } else if (matches4(peek(), TokenType.IDENTIFIER)) { |
| 3700 Token afterType = skipTypeName(peek()); | 3700 Token afterType = skipTypeName(peek()); |
| 3701 if (afterType != null) { | 3701 if (afterType != null) { |
| 3702 if (matches4(afterType, TokenType.OPEN_PAREN) || (matches4(afterType
, TokenType.PERIOD) && matches4(afterType.next, TokenType.IDENTIFIER) && matches
4(afterType.next.next, TokenType.OPEN_PAREN))) { | 3702 if (matches4(afterType, TokenType.OPEN_PAREN) || (matches4(afterType
, TokenType.PERIOD) && matches4(afterType.next, TokenType.IDENTIFIER) && matches
4(afterType.next.next, TokenType.OPEN_PAREN))) { |
| 3703 return new ExpressionStatement.full(parseExpression2(), expect2(To
kenType.SEMICOLON)); | 3703 return new ExpressionStatement.full(parseExpression2(), expect2(To
kenType.SEMICOLON)); |
| 3704 } | 3704 } |
| 3705 } | 3705 } |
| 3706 } | 3706 } |
| 3707 return parseVariableDeclarationStatement(commentAndMetadata); | 3707 return parseVariableDeclarationStatement(commentAndMetadata); |
| 3708 } else if (identical(keyword, Keyword.NEW) || identical(keyword, Keyword.T
RUE) || identical(keyword, Keyword.FALSE) || identical(keyword, Keyword.NULL) ||
identical(keyword, Keyword.SUPER) || identical(keyword, Keyword.THIS)) { | 3708 } else if (identical(keyword, Keyword.NEW) || identical(keyword, Keyword.T
RUE) || identical(keyword, Keyword.FALSE) || identical(keyword, Keyword.NULL) ||
identical(keyword, Keyword.SUPER) || identical(keyword, Keyword.THIS)) { |
| 3709 return new ExpressionStatement.full(parseExpression2(), expect2(TokenTyp
e.SEMICOLON)); | 3709 return new ExpressionStatement.full(parseExpression2(), expect2(TokenTyp
e.SEMICOLON)); |
| 3710 } else { | 3710 } else { |
| 3711 reportError7(ParserErrorCode.MISSING_STATEMENT, []); | 3711 reportError8(ParserErrorCode.MISSING_STATEMENT, []); |
| 3712 return new EmptyStatement.full(createSyntheticToken2(TokenType.SEMICOLON
)); | 3712 return new EmptyStatement.full(createSyntheticToken2(TokenType.SEMICOLON
)); |
| 3713 } | 3713 } |
| 3714 } else if (matches5(TokenType.SEMICOLON)) { | 3714 } else if (matches5(TokenType.SEMICOLON)) { |
| 3715 return parseEmptyStatement(); | 3715 return parseEmptyStatement(); |
| 3716 } else if (isInitializedVariableDeclaration()) { | 3716 } else if (isInitializedVariableDeclaration()) { |
| 3717 return parseVariableDeclarationStatement(commentAndMetadata); | 3717 return parseVariableDeclarationStatement(commentAndMetadata); |
| 3718 } else if (isFunctionDeclaration()) { | 3718 } else if (isFunctionDeclaration()) { |
| 3719 return parseFunctionDeclarationStatement(); | 3719 return parseFunctionDeclarationStatement(); |
| 3720 } else if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { | 3720 } else if (matches5(TokenType.CLOSE_CURLY_BRACKET)) { |
| 3721 reportError7(ParserErrorCode.MISSING_STATEMENT, []); | 3721 reportError8(ParserErrorCode.MISSING_STATEMENT, []); |
| 3722 return new EmptyStatement.full(createSyntheticToken2(TokenType.SEMICOLON))
; | 3722 return new EmptyStatement.full(createSyntheticToken2(TokenType.SEMICOLON))
; |
| 3723 } else { | 3723 } else { |
| 3724 return new ExpressionStatement.full(parseExpression2(), expect2(TokenType.
SEMICOLON)); | 3724 return new ExpressionStatement.full(parseExpression2(), expect2(TokenType.
SEMICOLON)); |
| 3725 } | 3725 } |
| 3726 } | 3726 } |
| 3727 | 3727 |
| 3728 /** | 3728 /** |
| 3729 * Parse a normal formal parameter. | 3729 * Parse a normal formal parameter. |
| 3730 * | 3730 * |
| 3731 * <pre> | 3731 * <pre> |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3754 Token period = null; | 3754 Token period = null; |
| 3755 if (matches(Keyword.THIS)) { | 3755 if (matches(Keyword.THIS)) { |
| 3756 thisKeyword = andAdvance; | 3756 thisKeyword = andAdvance; |
| 3757 period = expect2(TokenType.PERIOD); | 3757 period = expect2(TokenType.PERIOD); |
| 3758 } | 3758 } |
| 3759 SimpleIdentifier identifier = parseSimpleIdentifier(); | 3759 SimpleIdentifier identifier = parseSimpleIdentifier(); |
| 3760 if (matches5(TokenType.OPEN_PAREN)) { | 3760 if (matches5(TokenType.OPEN_PAREN)) { |
| 3761 FormalParameterList parameters = parseFormalParameterList(); | 3761 FormalParameterList parameters = parseFormalParameterList(); |
| 3762 if (thisKeyword == null) { | 3762 if (thisKeyword == null) { |
| 3763 if (holder.keyword != null) { | 3763 if (holder.keyword != null) { |
| 3764 reportError8(ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR, holder.keyw
ord, []); | 3764 reportError9(ParserErrorCode.FUNCTION_TYPED_PARAMETER_VAR, holder.keyw
ord, []); |
| 3765 } | 3765 } |
| 3766 return new FunctionTypedFormalParameter.full(commentAndMetadata.comment,
commentAndMetadata.metadata, holder.type, identifier, parameters); | 3766 return new FunctionTypedFormalParameter.full(commentAndMetadata.comment,
commentAndMetadata.metadata, holder.type, identifier, parameters); |
| 3767 } else { | 3767 } else { |
| 3768 return new FieldFormalParameter.full(commentAndMetadata.comment, comment
AndMetadata.metadata, holder.keyword, holder.type, thisKeyword, period, identifi
er, parameters); | 3768 return new FieldFormalParameter.full(commentAndMetadata.comment, comment
AndMetadata.metadata, holder.keyword, holder.type, thisKeyword, period, identifi
er, parameters); |
| 3769 } | 3769 } |
| 3770 } | 3770 } |
| 3771 TypeName type = holder.type; | 3771 TypeName type = holder.type; |
| 3772 if (type != null) { | 3772 if (type != null) { |
| 3773 if (matches3(type.name.beginToken, Keyword.VOID)) { | 3773 if (matches3(type.name.beginToken, Keyword.VOID)) { |
| 3774 reportError8(ParserErrorCode.VOID_PARAMETER, type.name.beginToken, []); | 3774 reportError9(ParserErrorCode.VOID_PARAMETER, type.name.beginToken, []); |
| 3775 } else if (holder.keyword != null && matches3(holder.keyword, Keyword.VAR)
) { | 3775 } else if (holder.keyword != null && matches3(holder.keyword, Keyword.VAR)
) { |
| 3776 reportError8(ParserErrorCode.VAR_AND_TYPE, holder.keyword, []); | 3776 reportError9(ParserErrorCode.VAR_AND_TYPE, holder.keyword, []); |
| 3777 } | 3777 } |
| 3778 } | 3778 } |
| 3779 if (thisKeyword != null) { | 3779 if (thisKeyword != null) { |
| 3780 return new FieldFormalParameter.full(commentAndMetadata.comment, commentAn
dMetadata.metadata, holder.keyword, holder.type, thisKeyword, period, identifier
, null); | 3780 return new FieldFormalParameter.full(commentAndMetadata.comment, commentAn
dMetadata.metadata, holder.keyword, holder.type, thisKeyword, period, identifier
, null); |
| 3781 } | 3781 } |
| 3782 return new SimpleFormalParameter.full(commentAndMetadata.comment, commentAnd
Metadata.metadata, holder.keyword, holder.type, identifier); | 3782 return new SimpleFormalParameter.full(commentAndMetadata.comment, commentAnd
Metadata.metadata, holder.keyword, holder.type, identifier); |
| 3783 } | 3783 } |
| 3784 | 3784 |
| 3785 /** | 3785 /** |
| 3786 * Parse an operator declaration. | 3786 * Parse an operator declaration. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3798 * @param externalKeyword the 'external' token | 3798 * @param externalKeyword the 'external' token |
| 3799 * @param the return type that has already been parsed, or `null` if there was
no return | 3799 * @param the return type that has already been parsed, or `null` if there was
no return |
| 3800 * type | 3800 * type |
| 3801 * @return the operator declaration that was parsed | 3801 * @return the operator declaration that was parsed |
| 3802 */ | 3802 */ |
| 3803 MethodDeclaration parseOperator(CommentAndMetadata commentAndMetadata, Token e
xternalKeyword, TypeName returnType) { | 3803 MethodDeclaration parseOperator(CommentAndMetadata commentAndMetadata, Token e
xternalKeyword, TypeName returnType) { |
| 3804 Token operatorKeyword; | 3804 Token operatorKeyword; |
| 3805 if (matches(Keyword.OPERATOR)) { | 3805 if (matches(Keyword.OPERATOR)) { |
| 3806 operatorKeyword = andAdvance; | 3806 operatorKeyword = andAdvance; |
| 3807 } else { | 3807 } else { |
| 3808 reportError8(ParserErrorCode.MISSING_KEYWORD_OPERATOR, _currentToken, []); | 3808 reportError9(ParserErrorCode.MISSING_KEYWORD_OPERATOR, _currentToken, []); |
| 3809 operatorKeyword = createSyntheticToken(Keyword.OPERATOR); | 3809 operatorKeyword = createSyntheticToken(Keyword.OPERATOR); |
| 3810 } | 3810 } |
| 3811 if (!_currentToken.isUserDefinableOperator) { | 3811 if (!_currentToken.isUserDefinableOperator) { |
| 3812 reportError7(ParserErrorCode.NON_USER_DEFINABLE_OPERATOR, [_currentToken.l
exeme]); | 3812 reportError8(ParserErrorCode.NON_USER_DEFINABLE_OPERATOR, [_currentToken.l
exeme]); |
| 3813 } | 3813 } |
| 3814 SimpleIdentifier name = new SimpleIdentifier.full(andAdvance); | 3814 SimpleIdentifier name = new SimpleIdentifier.full(andAdvance); |
| 3815 if (matches5(TokenType.EQ)) { | 3815 if (matches5(TokenType.EQ)) { |
| 3816 Token previous = _currentToken.previous; | 3816 Token previous = _currentToken.previous; |
| 3817 if ((matches4(previous, TokenType.EQ_EQ) || matches4(previous, TokenType.B
ANG_EQ)) && _currentToken.offset == previous.offset + 2) { | 3817 if ((matches4(previous, TokenType.EQ_EQ) || matches4(previous, TokenType.B
ANG_EQ)) && _currentToken.offset == previous.offset + 2) { |
| 3818 reportError7(ParserErrorCode.INVALID_OPERATOR, ["${previous.lexeme}${_cu
rrentToken.lexeme}"]); | 3818 reportError8(ParserErrorCode.INVALID_OPERATOR, ["${previous.lexeme}${_cu
rrentToken.lexeme}"]); |
| 3819 advance(); | 3819 advance(); |
| 3820 } | 3820 } |
| 3821 } | 3821 } |
| 3822 FormalParameterList parameters = parseFormalParameterList(); | 3822 FormalParameterList parameters = parseFormalParameterList(); |
| 3823 validateFormalParameterList(parameters); | 3823 validateFormalParameterList(parameters); |
| 3824 FunctionBody body = parseFunctionBody(true, ParserErrorCode.MISSING_FUNCTION
_BODY, false); | 3824 FunctionBody body = parseFunctionBody(true, ParserErrorCode.MISSING_FUNCTION
_BODY, false); |
| 3825 if (externalKeyword != null && body is! EmptyFunctionBody) { | 3825 if (externalKeyword != null && body is! EmptyFunctionBody) { |
| 3826 reportError7(ParserErrorCode.EXTERNAL_OPERATOR_WITH_BODY, []); | 3826 reportError8(ParserErrorCode.EXTERNAL_OPERATOR_WITH_BODY, []); |
| 3827 } | 3827 } |
| 3828 return new MethodDeclaration.full(commentAndMetadata.comment, commentAndMeta
data.metadata, externalKeyword, null, returnType, null, operatorKeyword, name, p
arameters, body); | 3828 return new MethodDeclaration.full(commentAndMetadata.comment, commentAndMeta
data.metadata, externalKeyword, null, returnType, null, operatorKeyword, name, p
arameters, body); |
| 3829 } | 3829 } |
| 3830 | 3830 |
| 3831 /** | 3831 /** |
| 3832 * Parse a return type if one is given, otherwise return `null` without advanc
ing. | 3832 * Parse a return type if one is given, otherwise return `null` without advanc
ing. |
| 3833 * | 3833 * |
| 3834 * @return the return type that was parsed | 3834 * @return the return type that was parsed |
| 3835 */ | 3835 */ |
| 3836 TypeName parseOptionalReturnType() { | 3836 TypeName parseOptionalReturnType() { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3901 } else { | 3901 } else { |
| 3902 operand = parseAssignableSelector(operand, true); | 3902 operand = parseAssignableSelector(operand, true); |
| 3903 } | 3903 } |
| 3904 } while (matches5(TokenType.OPEN_SQUARE_BRACKET) || matches5(TokenType.PER
IOD) || matches5(TokenType.OPEN_PAREN)); | 3904 } while (matches5(TokenType.OPEN_SQUARE_BRACKET) || matches5(TokenType.PER
IOD) || matches5(TokenType.OPEN_PAREN)); |
| 3905 return operand; | 3905 return operand; |
| 3906 } | 3906 } |
| 3907 if (!_currentToken.type.isIncrementOperator) { | 3907 if (!_currentToken.type.isIncrementOperator) { |
| 3908 return operand; | 3908 return operand; |
| 3909 } | 3909 } |
| 3910 if (operand is Literal || operand is FunctionExpressionInvocation) { | 3910 if (operand is Literal || operand is FunctionExpressionInvocation) { |
| 3911 reportError7(ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, []); | 3911 reportError8(ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR, []); |
| 3912 } | 3912 } |
| 3913 Token operator = andAdvance; | 3913 Token operator = andAdvance; |
| 3914 return new PostfixExpression.full(operand, operator); | 3914 return new PostfixExpression.full(operand, operator); |
| 3915 } | 3915 } |
| 3916 | 3916 |
| 3917 /** | 3917 /** |
| 3918 * Parse a prefixed identifier. | 3918 * Parse a prefixed identifier. |
| 3919 * | 3919 * |
| 3920 * <pre> | 3920 * <pre> |
| 3921 * prefixedIdentifier ::= | 3921 * prefixedIdentifier ::= |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4014 } | 4014 } |
| 4015 Token leftParenthesis = andAdvance; | 4015 Token leftParenthesis = andAdvance; |
| 4016 Expression expression = parseExpression2(); | 4016 Expression expression = parseExpression2(); |
| 4017 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); | 4017 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); |
| 4018 return new ParenthesizedExpression.full(leftParenthesis, expression, right
Parenthesis); | 4018 return new ParenthesizedExpression.full(leftParenthesis, expression, right
Parenthesis); |
| 4019 } else if (matches5(TokenType.LT)) { | 4019 } else if (matches5(TokenType.LT)) { |
| 4020 return parseListOrMapLiteral(null); | 4020 return parseListOrMapLiteral(null); |
| 4021 } else if (matches5(TokenType.QUESTION)) { | 4021 } else if (matches5(TokenType.QUESTION)) { |
| 4022 return parseArgumentDefinitionTest(); | 4022 return parseArgumentDefinitionTest(); |
| 4023 } else if (matches(Keyword.VOID)) { | 4023 } else if (matches(Keyword.VOID)) { |
| 4024 reportError7(ParserErrorCode.UNEXPECTED_TOKEN, [_currentToken.lexeme]); | 4024 reportError8(ParserErrorCode.UNEXPECTED_TOKEN, [_currentToken.lexeme]); |
| 4025 advance(); | 4025 advance(); |
| 4026 return parsePrimaryExpression(); | 4026 return parsePrimaryExpression(); |
| 4027 } else if (matches5(TokenType.HASH)) { | 4027 } else if (matches5(TokenType.HASH)) { |
| 4028 return parseSymbolLiteral(); | 4028 return parseSymbolLiteral(); |
| 4029 } else { | 4029 } else { |
| 4030 reportError7(ParserErrorCode.MISSING_IDENTIFIER, []); | 4030 reportError8(ParserErrorCode.MISSING_IDENTIFIER, []); |
| 4031 return createSyntheticIdentifier(); | 4031 return createSyntheticIdentifier(); |
| 4032 } | 4032 } |
| 4033 } | 4033 } |
| 4034 | 4034 |
| 4035 /** | 4035 /** |
| 4036 * Parse a redirecting constructor invocation. | 4036 * Parse a redirecting constructor invocation. |
| 4037 * | 4037 * |
| 4038 * <pre> | 4038 * <pre> |
| 4039 * redirectingConstructorInvocation ::= | 4039 * redirectingConstructorInvocation ::= |
| 4040 * 'this' ('.' identifier)? arguments | 4040 * 'this' ('.' identifier)? arguments |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4160 * type | 4160 * type |
| 4161 * @return the setter that was parsed | 4161 * @return the setter that was parsed |
| 4162 */ | 4162 */ |
| 4163 MethodDeclaration parseSetter(CommentAndMetadata commentAndMetadata, Token ext
ernalKeyword, Token staticKeyword, TypeName returnType) { | 4163 MethodDeclaration parseSetter(CommentAndMetadata commentAndMetadata, Token ext
ernalKeyword, Token staticKeyword, TypeName returnType) { |
| 4164 Token propertyKeyword = expect(Keyword.SET); | 4164 Token propertyKeyword = expect(Keyword.SET); |
| 4165 SimpleIdentifier name = parseSimpleIdentifier(); | 4165 SimpleIdentifier name = parseSimpleIdentifier(); |
| 4166 FormalParameterList parameters = parseFormalParameterList(); | 4166 FormalParameterList parameters = parseFormalParameterList(); |
| 4167 validateFormalParameterList(parameters); | 4167 validateFormalParameterList(parameters); |
| 4168 FunctionBody body = parseFunctionBody(externalKeyword != null || staticKeywo
rd == null, ParserErrorCode.STATIC_SETTER_WITHOUT_BODY, false); | 4168 FunctionBody body = parseFunctionBody(externalKeyword != null || staticKeywo
rd == null, ParserErrorCode.STATIC_SETTER_WITHOUT_BODY, false); |
| 4169 if (externalKeyword != null && body is! EmptyFunctionBody) { | 4169 if (externalKeyword != null && body is! EmptyFunctionBody) { |
| 4170 reportError7(ParserErrorCode.EXTERNAL_SETTER_WITH_BODY, []); | 4170 reportError8(ParserErrorCode.EXTERNAL_SETTER_WITH_BODY, []); |
| 4171 } | 4171 } |
| 4172 return new MethodDeclaration.full(commentAndMetadata.comment, commentAndMeta
data.metadata, externalKeyword, staticKeyword, returnType, propertyKeyword, null
, name, parameters, body); | 4172 return new MethodDeclaration.full(commentAndMetadata.comment, commentAndMeta
data.metadata, externalKeyword, staticKeyword, returnType, propertyKeyword, null
, name, parameters, body); |
| 4173 } | 4173 } |
| 4174 | 4174 |
| 4175 /** | 4175 /** |
| 4176 * Parse a shift expression. | 4176 * Parse a shift expression. |
| 4177 * | 4177 * |
| 4178 * <pre> | 4178 * <pre> |
| 4179 * shiftExpression ::= | 4179 * shiftExpression ::= |
| 4180 * additiveExpression (shiftOperator additiveExpression)* | 4180 * additiveExpression (shiftOperator additiveExpression)* |
| (...skipping 23 matching lines...) Expand all Loading... |
| 4204 * identifier ::= | 4204 * identifier ::= |
| 4205 * IDENTIFIER | 4205 * IDENTIFIER |
| 4206 * </pre> | 4206 * </pre> |
| 4207 * | 4207 * |
| 4208 * @return the simple identifier that was parsed | 4208 * @return the simple identifier that was parsed |
| 4209 */ | 4209 */ |
| 4210 SimpleIdentifier parseSimpleIdentifier() { | 4210 SimpleIdentifier parseSimpleIdentifier() { |
| 4211 if (matchesIdentifier()) { | 4211 if (matchesIdentifier()) { |
| 4212 return new SimpleIdentifier.full(andAdvance); | 4212 return new SimpleIdentifier.full(andAdvance); |
| 4213 } | 4213 } |
| 4214 reportError7(ParserErrorCode.MISSING_IDENTIFIER, []); | 4214 reportError8(ParserErrorCode.MISSING_IDENTIFIER, []); |
| 4215 return createSyntheticIdentifier(); | 4215 return createSyntheticIdentifier(); |
| 4216 } | 4216 } |
| 4217 | 4217 |
| 4218 /** | 4218 /** |
| 4219 * Parse a statement. | 4219 * Parse a statement. |
| 4220 * | 4220 * |
| 4221 * <pre> | 4221 * <pre> |
| 4222 * statement ::= | 4222 * statement ::= |
| 4223 * label* nonLabeledStatement | 4223 * label* nonLabeledStatement |
| 4224 * </pre> | 4224 * </pre> |
| (...skipping 23 matching lines...) Expand all Loading... |
| 4248 * </pre> | 4248 * </pre> |
| 4249 * | 4249 * |
| 4250 * @return the statements that were parsed | 4250 * @return the statements that were parsed |
| 4251 */ | 4251 */ |
| 4252 List<Statement> parseStatements2() { | 4252 List<Statement> parseStatements2() { |
| 4253 List<Statement> statements = new List<Statement>(); | 4253 List<Statement> statements = new List<Statement>(); |
| 4254 Token statementStart = _currentToken; | 4254 Token statementStart = _currentToken; |
| 4255 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET)
&& !isSwitchMember()) { | 4255 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET)
&& !isSwitchMember()) { |
| 4256 statements.add(parseStatement2()); | 4256 statements.add(parseStatement2()); |
| 4257 if (identical(_currentToken, statementStart)) { | 4257 if (identical(_currentToken, statementStart)) { |
| 4258 reportError8(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); | 4258 reportError9(ParserErrorCode.UNEXPECTED_TOKEN, _currentToken, [_currentT
oken.lexeme]); |
| 4259 advance(); | 4259 advance(); |
| 4260 } | 4260 } |
| 4261 statementStart = _currentToken; | 4261 statementStart = _currentToken; |
| 4262 } | 4262 } |
| 4263 return statements; | 4263 return statements; |
| 4264 } | 4264 } |
| 4265 | 4265 |
| 4266 /** | 4266 /** |
| 4267 * Parse a string literal that contains interpolations. | 4267 * Parse a string literal that contains interpolations. |
| 4268 * | 4268 * |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4312 List<StringLiteral> strings = new List<StringLiteral>(); | 4312 List<StringLiteral> strings = new List<StringLiteral>(); |
| 4313 while (matches5(TokenType.STRING)) { | 4313 while (matches5(TokenType.STRING)) { |
| 4314 Token string = andAdvance; | 4314 Token string = andAdvance; |
| 4315 if (matches5(TokenType.STRING_INTERPOLATION_EXPRESSION) || matches5(TokenT
ype.STRING_INTERPOLATION_IDENTIFIER)) { | 4315 if (matches5(TokenType.STRING_INTERPOLATION_EXPRESSION) || matches5(TokenT
ype.STRING_INTERPOLATION_IDENTIFIER)) { |
| 4316 strings.add(parseStringInterpolation(string)); | 4316 strings.add(parseStringInterpolation(string)); |
| 4317 } else { | 4317 } else { |
| 4318 strings.add(new SimpleStringLiteral.full(string, computeStringValue(stri
ng.lexeme, true, true))); | 4318 strings.add(new SimpleStringLiteral.full(string, computeStringValue(stri
ng.lexeme, true, true))); |
| 4319 } | 4319 } |
| 4320 } | 4320 } |
| 4321 if (strings.length < 1) { | 4321 if (strings.length < 1) { |
| 4322 reportError7(ParserErrorCode.EXPECTED_STRING_LITERAL, []); | 4322 reportError8(ParserErrorCode.EXPECTED_STRING_LITERAL, []); |
| 4323 return createSyntheticStringLiteral(); | 4323 return createSyntheticStringLiteral(); |
| 4324 } else if (strings.length == 1) { | 4324 } else if (strings.length == 1) { |
| 4325 return strings[0]; | 4325 return strings[0]; |
| 4326 } else { | 4326 } else { |
| 4327 return new AdjacentStrings.full(strings); | 4327 return new AdjacentStrings.full(strings); |
| 4328 } | 4328 } |
| 4329 } | 4329 } |
| 4330 | 4330 |
| 4331 /** | 4331 /** |
| 4332 * Parse a super constructor invocation. | 4332 * Parse a super constructor invocation. |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4377 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); | 4377 Token rightParenthesis = expect2(TokenType.CLOSE_PAREN); |
| 4378 Token leftBracket = expect2(TokenType.OPEN_CURLY_BRACKET); | 4378 Token leftBracket = expect2(TokenType.OPEN_CURLY_BRACKET); |
| 4379 Token defaultKeyword = null; | 4379 Token defaultKeyword = null; |
| 4380 List<SwitchMember> members = new List<SwitchMember>(); | 4380 List<SwitchMember> members = new List<SwitchMember>(); |
| 4381 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET
)) { | 4381 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRACKET
)) { |
| 4382 List<Label> labels = new List<Label>(); | 4382 List<Label> labels = new List<Label>(); |
| 4383 while (matchesIdentifier() && matches4(peek(), TokenType.COLON)) { | 4383 while (matchesIdentifier() && matches4(peek(), TokenType.COLON)) { |
| 4384 SimpleIdentifier identifier = parseSimpleIdentifier(); | 4384 SimpleIdentifier identifier = parseSimpleIdentifier(); |
| 4385 String label = identifier.token.lexeme; | 4385 String label = identifier.token.lexeme; |
| 4386 if (definedLabels.contains(label)) { | 4386 if (definedLabels.contains(label)) { |
| 4387 reportError8(ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT, id
entifier.token, [label]); | 4387 reportError9(ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT, id
entifier.token, [label]); |
| 4388 } else { | 4388 } else { |
| 4389 javaSetAdd(definedLabels, label); | 4389 javaSetAdd(definedLabels, label); |
| 4390 } | 4390 } |
| 4391 Token colon = expect2(TokenType.COLON); | 4391 Token colon = expect2(TokenType.COLON); |
| 4392 labels.add(new Label.full(identifier, colon)); | 4392 labels.add(new Label.full(identifier, colon)); |
| 4393 } | 4393 } |
| 4394 if (matches(Keyword.CASE)) { | 4394 if (matches(Keyword.CASE)) { |
| 4395 Token caseKeyword = andAdvance; | 4395 Token caseKeyword = andAdvance; |
| 4396 Expression caseExpression = parseExpression2(); | 4396 Expression caseExpression = parseExpression2(); |
| 4397 Token colon = expect2(TokenType.COLON); | 4397 Token colon = expect2(TokenType.COLON); |
| 4398 members.add(new SwitchCase.full(labels, caseKeyword, caseExpression, c
olon, parseStatements2())); | 4398 members.add(new SwitchCase.full(labels, caseKeyword, caseExpression, c
olon, parseStatements2())); |
| 4399 if (defaultKeyword != null) { | 4399 if (defaultKeyword != null) { |
| 4400 reportError8(ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, cas
eKeyword, []); | 4400 reportError9(ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, cas
eKeyword, []); |
| 4401 } | 4401 } |
| 4402 } else if (matches(Keyword.DEFAULT)) { | 4402 } else if (matches(Keyword.DEFAULT)) { |
| 4403 if (defaultKeyword != null) { | 4403 if (defaultKeyword != null) { |
| 4404 reportError8(ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, peek
(), []); | 4404 reportError9(ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, peek
(), []); |
| 4405 } | 4405 } |
| 4406 defaultKeyword = andAdvance; | 4406 defaultKeyword = andAdvance; |
| 4407 Token colon = expect2(TokenType.COLON); | 4407 Token colon = expect2(TokenType.COLON); |
| 4408 members.add(new SwitchDefault.full(labels, defaultKeyword, colon, pars
eStatements2())); | 4408 members.add(new SwitchDefault.full(labels, defaultKeyword, colon, pars
eStatements2())); |
| 4409 } else { | 4409 } else { |
| 4410 reportError7(ParserErrorCode.EXPECTED_CASE_OR_DEFAULT, []); | 4410 reportError8(ParserErrorCode.EXPECTED_CASE_OR_DEFAULT, []); |
| 4411 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRA
CKET) && !matches(Keyword.CASE) && !matches(Keyword.DEFAULT)) { | 4411 while (!matches5(TokenType.EOF) && !matches5(TokenType.CLOSE_CURLY_BRA
CKET) && !matches(Keyword.CASE) && !matches(Keyword.DEFAULT)) { |
| 4412 advance(); | 4412 advance(); |
| 4413 } | 4413 } |
| 4414 } | 4414 } |
| 4415 } | 4415 } |
| 4416 Token rightBracket = expect2(TokenType.CLOSE_CURLY_BRACKET); | 4416 Token rightBracket = expect2(TokenType.CLOSE_CURLY_BRACKET); |
| 4417 return new SwitchStatement.full(keyword, leftParenthesis, expression, righ
tParenthesis, leftBracket, members, rightBracket); | 4417 return new SwitchStatement.full(keyword, leftParenthesis, expression, righ
tParenthesis, leftBracket, members, rightBracket); |
| 4418 } finally { | 4418 } finally { |
| 4419 _inSwitch = wasInSwitch; | 4419 _inSwitch = wasInSwitch; |
| 4420 } | 4420 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 4433 SymbolLiteral parseSymbolLiteral() { | 4433 SymbolLiteral parseSymbolLiteral() { |
| 4434 Token poundSign = andAdvance; | 4434 Token poundSign = andAdvance; |
| 4435 List<Token> components = new List<Token>(); | 4435 List<Token> components = new List<Token>(); |
| 4436 if (matches5(TokenType.IDENTIFIER)) { | 4436 if (matches5(TokenType.IDENTIFIER)) { |
| 4437 components.add(andAdvance); | 4437 components.add(andAdvance); |
| 4438 while (matches5(TokenType.PERIOD)) { | 4438 while (matches5(TokenType.PERIOD)) { |
| 4439 advance(); | 4439 advance(); |
| 4440 if (matches5(TokenType.IDENTIFIER)) { | 4440 if (matches5(TokenType.IDENTIFIER)) { |
| 4441 components.add(andAdvance); | 4441 components.add(andAdvance); |
| 4442 } else { | 4442 } else { |
| 4443 reportError7(ParserErrorCode.MISSING_IDENTIFIER, []); | 4443 reportError8(ParserErrorCode.MISSING_IDENTIFIER, []); |
| 4444 components.add(createSyntheticToken2(TokenType.IDENTIFIER)); | 4444 components.add(createSyntheticToken2(TokenType.IDENTIFIER)); |
| 4445 break; | 4445 break; |
| 4446 } | 4446 } |
| 4447 } | 4447 } |
| 4448 } else if (_currentToken.isOperator) { | 4448 } else if (_currentToken.isOperator) { |
| 4449 components.add(andAdvance); | 4449 components.add(andAdvance); |
| 4450 } else { | 4450 } else { |
| 4451 reportError7(ParserErrorCode.MISSING_IDENTIFIER, []); | 4451 reportError8(ParserErrorCode.MISSING_IDENTIFIER, []); |
| 4452 components.add(createSyntheticToken2(TokenType.IDENTIFIER)); | 4452 components.add(createSyntheticToken2(TokenType.IDENTIFIER)); |
| 4453 } | 4453 } |
| 4454 return new SymbolLiteral.full(poundSign, new List.from(components)); | 4454 return new SymbolLiteral.full(poundSign, new List.from(components)); |
| 4455 } | 4455 } |
| 4456 | 4456 |
| 4457 /** | 4457 /** |
| 4458 * Parse a throw expression. | 4458 * Parse a throw expression. |
| 4459 * | 4459 * |
| 4460 * <pre> | 4460 * <pre> |
| 4461 * throwExpression ::= | 4461 * throwExpression ::= |
| 4462 * 'throw' expression | 4462 * 'throw' expression |
| 4463 * </pre> | 4463 * </pre> |
| 4464 * | 4464 * |
| 4465 * @return the throw expression that was parsed | 4465 * @return the throw expression that was parsed |
| 4466 */ | 4466 */ |
| 4467 Expression parseThrowExpression() { | 4467 Expression parseThrowExpression() { |
| 4468 Token keyword = expect(Keyword.THROW); | 4468 Token keyword = expect(Keyword.THROW); |
| 4469 if (matches5(TokenType.SEMICOLON) || matches5(TokenType.CLOSE_PAREN)) { | 4469 if (matches5(TokenType.SEMICOLON) || matches5(TokenType.CLOSE_PAREN)) { |
| 4470 reportError8(ParserErrorCode.MISSING_EXPRESSION_IN_THROW, _currentToken, [
]); | 4470 reportError9(ParserErrorCode.MISSING_EXPRESSION_IN_THROW, _currentToken, [
]); |
| 4471 return new ThrowExpression.full(keyword, createSyntheticIdentifier()); | 4471 return new ThrowExpression.full(keyword, createSyntheticIdentifier()); |
| 4472 } | 4472 } |
| 4473 Expression expression = parseExpression2(); | 4473 Expression expression = parseExpression2(); |
| 4474 return new ThrowExpression.full(keyword, expression); | 4474 return new ThrowExpression.full(keyword, expression); |
| 4475 } | 4475 } |
| 4476 | 4476 |
| 4477 /** | 4477 /** |
| 4478 * Parse a throw expression. | 4478 * Parse a throw expression. |
| 4479 * | 4479 * |
| 4480 * <pre> | 4480 * <pre> |
| 4481 * throwExpressionWithoutCascade ::= | 4481 * throwExpressionWithoutCascade ::= |
| 4482 * 'throw' expressionWithoutCascade | 4482 * 'throw' expressionWithoutCascade |
| 4483 * </pre> | 4483 * </pre> |
| 4484 * | 4484 * |
| 4485 * @return the throw expression that was parsed | 4485 * @return the throw expression that was parsed |
| 4486 */ | 4486 */ |
| 4487 Expression parseThrowExpressionWithoutCascade() { | 4487 Expression parseThrowExpressionWithoutCascade() { |
| 4488 Token keyword = expect(Keyword.THROW); | 4488 Token keyword = expect(Keyword.THROW); |
| 4489 if (matches5(TokenType.SEMICOLON) || matches5(TokenType.CLOSE_PAREN)) { | 4489 if (matches5(TokenType.SEMICOLON) || matches5(TokenType.CLOSE_PAREN)) { |
| 4490 reportError8(ParserErrorCode.MISSING_EXPRESSION_IN_THROW, _currentToken, [
]); | 4490 reportError9(ParserErrorCode.MISSING_EXPRESSION_IN_THROW, _currentToken, [
]); |
| 4491 return new ThrowExpression.full(keyword, createSyntheticIdentifier()); | 4491 return new ThrowExpression.full(keyword, createSyntheticIdentifier()); |
| 4492 } | 4492 } |
| 4493 Expression expression = parseExpressionWithoutCascade(); | 4493 Expression expression = parseExpressionWithoutCascade(); |
| 4494 return new ThrowExpression.full(keyword, expression); | 4494 return new ThrowExpression.full(keyword, expression); |
| 4495 } | 4495 } |
| 4496 | 4496 |
| 4497 /** | 4497 /** |
| 4498 * Parse a try statement. | 4498 * Parse a try statement. |
| 4499 * | 4499 * |
| 4500 * <pre> | 4500 * <pre> |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4544 } | 4544 } |
| 4545 Block catchBody = parseBlock(); | 4545 Block catchBody = parseBlock(); |
| 4546 catchClauses.add(new CatchClause.full(onKeyword, exceptionType, catchKeywo
rd, leftParenthesis, exceptionParameter, comma, stackTraceParameter, rightParent
hesis, catchBody)); | 4546 catchClauses.add(new CatchClause.full(onKeyword, exceptionType, catchKeywo
rd, leftParenthesis, exceptionParameter, comma, stackTraceParameter, rightParent
hesis, catchBody)); |
| 4547 } | 4547 } |
| 4548 Token finallyKeyword = null; | 4548 Token finallyKeyword = null; |
| 4549 if (matches(Keyword.FINALLY)) { | 4549 if (matches(Keyword.FINALLY)) { |
| 4550 finallyKeyword = andAdvance; | 4550 finallyKeyword = andAdvance; |
| 4551 finallyClause = parseBlock(); | 4551 finallyClause = parseBlock(); |
| 4552 } else { | 4552 } else { |
| 4553 if (catchClauses.isEmpty) { | 4553 if (catchClauses.isEmpty) { |
| 4554 reportError7(ParserErrorCode.MISSING_CATCH_OR_FINALLY, []); | 4554 reportError8(ParserErrorCode.MISSING_CATCH_OR_FINALLY, []); |
| 4555 } | 4555 } |
| 4556 } | 4556 } |
| 4557 return new TryStatement.full(tryKeyword, body, catchClauses, finallyKeyword,
finallyClause); | 4557 return new TryStatement.full(tryKeyword, body, catchClauses, finallyKeyword,
finallyClause); |
| 4558 } | 4558 } |
| 4559 | 4559 |
| 4560 /** | 4560 /** |
| 4561 * Parse a type alias. | 4561 * Parse a type alias. |
| 4562 * | 4562 * |
| 4563 * <pre> | 4563 * <pre> |
| 4564 * typeAlias ::= | 4564 * typeAlias ::= |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4630 * <pre> | 4630 * <pre> |
| 4631 * type ::= | 4631 * type ::= |
| 4632 * qualified typeArguments? | 4632 * qualified typeArguments? |
| 4633 * </pre> | 4633 * </pre> |
| 4634 * | 4634 * |
| 4635 * @return the type name that was parsed | 4635 * @return the type name that was parsed |
| 4636 */ | 4636 */ |
| 4637 TypeName parseTypeName() { | 4637 TypeName parseTypeName() { |
| 4638 Identifier typeName; | 4638 Identifier typeName; |
| 4639 if (matches(Keyword.VAR)) { | 4639 if (matches(Keyword.VAR)) { |
| 4640 reportError7(ParserErrorCode.VAR_AS_TYPE_NAME, []); | 4640 reportError8(ParserErrorCode.VAR_AS_TYPE_NAME, []); |
| 4641 typeName = new SimpleIdentifier.full(andAdvance); | 4641 typeName = new SimpleIdentifier.full(andAdvance); |
| 4642 } else if (matchesIdentifier()) { | 4642 } else if (matchesIdentifier()) { |
| 4643 typeName = parsePrefixedIdentifier(); | 4643 typeName = parsePrefixedIdentifier(); |
| 4644 } else { | 4644 } else { |
| 4645 typeName = createSyntheticIdentifier(); | 4645 typeName = createSyntheticIdentifier(); |
| 4646 reportError7(ParserErrorCode.EXPECTED_TYPE_NAME, []); | 4646 reportError8(ParserErrorCode.EXPECTED_TYPE_NAME, []); |
| 4647 } | 4647 } |
| 4648 TypeArgumentList typeArguments = null; | 4648 TypeArgumentList typeArguments = null; |
| 4649 if (matches5(TokenType.LT)) { | 4649 if (matches5(TokenType.LT)) { |
| 4650 typeArguments = parseTypeArgumentList(); | 4650 typeArguments = parseTypeArgumentList(); |
| 4651 } | 4651 } |
| 4652 return new TypeName.full(typeName, typeArguments); | 4652 return new TypeName.full(typeName, typeArguments); |
| 4653 } | 4653 } |
| 4654 | 4654 |
| 4655 /** | 4655 /** |
| 4656 * Parse a type parameter. | 4656 * Parse a type parameter. |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4726 } | 4726 } |
| 4727 if (identical(operator.type, TokenType.MINUS_MINUS)) { | 4727 if (identical(operator.type, TokenType.MINUS_MINUS)) { |
| 4728 int offset = operator.offset; | 4728 int offset = operator.offset; |
| 4729 Token firstOperator = new Token(TokenType.MINUS, offset); | 4729 Token firstOperator = new Token(TokenType.MINUS, offset); |
| 4730 Token secondOperator = new Token(TokenType.MINUS, offset + 1); | 4730 Token secondOperator = new Token(TokenType.MINUS, offset + 1); |
| 4731 secondOperator.setNext(_currentToken); | 4731 secondOperator.setNext(_currentToken); |
| 4732 firstOperator.setNext(secondOperator); | 4732 firstOperator.setNext(secondOperator); |
| 4733 operator.previous.setNext(firstOperator); | 4733 operator.previous.setNext(firstOperator); |
| 4734 return new PrefixExpression.full(firstOperator, new PrefixExpression.f
ull(secondOperator, new SuperExpression.full(andAdvance))); | 4734 return new PrefixExpression.full(firstOperator, new PrefixExpression.f
ull(secondOperator, new SuperExpression.full(andAdvance))); |
| 4735 } else { | 4735 } else { |
| 4736 reportError7(ParserErrorCode.INVALID_OPERATOR_FOR_SUPER, [operator.lex
eme]); | 4736 reportError8(ParserErrorCode.INVALID_OPERATOR_FOR_SUPER, [operator.lex
eme]); |
| 4737 return new PrefixExpression.full(operator, new SuperExpression.full(an
dAdvance)); | 4737 return new PrefixExpression.full(operator, new SuperExpression.full(an
dAdvance)); |
| 4738 } | 4738 } |
| 4739 } | 4739 } |
| 4740 return new PrefixExpression.full(operator, parseAssignableExpression(false
)); | 4740 return new PrefixExpression.full(operator, parseAssignableExpression(false
)); |
| 4741 } else if (matches5(TokenType.PLUS)) { | 4741 } else if (matches5(TokenType.PLUS)) { |
| 4742 reportError7(ParserErrorCode.MISSING_IDENTIFIER, []); | 4742 reportError8(ParserErrorCode.MISSING_IDENTIFIER, []); |
| 4743 return createSyntheticIdentifier(); | 4743 return createSyntheticIdentifier(); |
| 4744 } | 4744 } |
| 4745 return parsePostfixExpression(); | 4745 return parsePostfixExpression(); |
| 4746 } | 4746 } |
| 4747 | 4747 |
| 4748 /** | 4748 /** |
| 4749 * Parse a variable declaration. | 4749 * Parse a variable declaration. |
| 4750 * | 4750 * |
| 4751 * <pre> | 4751 * <pre> |
| 4752 * variableDeclaration ::= | 4752 * variableDeclaration ::= |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4793 * | 4793 * |
| 4794 * @param commentAndMetadata the metadata to be associated with the variable d
eclaration list, or | 4794 * @param commentAndMetadata the metadata to be associated with the variable d
eclaration list, or |
| 4795 * `null` if there is no attempt at parsing the comment and metadata | 4795 * `null` if there is no attempt at parsing the comment and metadata |
| 4796 * @param keyword the token representing the 'final', 'const' or 'var' keyword
, or `null` if | 4796 * @param keyword the token representing the 'final', 'const' or 'var' keyword
, or `null` if |
| 4797 * there is no keyword | 4797 * there is no keyword |
| 4798 * @param type the type of the variables in the list | 4798 * @param type the type of the variables in the list |
| 4799 * @return the variable declaration list that was parsed | 4799 * @return the variable declaration list that was parsed |
| 4800 */ | 4800 */ |
| 4801 VariableDeclarationList parseVariableDeclarationList2(CommentAndMetadata comme
ntAndMetadata, Token keyword, TypeName type) { | 4801 VariableDeclarationList parseVariableDeclarationList2(CommentAndMetadata comme
ntAndMetadata, Token keyword, TypeName type) { |
| 4802 if (type != null && keyword != null && matches3(keyword, Keyword.VAR)) { | 4802 if (type != null && keyword != null && matches3(keyword, Keyword.VAR)) { |
| 4803 reportError8(ParserErrorCode.VAR_AND_TYPE, keyword, []); | 4803 reportError9(ParserErrorCode.VAR_AND_TYPE, keyword, []); |
| 4804 } | 4804 } |
| 4805 List<VariableDeclaration> variables = new List<VariableDeclaration>(); | 4805 List<VariableDeclaration> variables = new List<VariableDeclaration>(); |
| 4806 variables.add(parseVariableDeclaration()); | 4806 variables.add(parseVariableDeclaration()); |
| 4807 while (matches5(TokenType.COMMA)) { | 4807 while (matches5(TokenType.COMMA)) { |
| 4808 advance(); | 4808 advance(); |
| 4809 variables.add(parseVariableDeclaration()); | 4809 variables.add(parseVariableDeclaration()); |
| 4810 } | 4810 } |
| 4811 return new VariableDeclarationList.full(commentAndMetadata != null ? comment
AndMetadata.comment : null, commentAndMetadata != null ? commentAndMetadata.meta
data : null, keyword, type, variables); | 4811 return new VariableDeclarationList.full(commentAndMetadata != null ? comment
AndMetadata.comment : null, commentAndMetadata != null ? commentAndMetadata.meta
data : null, keyword, type, variables); |
| 4812 } | 4812 } |
| 4813 | 4813 |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4928 void reportError(ParserErrorCode errorCode, ASTNode node, List<Object> argumen
ts) { | 4928 void reportError(ParserErrorCode errorCode, ASTNode node, List<Object> argumen
ts) { |
| 4929 _errorListener.onError(new AnalysisError.con2(_source, node.offset, node.len
gth, errorCode, arguments)); | 4929 _errorListener.onError(new AnalysisError.con2(_source, node.offset, node.len
gth, errorCode, arguments)); |
| 4930 } | 4930 } |
| 4931 | 4931 |
| 4932 /** | 4932 /** |
| 4933 * Report an error with the given error code and arguments. | 4933 * Report an error with the given error code and arguments. |
| 4934 * | 4934 * |
| 4935 * @param errorCode the error code of the error to be reported | 4935 * @param errorCode the error code of the error to be reported |
| 4936 * @param arguments the arguments to the error, used to compose the error mess
age | 4936 * @param arguments the arguments to the error, used to compose the error mess
age |
| 4937 */ | 4937 */ |
| 4938 void reportError7(ParserErrorCode errorCode, List<Object> arguments) { | 4938 void reportError8(ParserErrorCode errorCode, List<Object> arguments) { |
| 4939 reportError8(errorCode, _currentToken, arguments); | 4939 reportError9(errorCode, _currentToken, arguments); |
| 4940 } | 4940 } |
| 4941 | 4941 |
| 4942 /** | 4942 /** |
| 4943 * Report an error with the given error code and arguments. | 4943 * Report an error with the given error code and arguments. |
| 4944 * | 4944 * |
| 4945 * @param errorCode the error code of the error to be reported | 4945 * @param errorCode the error code of the error to be reported |
| 4946 * @param token the token specifying the location of the error | 4946 * @param token the token specifying the location of the error |
| 4947 * @param arguments the arguments to the error, used to compose the error mess
age | 4947 * @param arguments the arguments to the error, used to compose the error mess
age |
| 4948 */ | 4948 */ |
| 4949 void reportError8(ParserErrorCode errorCode, Token token, List<Object> argumen
ts) { | 4949 void reportError9(ParserErrorCode errorCode, Token token, List<Object> argumen
ts) { |
| 4950 _errorListener.onError(new AnalysisError.con2(_source, token.offset, token.l
ength, errorCode, arguments)); | 4950 _errorListener.onError(new AnalysisError.con2(_source, token.offset, token.l
ength, errorCode, arguments)); |
| 4951 } | 4951 } |
| 4952 | 4952 |
| 4953 /** | 4953 /** |
| 4954 * Parse the 'final', 'const', 'var' or type preceding a variable declaration,
starting at the | 4954 * Parse the 'final', 'const', 'var' or type preceding a variable declaration,
starting at the |
| 4955 * given token, without actually creating a type or changing the current token
. Return the token | 4955 * given token, without actually creating a type or changing the current token
. Return the token |
| 4956 * following the type that was parsed, or `null` if the given token is not the
first token | 4956 * following the type that was parsed, or `null` if the given token is not the
first token |
| 4957 * in a valid type. | 4957 * in a valid type. |
| 4958 * | 4958 * |
| 4959 * <pre> | 4959 * <pre> |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5377 } else if (currentChar == 0x66) { | 5377 } else if (currentChar == 0x66) { |
| 5378 builder.appendChar(0xC); | 5378 builder.appendChar(0xC); |
| 5379 } else if (currentChar == 0x62) { | 5379 } else if (currentChar == 0x62) { |
| 5380 builder.appendChar(0x8); | 5380 builder.appendChar(0x8); |
| 5381 } else if (currentChar == 0x74) { | 5381 } else if (currentChar == 0x74) { |
| 5382 builder.appendChar(0x9); | 5382 builder.appendChar(0x9); |
| 5383 } else if (currentChar == 0x76) { | 5383 } else if (currentChar == 0x76) { |
| 5384 builder.appendChar(0xB); | 5384 builder.appendChar(0xB); |
| 5385 } else if (currentChar == 0x78) { | 5385 } else if (currentChar == 0x78) { |
| 5386 if (currentIndex + 2 >= length) { | 5386 if (currentIndex + 2 >= length) { |
| 5387 reportError7(ParserErrorCode.INVALID_HEX_ESCAPE, []); | 5387 reportError8(ParserErrorCode.INVALID_HEX_ESCAPE, []); |
| 5388 return length; | 5388 return length; |
| 5389 } | 5389 } |
| 5390 int firstDigit = lexeme.codeUnitAt(currentIndex + 1); | 5390 int firstDigit = lexeme.codeUnitAt(currentIndex + 1); |
| 5391 int secondDigit = lexeme.codeUnitAt(currentIndex + 2); | 5391 int secondDigit = lexeme.codeUnitAt(currentIndex + 2); |
| 5392 if (!isHexDigit(firstDigit) || !isHexDigit(secondDigit)) { | 5392 if (!isHexDigit(firstDigit) || !isHexDigit(secondDigit)) { |
| 5393 reportError7(ParserErrorCode.INVALID_HEX_ESCAPE, []); | 5393 reportError8(ParserErrorCode.INVALID_HEX_ESCAPE, []); |
| 5394 } else { | 5394 } else { |
| 5395 builder.appendChar((((Character.digit(firstDigit, 16) << 4) + Character.
digit(secondDigit, 16)) as int)); | 5395 builder.appendChar(((Character.digit(firstDigit, 16) << 4) + Character.d
igit(secondDigit, 16)) as int); |
| 5396 } | 5396 } |
| 5397 return currentIndex + 3; | 5397 return currentIndex + 3; |
| 5398 } else if (currentChar == 0x75) { | 5398 } else if (currentChar == 0x75) { |
| 5399 currentIndex++; | 5399 currentIndex++; |
| 5400 if (currentIndex >= length) { | 5400 if (currentIndex >= length) { |
| 5401 reportError7(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); | 5401 reportError8(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); |
| 5402 return length; | 5402 return length; |
| 5403 } | 5403 } |
| 5404 currentChar = lexeme.codeUnitAt(currentIndex); | 5404 currentChar = lexeme.codeUnitAt(currentIndex); |
| 5405 if (currentChar == 0x7B) { | 5405 if (currentChar == 0x7B) { |
| 5406 currentIndex++; | 5406 currentIndex++; |
| 5407 if (currentIndex >= length) { | 5407 if (currentIndex >= length) { |
| 5408 reportError7(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); | 5408 reportError8(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); |
| 5409 return length; | 5409 return length; |
| 5410 } | 5410 } |
| 5411 currentChar = lexeme.codeUnitAt(currentIndex); | 5411 currentChar = lexeme.codeUnitAt(currentIndex); |
| 5412 int digitCount = 0; | 5412 int digitCount = 0; |
| 5413 int value = 0; | 5413 int value = 0; |
| 5414 while (currentChar != 0x7D) { | 5414 while (currentChar != 0x7D) { |
| 5415 if (!isHexDigit(currentChar)) { | 5415 if (!isHexDigit(currentChar)) { |
| 5416 reportError7(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); | 5416 reportError8(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); |
| 5417 currentIndex++; | 5417 currentIndex++; |
| 5418 while (currentIndex < length && lexeme.codeUnitAt(currentIndex) != 0
x7D) { | 5418 while (currentIndex < length && lexeme.codeUnitAt(currentIndex) != 0
x7D) { |
| 5419 currentIndex++; | 5419 currentIndex++; |
| 5420 } | 5420 } |
| 5421 return currentIndex + 1; | 5421 return currentIndex + 1; |
| 5422 } | 5422 } |
| 5423 digitCount++; | 5423 digitCount++; |
| 5424 value = (value << 4) + Character.digit(currentChar, 16); | 5424 value = (value << 4) + Character.digit(currentChar, 16); |
| 5425 currentIndex++; | 5425 currentIndex++; |
| 5426 if (currentIndex >= length) { | 5426 if (currentIndex >= length) { |
| 5427 reportError7(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); | 5427 reportError8(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); |
| 5428 return length; | 5428 return length; |
| 5429 } | 5429 } |
| 5430 currentChar = lexeme.codeUnitAt(currentIndex); | 5430 currentChar = lexeme.codeUnitAt(currentIndex); |
| 5431 } | 5431 } |
| 5432 if (digitCount < 1 || digitCount > 6) { | 5432 if (digitCount < 1 || digitCount > 6) { |
| 5433 reportError7(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); | 5433 reportError8(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); |
| 5434 } | 5434 } |
| 5435 appendScalarValue(builder, lexeme.substring(index, currentIndex + 1), va
lue, index, currentIndex); | 5435 appendScalarValue(builder, lexeme.substring(index, currentIndex + 1), va
lue, index, currentIndex); |
| 5436 return currentIndex + 1; | 5436 return currentIndex + 1; |
| 5437 } else { | 5437 } else { |
| 5438 if (currentIndex + 3 >= length) { | 5438 if (currentIndex + 3 >= length) { |
| 5439 reportError7(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); | 5439 reportError8(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); |
| 5440 return length; | 5440 return length; |
| 5441 } | 5441 } |
| 5442 int firstDigit = currentChar; | 5442 int firstDigit = currentChar; |
| 5443 int secondDigit = lexeme.codeUnitAt(currentIndex + 1); | 5443 int secondDigit = lexeme.codeUnitAt(currentIndex + 1); |
| 5444 int thirdDigit = lexeme.codeUnitAt(currentIndex + 2); | 5444 int thirdDigit = lexeme.codeUnitAt(currentIndex + 2); |
| 5445 int fourthDigit = lexeme.codeUnitAt(currentIndex + 3); | 5445 int fourthDigit = lexeme.codeUnitAt(currentIndex + 3); |
| 5446 if (!isHexDigit(firstDigit) || !isHexDigit(secondDigit) || !isHexDigit(t
hirdDigit) || !isHexDigit(fourthDigit)) { | 5446 if (!isHexDigit(firstDigit) || !isHexDigit(secondDigit) || !isHexDigit(t
hirdDigit) || !isHexDigit(fourthDigit)) { |
| 5447 reportError7(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); | 5447 reportError8(ParserErrorCode.INVALID_UNICODE_ESCAPE, []); |
| 5448 } else { | 5448 } else { |
| 5449 appendScalarValue(builder, lexeme.substring(index, currentIndex + 1),
((((((Character.digit(firstDigit, 16) << 4) + Character.digit(secondDigit, 16))
<< 4) + Character.digit(thirdDigit, 16)) << 4) + Character.digit(fourthDigit, 16
)), index, currentIndex + 3); | 5449 appendScalarValue(builder, lexeme.substring(index, currentIndex + 1),
(((((Character.digit(firstDigit, 16) << 4) + Character.digit(secondDigit, 16)) <
< 4) + Character.digit(thirdDigit, 16)) << 4) + Character.digit(fourthDigit, 16)
, index, currentIndex + 3); |
| 5450 } | 5450 } |
| 5451 return currentIndex + 4; | 5451 return currentIndex + 4; |
| 5452 } | 5452 } |
| 5453 } else { | 5453 } else { |
| 5454 builder.appendChar(currentChar); | 5454 builder.appendChar(currentChar); |
| 5455 } | 5455 } |
| 5456 return currentIndex + 1; | 5456 return currentIndex + 1; |
| 5457 } | 5457 } |
| 5458 | 5458 |
| 5459 /** | 5459 /** |
| (...skipping 11 matching lines...) Expand all Loading... |
| 5471 | 5471 |
| 5472 /** | 5472 /** |
| 5473 * Validate that the given set of modifiers is appropriate for a class and ret
urn the 'abstract' | 5473 * Validate that the given set of modifiers is appropriate for a class and ret
urn the 'abstract' |
| 5474 * keyword if there is one. | 5474 * keyword if there is one. |
| 5475 * | 5475 * |
| 5476 * @param modifiers the modifiers being validated | 5476 * @param modifiers the modifiers being validated |
| 5477 */ | 5477 */ |
| 5478 Token validateModifiersForClass(Modifiers modifiers) { | 5478 Token validateModifiersForClass(Modifiers modifiers) { |
| 5479 validateModifiersForTopLevelDeclaration(modifiers); | 5479 validateModifiersForTopLevelDeclaration(modifiers); |
| 5480 if (modifiers.constKeyword != null) { | 5480 if (modifiers.constKeyword != null) { |
| 5481 reportError8(ParserErrorCode.CONST_CLASS, modifiers.constKeyword, []); | 5481 reportError9(ParserErrorCode.CONST_CLASS, modifiers.constKeyword, []); |
| 5482 } | 5482 } |
| 5483 if (modifiers.externalKeyword != null) { | 5483 if (modifiers.externalKeyword != null) { |
| 5484 reportError8(ParserErrorCode.EXTERNAL_CLASS, modifiers.externalKeyword, []
); | 5484 reportError9(ParserErrorCode.EXTERNAL_CLASS, modifiers.externalKeyword, []
); |
| 5485 } | 5485 } |
| 5486 if (modifiers.finalKeyword != null) { | 5486 if (modifiers.finalKeyword != null) { |
| 5487 reportError8(ParserErrorCode.FINAL_CLASS, modifiers.finalKeyword, []); | 5487 reportError9(ParserErrorCode.FINAL_CLASS, modifiers.finalKeyword, []); |
| 5488 } | 5488 } |
| 5489 if (modifiers.varKeyword != null) { | 5489 if (modifiers.varKeyword != null) { |
| 5490 reportError8(ParserErrorCode.VAR_CLASS, modifiers.varKeyword, []); | 5490 reportError9(ParserErrorCode.VAR_CLASS, modifiers.varKeyword, []); |
| 5491 } | 5491 } |
| 5492 return modifiers.abstractKeyword; | 5492 return modifiers.abstractKeyword; |
| 5493 } | 5493 } |
| 5494 | 5494 |
| 5495 /** | 5495 /** |
| 5496 * Validate that the given set of modifiers is appropriate for a constructor a
nd return the | 5496 * Validate that the given set of modifiers is appropriate for a constructor a
nd return the |
| 5497 * 'const' keyword if there is one. | 5497 * 'const' keyword if there is one. |
| 5498 * | 5498 * |
| 5499 * @param modifiers the modifiers being validated | 5499 * @param modifiers the modifiers being validated |
| 5500 * @return the 'const' or 'final' keyword associated with the constructor | 5500 * @return the 'const' or 'final' keyword associated with the constructor |
| 5501 */ | 5501 */ |
| 5502 Token validateModifiersForConstructor(Modifiers modifiers) { | 5502 Token validateModifiersForConstructor(Modifiers modifiers) { |
| 5503 if (modifiers.abstractKeyword != null) { | 5503 if (modifiers.abstractKeyword != null) { |
| 5504 reportError7(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); | 5504 reportError8(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); |
| 5505 } | 5505 } |
| 5506 if (modifiers.finalKeyword != null) { | 5506 if (modifiers.finalKeyword != null) { |
| 5507 reportError8(ParserErrorCode.FINAL_CONSTRUCTOR, modifiers.finalKeyword, []
); | 5507 reportError9(ParserErrorCode.FINAL_CONSTRUCTOR, modifiers.finalKeyword, []
); |
| 5508 } | 5508 } |
| 5509 if (modifiers.staticKeyword != null) { | 5509 if (modifiers.staticKeyword != null) { |
| 5510 reportError8(ParserErrorCode.STATIC_CONSTRUCTOR, modifiers.staticKeyword,
[]); | 5510 reportError9(ParserErrorCode.STATIC_CONSTRUCTOR, modifiers.staticKeyword,
[]); |
| 5511 } | 5511 } |
| 5512 if (modifiers.varKeyword != null) { | 5512 if (modifiers.varKeyword != null) { |
| 5513 reportError8(ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE, modifiers.varKe
yword, []); | 5513 reportError9(ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE, modifiers.varKe
yword, []); |
| 5514 } | 5514 } |
| 5515 Token externalKeyword = modifiers.externalKeyword; | 5515 Token externalKeyword = modifiers.externalKeyword; |
| 5516 Token constKeyword = modifiers.constKeyword; | 5516 Token constKeyword = modifiers.constKeyword; |
| 5517 Token factoryKeyword = modifiers.factoryKeyword; | 5517 Token factoryKeyword = modifiers.factoryKeyword; |
| 5518 if (externalKeyword != null && constKeyword != null && constKeyword.offset <
externalKeyword.offset) { | 5518 if (externalKeyword != null && constKeyword != null && constKeyword.offset <
externalKeyword.offset) { |
| 5519 reportError8(ParserErrorCode.EXTERNAL_AFTER_CONST, externalKeyword, []); | 5519 reportError9(ParserErrorCode.EXTERNAL_AFTER_CONST, externalKeyword, []); |
| 5520 } | 5520 } |
| 5521 if (externalKeyword != null && factoryKeyword != null && factoryKeyword.offs
et < externalKeyword.offset) { | 5521 if (externalKeyword != null && factoryKeyword != null && factoryKeyword.offs
et < externalKeyword.offset) { |
| 5522 reportError8(ParserErrorCode.EXTERNAL_AFTER_FACTORY, externalKeyword, []); | 5522 reportError9(ParserErrorCode.EXTERNAL_AFTER_FACTORY, externalKeyword, []); |
| 5523 } | 5523 } |
| 5524 return constKeyword; | 5524 return constKeyword; |
| 5525 } | 5525 } |
| 5526 | 5526 |
| 5527 /** | 5527 /** |
| 5528 * Validate that the given set of modifiers is appropriate for a field and ret
urn the 'final', | 5528 * Validate that the given set of modifiers is appropriate for a field and ret
urn the 'final', |
| 5529 * 'const' or 'var' keyword if there is one. | 5529 * 'const' or 'var' keyword if there is one. |
| 5530 * | 5530 * |
| 5531 * @param modifiers the modifiers being validated | 5531 * @param modifiers the modifiers being validated |
| 5532 * @return the 'final', 'const' or 'var' keyword associated with the field | 5532 * @return the 'final', 'const' or 'var' keyword associated with the field |
| 5533 */ | 5533 */ |
| 5534 Token validateModifiersForField(Modifiers modifiers) { | 5534 Token validateModifiersForField(Modifiers modifiers) { |
| 5535 if (modifiers.abstractKeyword != null) { | 5535 if (modifiers.abstractKeyword != null) { |
| 5536 reportError7(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); | 5536 reportError8(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); |
| 5537 } | 5537 } |
| 5538 if (modifiers.externalKeyword != null) { | 5538 if (modifiers.externalKeyword != null) { |
| 5539 reportError8(ParserErrorCode.EXTERNAL_FIELD, modifiers.externalKeyword, []
); | 5539 reportError9(ParserErrorCode.EXTERNAL_FIELD, modifiers.externalKeyword, []
); |
| 5540 } | 5540 } |
| 5541 if (modifiers.factoryKeyword != null) { | 5541 if (modifiers.factoryKeyword != null) { |
| 5542 reportError8(ParserErrorCode.NON_CONSTRUCTOR_FACTORY, modifiers.factoryKey
word, []); | 5542 reportError9(ParserErrorCode.NON_CONSTRUCTOR_FACTORY, modifiers.factoryKey
word, []); |
| 5543 } | 5543 } |
| 5544 Token staticKeyword = modifiers.staticKeyword; | 5544 Token staticKeyword = modifiers.staticKeyword; |
| 5545 Token constKeyword = modifiers.constKeyword; | 5545 Token constKeyword = modifiers.constKeyword; |
| 5546 Token finalKeyword = modifiers.finalKeyword; | 5546 Token finalKeyword = modifiers.finalKeyword; |
| 5547 Token varKeyword = modifiers.varKeyword; | 5547 Token varKeyword = modifiers.varKeyword; |
| 5548 if (constKeyword != null) { | 5548 if (constKeyword != null) { |
| 5549 if (finalKeyword != null) { | 5549 if (finalKeyword != null) { |
| 5550 reportError8(ParserErrorCode.CONST_AND_FINAL, finalKeyword, []); | 5550 reportError9(ParserErrorCode.CONST_AND_FINAL, finalKeyword, []); |
| 5551 } | 5551 } |
| 5552 if (varKeyword != null) { | 5552 if (varKeyword != null) { |
| 5553 reportError8(ParserErrorCode.CONST_AND_VAR, varKeyword, []); | 5553 reportError9(ParserErrorCode.CONST_AND_VAR, varKeyword, []); |
| 5554 } | 5554 } |
| 5555 if (staticKeyword != null && constKeyword.offset < staticKeyword.offset) { | 5555 if (staticKeyword != null && constKeyword.offset < staticKeyword.offset) { |
| 5556 reportError8(ParserErrorCode.STATIC_AFTER_CONST, staticKeyword, []); | 5556 reportError9(ParserErrorCode.STATIC_AFTER_CONST, staticKeyword, []); |
| 5557 } | 5557 } |
| 5558 } else if (finalKeyword != null) { | 5558 } else if (finalKeyword != null) { |
| 5559 if (varKeyword != null) { | 5559 if (varKeyword != null) { |
| 5560 reportError8(ParserErrorCode.FINAL_AND_VAR, varKeyword, []); | 5560 reportError9(ParserErrorCode.FINAL_AND_VAR, varKeyword, []); |
| 5561 } | 5561 } |
| 5562 if (staticKeyword != null && finalKeyword.offset < staticKeyword.offset) { | 5562 if (staticKeyword != null && finalKeyword.offset < staticKeyword.offset) { |
| 5563 reportError8(ParserErrorCode.STATIC_AFTER_FINAL, staticKeyword, []); | 5563 reportError9(ParserErrorCode.STATIC_AFTER_FINAL, staticKeyword, []); |
| 5564 } | 5564 } |
| 5565 } else if (varKeyword != null && staticKeyword != null && varKeyword.offset
< staticKeyword.offset) { | 5565 } else if (varKeyword != null && staticKeyword != null && varKeyword.offset
< staticKeyword.offset) { |
| 5566 reportError8(ParserErrorCode.STATIC_AFTER_VAR, staticKeyword, []); | 5566 reportError9(ParserErrorCode.STATIC_AFTER_VAR, staticKeyword, []); |
| 5567 } | 5567 } |
| 5568 return lexicallyFirst([constKeyword, finalKeyword, varKeyword]); | 5568 return lexicallyFirst([constKeyword, finalKeyword, varKeyword]); |
| 5569 } | 5569 } |
| 5570 | 5570 |
| 5571 /** | 5571 /** |
| 5572 * Validate that the given set of modifiers is appropriate for a local functio
n. | 5572 * Validate that the given set of modifiers is appropriate for a local functio
n. |
| 5573 * | 5573 * |
| 5574 * @param modifiers the modifiers being validated | 5574 * @param modifiers the modifiers being validated |
| 5575 */ | 5575 */ |
| 5576 void validateModifiersForFunctionDeclarationStatement(Modifiers modifiers) { | 5576 void validateModifiersForFunctionDeclarationStatement(Modifiers modifiers) { |
| 5577 if (modifiers.abstractKeyword != null || modifiers.constKeyword != null || m
odifiers.externalKeyword != null || modifiers.factoryKeyword != null || modifier
s.finalKeyword != null || modifiers.staticKeyword != null || modifiers.varKeywor
d != null) { | 5577 if (modifiers.abstractKeyword != null || modifiers.constKeyword != null || m
odifiers.externalKeyword != null || modifiers.factoryKeyword != null || modifier
s.finalKeyword != null || modifiers.staticKeyword != null || modifiers.varKeywor
d != null) { |
| 5578 reportError7(ParserErrorCode.LOCAL_FUNCTION_DECLARATION_MODIFIER, []); | 5578 reportError8(ParserErrorCode.LOCAL_FUNCTION_DECLARATION_MODIFIER, []); |
| 5579 } | 5579 } |
| 5580 } | 5580 } |
| 5581 | 5581 |
| 5582 /** | 5582 /** |
| 5583 * Validate that the given set of modifiers is appropriate for a getter, sette
r, or method. | 5583 * Validate that the given set of modifiers is appropriate for a getter, sette
r, or method. |
| 5584 * | 5584 * |
| 5585 * @param modifiers the modifiers being validated | 5585 * @param modifiers the modifiers being validated |
| 5586 */ | 5586 */ |
| 5587 void validateModifiersForGetterOrSetterOrMethod(Modifiers modifiers) { | 5587 void validateModifiersForGetterOrSetterOrMethod(Modifiers modifiers) { |
| 5588 if (modifiers.abstractKeyword != null) { | 5588 if (modifiers.abstractKeyword != null) { |
| 5589 reportError7(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); | 5589 reportError8(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); |
| 5590 } | 5590 } |
| 5591 if (modifiers.constKeyword != null) { | 5591 if (modifiers.constKeyword != null) { |
| 5592 reportError8(ParserErrorCode.CONST_METHOD, modifiers.constKeyword, []); | 5592 reportError9(ParserErrorCode.CONST_METHOD, modifiers.constKeyword, []); |
| 5593 } | 5593 } |
| 5594 if (modifiers.factoryKeyword != null) { | 5594 if (modifiers.factoryKeyword != null) { |
| 5595 reportError8(ParserErrorCode.NON_CONSTRUCTOR_FACTORY, modifiers.factoryKey
word, []); | 5595 reportError9(ParserErrorCode.NON_CONSTRUCTOR_FACTORY, modifiers.factoryKey
word, []); |
| 5596 } | 5596 } |
| 5597 if (modifiers.finalKeyword != null) { | 5597 if (modifiers.finalKeyword != null) { |
| 5598 reportError8(ParserErrorCode.FINAL_METHOD, modifiers.finalKeyword, []); | 5598 reportError9(ParserErrorCode.FINAL_METHOD, modifiers.finalKeyword, []); |
| 5599 } | 5599 } |
| 5600 if (modifiers.varKeyword != null) { | 5600 if (modifiers.varKeyword != null) { |
| 5601 reportError8(ParserErrorCode.VAR_RETURN_TYPE, modifiers.varKeyword, []); | 5601 reportError9(ParserErrorCode.VAR_RETURN_TYPE, modifiers.varKeyword, []); |
| 5602 } | 5602 } |
| 5603 Token externalKeyword = modifiers.externalKeyword; | 5603 Token externalKeyword = modifiers.externalKeyword; |
| 5604 Token staticKeyword = modifiers.staticKeyword; | 5604 Token staticKeyword = modifiers.staticKeyword; |
| 5605 if (externalKeyword != null && staticKeyword != null && staticKeyword.offset
< externalKeyword.offset) { | 5605 if (externalKeyword != null && staticKeyword != null && staticKeyword.offset
< externalKeyword.offset) { |
| 5606 reportError8(ParserErrorCode.EXTERNAL_AFTER_STATIC, externalKeyword, []); | 5606 reportError9(ParserErrorCode.EXTERNAL_AFTER_STATIC, externalKeyword, []); |
| 5607 } | 5607 } |
| 5608 } | 5608 } |
| 5609 | 5609 |
| 5610 /** | 5610 /** |
| 5611 * Validate that the given set of modifiers is appropriate for a getter, sette
r, or method. | 5611 * Validate that the given set of modifiers is appropriate for a getter, sette
r, or method. |
| 5612 * | 5612 * |
| 5613 * @param modifiers the modifiers being validated | 5613 * @param modifiers the modifiers being validated |
| 5614 */ | 5614 */ |
| 5615 void validateModifiersForOperator(Modifiers modifiers) { | 5615 void validateModifiersForOperator(Modifiers modifiers) { |
| 5616 if (modifiers.abstractKeyword != null) { | 5616 if (modifiers.abstractKeyword != null) { |
| 5617 reportError7(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); | 5617 reportError8(ParserErrorCode.ABSTRACT_CLASS_MEMBER, []); |
| 5618 } | 5618 } |
| 5619 if (modifiers.constKeyword != null) { | 5619 if (modifiers.constKeyword != null) { |
| 5620 reportError8(ParserErrorCode.CONST_METHOD, modifiers.constKeyword, []); | 5620 reportError9(ParserErrorCode.CONST_METHOD, modifiers.constKeyword, []); |
| 5621 } | 5621 } |
| 5622 if (modifiers.factoryKeyword != null) { | 5622 if (modifiers.factoryKeyword != null) { |
| 5623 reportError8(ParserErrorCode.NON_CONSTRUCTOR_FACTORY, modifiers.factoryKey
word, []); | 5623 reportError9(ParserErrorCode.NON_CONSTRUCTOR_FACTORY, modifiers.factoryKey
word, []); |
| 5624 } | 5624 } |
| 5625 if (modifiers.finalKeyword != null) { | 5625 if (modifiers.finalKeyword != null) { |
| 5626 reportError8(ParserErrorCode.FINAL_METHOD, modifiers.finalKeyword, []); | 5626 reportError9(ParserErrorCode.FINAL_METHOD, modifiers.finalKeyword, []); |
| 5627 } | 5627 } |
| 5628 if (modifiers.staticKeyword != null) { | 5628 if (modifiers.staticKeyword != null) { |
| 5629 reportError8(ParserErrorCode.STATIC_OPERATOR, modifiers.staticKeyword, [])
; | 5629 reportError9(ParserErrorCode.STATIC_OPERATOR, modifiers.staticKeyword, [])
; |
| 5630 } | 5630 } |
| 5631 if (modifiers.varKeyword != null) { | 5631 if (modifiers.varKeyword != null) { |
| 5632 reportError8(ParserErrorCode.VAR_RETURN_TYPE, modifiers.varKeyword, []); | 5632 reportError9(ParserErrorCode.VAR_RETURN_TYPE, modifiers.varKeyword, []); |
| 5633 } | 5633 } |
| 5634 } | 5634 } |
| 5635 | 5635 |
| 5636 /** | 5636 /** |
| 5637 * Validate that the given set of modifiers is appropriate for a top-level dec
laration. | 5637 * Validate that the given set of modifiers is appropriate for a top-level dec
laration. |
| 5638 * | 5638 * |
| 5639 * @param modifiers the modifiers being validated | 5639 * @param modifiers the modifiers being validated |
| 5640 */ | 5640 */ |
| 5641 void validateModifiersForTopLevelDeclaration(Modifiers modifiers) { | 5641 void validateModifiersForTopLevelDeclaration(Modifiers modifiers) { |
| 5642 if (modifiers.factoryKeyword != null) { | 5642 if (modifiers.factoryKeyword != null) { |
| 5643 reportError8(ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION, modifiers.fact
oryKeyword, []); | 5643 reportError9(ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION, modifiers.fact
oryKeyword, []); |
| 5644 } | 5644 } |
| 5645 if (modifiers.staticKeyword != null) { | 5645 if (modifiers.staticKeyword != null) { |
| 5646 reportError8(ParserErrorCode.STATIC_TOP_LEVEL_DECLARATION, modifiers.stati
cKeyword, []); | 5646 reportError9(ParserErrorCode.STATIC_TOP_LEVEL_DECLARATION, modifiers.stati
cKeyword, []); |
| 5647 } | 5647 } |
| 5648 } | 5648 } |
| 5649 | 5649 |
| 5650 /** | 5650 /** |
| 5651 * Validate that the given set of modifiers is appropriate for a top-level fun
ction. | 5651 * Validate that the given set of modifiers is appropriate for a top-level fun
ction. |
| 5652 * | 5652 * |
| 5653 * @param modifiers the modifiers being validated | 5653 * @param modifiers the modifiers being validated |
| 5654 */ | 5654 */ |
| 5655 void validateModifiersForTopLevelFunction(Modifiers modifiers) { | 5655 void validateModifiersForTopLevelFunction(Modifiers modifiers) { |
| 5656 validateModifiersForTopLevelDeclaration(modifiers); | 5656 validateModifiersForTopLevelDeclaration(modifiers); |
| 5657 if (modifiers.abstractKeyword != null) { | 5657 if (modifiers.abstractKeyword != null) { |
| 5658 reportError7(ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION, []); | 5658 reportError8(ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION, []); |
| 5659 } | 5659 } |
| 5660 if (modifiers.constKeyword != null) { | 5660 if (modifiers.constKeyword != null) { |
| 5661 reportError8(ParserErrorCode.CONST_CLASS, modifiers.constKeyword, []); | 5661 reportError9(ParserErrorCode.CONST_CLASS, modifiers.constKeyword, []); |
| 5662 } | 5662 } |
| 5663 if (modifiers.finalKeyword != null) { | 5663 if (modifiers.finalKeyword != null) { |
| 5664 reportError8(ParserErrorCode.FINAL_CLASS, modifiers.finalKeyword, []); | 5664 reportError9(ParserErrorCode.FINAL_CLASS, modifiers.finalKeyword, []); |
| 5665 } | 5665 } |
| 5666 if (modifiers.varKeyword != null) { | 5666 if (modifiers.varKeyword != null) { |
| 5667 reportError8(ParserErrorCode.VAR_RETURN_TYPE, modifiers.varKeyword, []); | 5667 reportError9(ParserErrorCode.VAR_RETURN_TYPE, modifiers.varKeyword, []); |
| 5668 } | 5668 } |
| 5669 } | 5669 } |
| 5670 | 5670 |
| 5671 /** | 5671 /** |
| 5672 * Validate that the given set of modifiers is appropriate for a field and ret
urn the 'final', | 5672 * Validate that the given set of modifiers is appropriate for a field and ret
urn the 'final', |
| 5673 * 'const' or 'var' keyword if there is one. | 5673 * 'const' or 'var' keyword if there is one. |
| 5674 * | 5674 * |
| 5675 * @param modifiers the modifiers being validated | 5675 * @param modifiers the modifiers being validated |
| 5676 * @return the 'final', 'const' or 'var' keyword associated with the field | 5676 * @return the 'final', 'const' or 'var' keyword associated with the field |
| 5677 */ | 5677 */ |
| 5678 Token validateModifiersForTopLevelVariable(Modifiers modifiers) { | 5678 Token validateModifiersForTopLevelVariable(Modifiers modifiers) { |
| 5679 validateModifiersForTopLevelDeclaration(modifiers); | 5679 validateModifiersForTopLevelDeclaration(modifiers); |
| 5680 if (modifiers.abstractKeyword != null) { | 5680 if (modifiers.abstractKeyword != null) { |
| 5681 reportError7(ParserErrorCode.ABSTRACT_TOP_LEVEL_VARIABLE, []); | 5681 reportError8(ParserErrorCode.ABSTRACT_TOP_LEVEL_VARIABLE, []); |
| 5682 } | 5682 } |
| 5683 if (modifiers.externalKeyword != null) { | 5683 if (modifiers.externalKeyword != null) { |
| 5684 reportError8(ParserErrorCode.EXTERNAL_FIELD, modifiers.externalKeyword, []
); | 5684 reportError9(ParserErrorCode.EXTERNAL_FIELD, modifiers.externalKeyword, []
); |
| 5685 } | 5685 } |
| 5686 Token constKeyword = modifiers.constKeyword; | 5686 Token constKeyword = modifiers.constKeyword; |
| 5687 Token finalKeyword = modifiers.finalKeyword; | 5687 Token finalKeyword = modifiers.finalKeyword; |
| 5688 Token varKeyword = modifiers.varKeyword; | 5688 Token varKeyword = modifiers.varKeyword; |
| 5689 if (constKeyword != null) { | 5689 if (constKeyword != null) { |
| 5690 if (finalKeyword != null) { | 5690 if (finalKeyword != null) { |
| 5691 reportError8(ParserErrorCode.CONST_AND_FINAL, finalKeyword, []); | 5691 reportError9(ParserErrorCode.CONST_AND_FINAL, finalKeyword, []); |
| 5692 } | 5692 } |
| 5693 if (varKeyword != null) { | 5693 if (varKeyword != null) { |
| 5694 reportError8(ParserErrorCode.CONST_AND_VAR, varKeyword, []); | 5694 reportError9(ParserErrorCode.CONST_AND_VAR, varKeyword, []); |
| 5695 } | 5695 } |
| 5696 } else if (finalKeyword != null) { | 5696 } else if (finalKeyword != null) { |
| 5697 if (varKeyword != null) { | 5697 if (varKeyword != null) { |
| 5698 reportError8(ParserErrorCode.FINAL_AND_VAR, varKeyword, []); | 5698 reportError9(ParserErrorCode.FINAL_AND_VAR, varKeyword, []); |
| 5699 } | 5699 } |
| 5700 } | 5700 } |
| 5701 return lexicallyFirst([constKeyword, finalKeyword, varKeyword]); | 5701 return lexicallyFirst([constKeyword, finalKeyword, varKeyword]); |
| 5702 } | 5702 } |
| 5703 | 5703 |
| 5704 /** | 5704 /** |
| 5705 * Validate that the given set of modifiers is appropriate for a class and ret
urn the 'abstract' | 5705 * Validate that the given set of modifiers is appropriate for a class and ret
urn the 'abstract' |
| 5706 * keyword if there is one. | 5706 * keyword if there is one. |
| 5707 * | 5707 * |
| 5708 * @param modifiers the modifiers being validated | 5708 * @param modifiers the modifiers being validated |
| 5709 */ | 5709 */ |
| 5710 void validateModifiersForTypedef(Modifiers modifiers) { | 5710 void validateModifiersForTypedef(Modifiers modifiers) { |
| 5711 validateModifiersForTopLevelDeclaration(modifiers); | 5711 validateModifiersForTopLevelDeclaration(modifiers); |
| 5712 if (modifiers.abstractKeyword != null) { | 5712 if (modifiers.abstractKeyword != null) { |
| 5713 reportError8(ParserErrorCode.ABSTRACT_TYPEDEF, modifiers.abstractKeyword,
[]); | 5713 reportError9(ParserErrorCode.ABSTRACT_TYPEDEF, modifiers.abstractKeyword,
[]); |
| 5714 } | 5714 } |
| 5715 if (modifiers.constKeyword != null) { | 5715 if (modifiers.constKeyword != null) { |
| 5716 reportError8(ParserErrorCode.CONST_TYPEDEF, modifiers.constKeyword, []); | 5716 reportError9(ParserErrorCode.CONST_TYPEDEF, modifiers.constKeyword, []); |
| 5717 } | 5717 } |
| 5718 if (modifiers.externalKeyword != null) { | 5718 if (modifiers.externalKeyword != null) { |
| 5719 reportError8(ParserErrorCode.EXTERNAL_TYPEDEF, modifiers.externalKeyword,
[]); | 5719 reportError9(ParserErrorCode.EXTERNAL_TYPEDEF, modifiers.externalKeyword,
[]); |
| 5720 } | 5720 } |
| 5721 if (modifiers.finalKeyword != null) { | 5721 if (modifiers.finalKeyword != null) { |
| 5722 reportError8(ParserErrorCode.FINAL_TYPEDEF, modifiers.finalKeyword, []); | 5722 reportError9(ParserErrorCode.FINAL_TYPEDEF, modifiers.finalKeyword, []); |
| 5723 } | 5723 } |
| 5724 if (modifiers.varKeyword != null) { | 5724 if (modifiers.varKeyword != null) { |
| 5725 reportError8(ParserErrorCode.VAR_TYPEDEF, modifiers.varKeyword, []); | 5725 reportError9(ParserErrorCode.VAR_TYPEDEF, modifiers.varKeyword, []); |
| 5726 } | 5726 } |
| 5727 } | 5727 } |
| 5728 } | 5728 } |
| 5729 class KeywordToken_12 extends KeywordToken { | 5729 class KeywordToken_12 extends KeywordToken { |
| 5730 KeywordToken_12(Keyword arg0, int arg1) : super(arg0, arg1); | 5730 KeywordToken_12(Keyword arg0, int arg1) : super(arg0, arg1); |
| 5731 int get length => 0; | 5731 int get length => 0; |
| 5732 } | 5732 } |
| 5733 class AnalysisErrorListener_13 implements AnalysisErrorListener { | 5733 class AnalysisErrorListener_13 implements AnalysisErrorListener { |
| 5734 List<bool> errorFound; | 5734 List<bool> errorFound; |
| 5735 AnalysisErrorListener_13(this.errorFound); | 5735 AnalysisErrorListener_13(this.errorFound); |
| 5736 void onError(AnalysisError error) { | 5736 void onError(AnalysisError error) { |
| 5737 errorFound[0] = true; | 5737 errorFound[0] = true; |
| 5738 } | 5738 } |
| 5739 } | 5739 } |
| 5740 /** | 5740 /** |
| 5741 * The enumeration `ParserErrorCode` defines the error codes used for errors det
ected by the | 5741 * The enumeration `ParserErrorCode` defines the error codes used for errors det
ected by the |
| 5742 * parser. The convention for this class is for the name of the error code to in
dicate the problem | 5742 * parser. The convention for this class is for the name of the error code to in
dicate the problem |
| 5743 * that caused the error to be generated and for the error message to explain wh
at is wrong and, | 5743 * that caused the error to be generated and for the error message to explain wh
at is wrong and, |
| 5744 * when appropriate, how the problem can be corrected. | 5744 * when appropriate, how the problem can be corrected. |
| 5745 * | 5745 * |
| 5746 * @coverage dart.engine.parser | 5746 * @coverage dart.engine.parser |
| 5747 */ | 5747 */ |
| 5748 class ParserErrorCode implements Enum<ParserErrorCode>, ErrorCode { | 5748 class ParserErrorCode extends Enum<ParserErrorCode> implements ErrorCode { |
| 5749 static final ParserErrorCode ABSTRACT_CLASS_MEMBER = new ParserErrorCode.con2(
'ABSTRACT_CLASS_MEMBER', 0, "Members of classes cannot be declared to be 'abstra
ct'"); | 5749 static final ParserErrorCode ABSTRACT_CLASS_MEMBER = new ParserErrorCode.con3(
'ABSTRACT_CLASS_MEMBER', 0, "Members of classes cannot be declared to be 'abstra
ct'"); |
| 5750 static final ParserErrorCode ABSTRACT_STATIC_METHOD = new ParserErrorCode.con2
('ABSTRACT_STATIC_METHOD', 1, "Static methods cannot be declared to be 'abstract
'"); | 5750 static final ParserErrorCode ABSTRACT_STATIC_METHOD = new ParserErrorCode.con3
('ABSTRACT_STATIC_METHOD', 1, "Static methods cannot be declared to be 'abstract
'"); |
| 5751 static final ParserErrorCode ABSTRACT_TOP_LEVEL_FUNCTION = new ParserErrorCode
.con2('ABSTRACT_TOP_LEVEL_FUNCTION', 2, "Top-level functions cannot be declared
to be 'abstract'"); | 5751 static final ParserErrorCode ABSTRACT_TOP_LEVEL_FUNCTION = new ParserErrorCode
.con3('ABSTRACT_TOP_LEVEL_FUNCTION', 2, "Top-level functions cannot be declared
to be 'abstract'"); |
| 5752 static final ParserErrorCode ABSTRACT_TOP_LEVEL_VARIABLE = new ParserErrorCode
.con2('ABSTRACT_TOP_LEVEL_VARIABLE', 3, "Top-level variables cannot be declared
to be 'abstract'"); | 5752 static final ParserErrorCode ABSTRACT_TOP_LEVEL_VARIABLE = new ParserErrorCode
.con3('ABSTRACT_TOP_LEVEL_VARIABLE', 3, "Top-level variables cannot be declared
to be 'abstract'"); |
| 5753 static final ParserErrorCode ABSTRACT_TYPEDEF = new ParserErrorCode.con2('ABST
RACT_TYPEDEF', 4, "Type aliases cannot be declared to be 'abstract'"); | 5753 static final ParserErrorCode ABSTRACT_TYPEDEF = new ParserErrorCode.con3('ABST
RACT_TYPEDEF', 4, "Type aliases cannot be declared to be 'abstract'"); |
| 5754 static final ParserErrorCode BREAK_OUTSIDE_OF_LOOP = new ParserErrorCode.con2(
'BREAK_OUTSIDE_OF_LOOP', 5, "A break statement cannot be used outside of a loop
or switch statement"); | 5754 static final ParserErrorCode BREAK_OUTSIDE_OF_LOOP = new ParserErrorCode.con3(
'BREAK_OUTSIDE_OF_LOOP', 5, "A break statement cannot be used outside of a loop
or switch statement"); |
| 5755 static final ParserErrorCode CONST_AND_FINAL = new ParserErrorCode.con2('CONST
_AND_FINAL', 6, "Members cannot be declared to be both 'const' and 'final'"); | 5755 static final ParserErrorCode CONST_AND_FINAL = new ParserErrorCode.con3('CONST
_AND_FINAL', 6, "Members cannot be declared to be both 'const' and 'final'"); |
| 5756 static final ParserErrorCode CONST_AND_VAR = new ParserErrorCode.con2('CONST_A
ND_VAR', 7, "Members cannot be declared to be both 'const' and 'var'"); | 5756 static final ParserErrorCode CONST_AND_VAR = new ParserErrorCode.con3('CONST_A
ND_VAR', 7, "Members cannot be declared to be both 'const' and 'var'"); |
| 5757 static final ParserErrorCode CONST_CLASS = new ParserErrorCode.con2('CONST_CLA
SS', 8, "Classes cannot be declared to be 'const'"); | 5757 static final ParserErrorCode CONST_CLASS = new ParserErrorCode.con3('CONST_CLA
SS', 8, "Classes cannot be declared to be 'const'"); |
| 5758 static final ParserErrorCode CONST_CONSTRUCTOR_WITH_BODY = new ParserErrorCode
.con2('CONST_CONSTRUCTOR_WITH_BODY', 9, "'const' constructors cannot have a body
"); | 5758 static final ParserErrorCode CONST_CONSTRUCTOR_WITH_BODY = new ParserErrorCode
.con3('CONST_CONSTRUCTOR_WITH_BODY', 9, "'const' constructors cannot have a body
"); |
| 5759 static final ParserErrorCode CONST_FACTORY = new ParserErrorCode.con2('CONST_F
ACTORY', 10, "Only redirecting factory constructors can be declared to be 'const
'"); | 5759 static final ParserErrorCode CONST_FACTORY = new ParserErrorCode.con3('CONST_F
ACTORY', 10, "Only redirecting factory constructors can be declared to be 'const
'"); |
| 5760 static final ParserErrorCode CONST_METHOD = new ParserErrorCode.con2('CONST_ME
THOD', 11, "Getters, setters and methods cannot be declared to be 'const'"); | 5760 static final ParserErrorCode CONST_METHOD = new ParserErrorCode.con3('CONST_ME
THOD', 11, "Getters, setters and methods cannot be declared to be 'const'"); |
| 5761 static final ParserErrorCode CONST_TYPEDEF = new ParserErrorCode.con2('CONST_T
YPEDEF', 12, "Type aliases cannot be declared to be 'const'"); | 5761 static final ParserErrorCode CONST_TYPEDEF = new ParserErrorCode.con3('CONST_T
YPEDEF', 12, "Type aliases cannot be declared to be 'const'"); |
| 5762 static final ParserErrorCode CONSTRUCTOR_WITH_RETURN_TYPE = new ParserErrorCod
e.con2('CONSTRUCTOR_WITH_RETURN_TYPE', 13, "Constructors cannot have a return ty
pe"); | 5762 static final ParserErrorCode CONSTRUCTOR_WITH_RETURN_TYPE = new ParserErrorCod
e.con3('CONSTRUCTOR_WITH_RETURN_TYPE', 13, "Constructors cannot have a return ty
pe"); |
| 5763 static final ParserErrorCode CONTINUE_OUTSIDE_OF_LOOP = new ParserErrorCode.co
n2('CONTINUE_OUTSIDE_OF_LOOP', 14, "A continue statement cannot be used outside
of a loop or switch statement"); | 5763 static final ParserErrorCode CONTINUE_OUTSIDE_OF_LOOP = new ParserErrorCode.co
n3('CONTINUE_OUTSIDE_OF_LOOP', 14, "A continue statement cannot be used outside
of a loop or switch statement"); |
| 5764 static final ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE = new ParserErrorC
ode.con2('CONTINUE_WITHOUT_LABEL_IN_CASE', 15, "A continue statement in a switch
statement must have a label as a target"); | 5764 static final ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE = new ParserErrorC
ode.con3('CONTINUE_WITHOUT_LABEL_IN_CASE', 15, "A continue statement in a switch
statement must have a label as a target"); |
| 5765 static final ParserErrorCode DEPRECATED_ARGUMENT_DEFINITION_TEST = new ParserE
rrorCode.con2('DEPRECATED_ARGUMENT_DEFINITION_TEST', 16, "The argument definitio
n test ('?' operator) has been deprecated"); | 5765 static final ParserErrorCode DEPRECATED_ARGUMENT_DEFINITION_TEST = new ParserE
rrorCode.con3('DEPRECATED_ARGUMENT_DEFINITION_TEST', 16, "The argument definitio
n test ('?' operator) has been deprecated"); |
| 5766 static final ParserErrorCode DIRECTIVE_AFTER_DECLARATION = new ParserErrorCode
.con2('DIRECTIVE_AFTER_DECLARATION', 17, "Directives must appear before any decl
arations"); | 5766 static final ParserErrorCode DIRECTIVE_AFTER_DECLARATION = new ParserErrorCode
.con3('DIRECTIVE_AFTER_DECLARATION', 17, "Directives must appear before any decl
arations"); |
| 5767 static final ParserErrorCode DUPLICATE_LABEL_IN_SWITCH_STATEMENT = new ParserE
rrorCode.con2('DUPLICATE_LABEL_IN_SWITCH_STATEMENT', 18, "The label %s was alrea
dy used in this switch statement"); | 5767 static final ParserErrorCode DUPLICATE_LABEL_IN_SWITCH_STATEMENT = new ParserE
rrorCode.con3('DUPLICATE_LABEL_IN_SWITCH_STATEMENT', 18, "The label %s was alrea
dy used in this switch statement"); |
| 5768 static final ParserErrorCode DUPLICATED_MODIFIER = new ParserErrorCode.con2('D
UPLICATED_MODIFIER', 19, "The modifier '%s' was already specified."); | 5768 static final ParserErrorCode DUPLICATED_MODIFIER = new ParserErrorCode.con3('D
UPLICATED_MODIFIER', 19, "The modifier '%s' was already specified."); |
| 5769 static final ParserErrorCode EQUALITY_CANNOT_BE_EQUALITY_OPERAND = new ParserE
rrorCode.con2('EQUALITY_CANNOT_BE_EQUALITY_OPERAND', 20, "Equality expression ca
nnot be operand of another equality expression."); | 5769 static final ParserErrorCode EQUALITY_CANNOT_BE_EQUALITY_OPERAND = new ParserE
rrorCode.con3('EQUALITY_CANNOT_BE_EQUALITY_OPERAND', 20, "Equality expression ca
nnot be operand of another equality expression."); |
| 5770 static final ParserErrorCode EXPECTED_CASE_OR_DEFAULT = new ParserErrorCode.co
n2('EXPECTED_CASE_OR_DEFAULT', 21, "Expected 'case' or 'default'"); | 5770 static final ParserErrorCode EXPECTED_CASE_OR_DEFAULT = new ParserErrorCode.co
n3('EXPECTED_CASE_OR_DEFAULT', 21, "Expected 'case' or 'default'"); |
| 5771 static final ParserErrorCode EXPECTED_CLASS_MEMBER = new ParserErrorCode.con2(
'EXPECTED_CLASS_MEMBER', 22, "Expected a class member"); | 5771 static final ParserErrorCode EXPECTED_CLASS_MEMBER = new ParserErrorCode.con3(
'EXPECTED_CLASS_MEMBER', 22, "Expected a class member"); |
| 5772 static final ParserErrorCode EXPECTED_EXECUTABLE = new ParserErrorCode.con2('E
XPECTED_EXECUTABLE', 23, "Expected a method, getter, setter or operator declarat
ion"); | 5772 static final ParserErrorCode EXPECTED_EXECUTABLE = new ParserErrorCode.con3('E
XPECTED_EXECUTABLE', 23, "Expected a method, getter, setter or operator declarat
ion"); |
| 5773 static final ParserErrorCode EXPECTED_LIST_OR_MAP_LITERAL = new ParserErrorCod
e.con2('EXPECTED_LIST_OR_MAP_LITERAL', 24, "Expected a list or map literal"); | 5773 static final ParserErrorCode EXPECTED_LIST_OR_MAP_LITERAL = new ParserErrorCod
e.con3('EXPECTED_LIST_OR_MAP_LITERAL', 24, "Expected a list or map literal"); |
| 5774 static final ParserErrorCode EXPECTED_STRING_LITERAL = new ParserErrorCode.con
2('EXPECTED_STRING_LITERAL', 25, "Expected a string literal"); | 5774 static final ParserErrorCode EXPECTED_STRING_LITERAL = new ParserErrorCode.con
3('EXPECTED_STRING_LITERAL', 25, "Expected a string literal"); |
| 5775 static final ParserErrorCode EXPECTED_TOKEN = new ParserErrorCode.con2('EXPECT
ED_TOKEN', 26, "Expected to find '%s'"); | 5775 static final ParserErrorCode EXPECTED_TOKEN = new ParserErrorCode.con3('EXPECT
ED_TOKEN', 26, "Expected to find '%s'"); |
| 5776 static final ParserErrorCode EXPECTED_ONE_LIST_TYPE_ARGUMENTS = new ParserErro
rCode.con2('EXPECTED_ONE_LIST_TYPE_ARGUMENTS', 27, "List literal requires exactl
y one type arguments or none, but %d found"); | 5776 static final ParserErrorCode EXPECTED_ONE_LIST_TYPE_ARGUMENTS = new ParserErro
rCode.con3('EXPECTED_ONE_LIST_TYPE_ARGUMENTS', 27, "List literal requires exactl
y one type arguments or none, but %d found"); |
| 5777 static final ParserErrorCode EXPECTED_TWO_MAP_TYPE_ARGUMENTS = new ParserError
Code.con2('EXPECTED_TWO_MAP_TYPE_ARGUMENTS', 28, "Map literal requires exactly t
wo type arguments or none, but %d found"); | 5777 static final ParserErrorCode EXPECTED_TWO_MAP_TYPE_ARGUMENTS = new ParserError
Code.con3('EXPECTED_TWO_MAP_TYPE_ARGUMENTS', 28, "Map literal requires exactly t
wo type arguments or none, but %d found"); |
| 5778 static final ParserErrorCode EXPECTED_TYPE_NAME = new ParserErrorCode.con2('EX
PECTED_TYPE_NAME', 29, "Expected a type name"); | 5778 static final ParserErrorCode EXPECTED_TYPE_NAME = new ParserErrorCode.con3('EX
PECTED_TYPE_NAME', 29, "Expected a type name"); |
| 5779 static final ParserErrorCode EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new Parse
rErrorCode.con2('EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 30, "Export directives
must preceed part directives"); | 5779 static final ParserErrorCode EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new Parse
rErrorCode.con3('EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 30, "Export directives
must preceed part directives"); |
| 5780 static final ParserErrorCode EXTERNAL_AFTER_CONST = new ParserErrorCode.con2('
EXTERNAL_AFTER_CONST', 31, "The modifier 'external' should be before the modifie
r 'const'"); | 5780 static final ParserErrorCode EXTERNAL_AFTER_CONST = new ParserErrorCode.con3('
EXTERNAL_AFTER_CONST', 31, "The modifier 'external' should be before the modifie
r 'const'"); |
| 5781 static final ParserErrorCode EXTERNAL_AFTER_FACTORY = new ParserErrorCode.con2
('EXTERNAL_AFTER_FACTORY', 32, "The modifier 'external' should be before the mod
ifier 'factory'"); | 5781 static final ParserErrorCode EXTERNAL_AFTER_FACTORY = new ParserErrorCode.con3
('EXTERNAL_AFTER_FACTORY', 32, "The modifier 'external' should be before the mod
ifier 'factory'"); |
| 5782 static final ParserErrorCode EXTERNAL_AFTER_STATIC = new ParserErrorCode.con2(
'EXTERNAL_AFTER_STATIC', 33, "The modifier 'external' should be before the modif
ier 'static'"); | 5782 static final ParserErrorCode EXTERNAL_AFTER_STATIC = new ParserErrorCode.con3(
'EXTERNAL_AFTER_STATIC', 33, "The modifier 'external' should be before the modif
ier 'static'"); |
| 5783 static final ParserErrorCode EXTERNAL_CLASS = new ParserErrorCode.con2('EXTERN
AL_CLASS', 34, "Classes cannot be declared to be 'external'"); | 5783 static final ParserErrorCode EXTERNAL_CLASS = new ParserErrorCode.con3('EXTERN
AL_CLASS', 34, "Classes cannot be declared to be 'external'"); |
| 5784 static final ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_BODY = new ParserErrorC
ode.con2('EXTERNAL_CONSTRUCTOR_WITH_BODY', 35, "External constructors cannot hav
e a body"); | 5784 static final ParserErrorCode EXTERNAL_CONSTRUCTOR_WITH_BODY = new ParserErrorC
ode.con3('EXTERNAL_CONSTRUCTOR_WITH_BODY', 35, "External constructors cannot hav
e a body"); |
| 5785 static final ParserErrorCode EXTERNAL_FIELD = new ParserErrorCode.con2('EXTERN
AL_FIELD', 36, "Fields cannot be declared to be 'external'"); | 5785 static final ParserErrorCode EXTERNAL_FIELD = new ParserErrorCode.con3('EXTERN
AL_FIELD', 36, "Fields cannot be declared to be 'external'"); |
| 5786 static final ParserErrorCode EXTERNAL_GETTER_WITH_BODY = new ParserErrorCode.c
on2('EXTERNAL_GETTER_WITH_BODY', 37, "External getters cannot have a body"); | 5786 static final ParserErrorCode EXTERNAL_GETTER_WITH_BODY = new ParserErrorCode.c
on3('EXTERNAL_GETTER_WITH_BODY', 37, "External getters cannot have a body"); |
| 5787 static final ParserErrorCode EXTERNAL_METHOD_WITH_BODY = new ParserErrorCode.c
on2('EXTERNAL_METHOD_WITH_BODY', 38, "External methods cannot have a body"); | 5787 static final ParserErrorCode EXTERNAL_METHOD_WITH_BODY = new ParserErrorCode.c
on3('EXTERNAL_METHOD_WITH_BODY', 38, "External methods cannot have a body"); |
| 5788 static final ParserErrorCode EXTERNAL_OPERATOR_WITH_BODY = new ParserErrorCode
.con2('EXTERNAL_OPERATOR_WITH_BODY', 39, "External operators cannot have a body"
); | 5788 static final ParserErrorCode EXTERNAL_OPERATOR_WITH_BODY = new ParserErrorCode
.con3('EXTERNAL_OPERATOR_WITH_BODY', 39, "External operators cannot have a body"
); |
| 5789 static final ParserErrorCode EXTERNAL_SETTER_WITH_BODY = new ParserErrorCode.c
on2('EXTERNAL_SETTER_WITH_BODY', 40, "External setters cannot have a body"); | 5789 static final ParserErrorCode EXTERNAL_SETTER_WITH_BODY = new ParserErrorCode.c
on3('EXTERNAL_SETTER_WITH_BODY', 40, "External setters cannot have a body"); |
| 5790 static final ParserErrorCode EXTERNAL_TYPEDEF = new ParserErrorCode.con2('EXTE
RNAL_TYPEDEF', 41, "Type aliases cannot be declared to be 'external'"); | 5790 static final ParserErrorCode EXTERNAL_TYPEDEF = new ParserErrorCode.con3('EXTE
RNAL_TYPEDEF', 41, "Type aliases cannot be declared to be 'external'"); |
| 5791 static final ParserErrorCode FACTORY_TOP_LEVEL_DECLARATION = new ParserErrorCo
de.con2('FACTORY_TOP_LEVEL_DECLARATION', 42, "Top-level declarations cannot be d
eclared to be 'factory'"); | 5791 static final ParserErrorCode FACTORY_TOP_LEVEL_DECLARATION = new ParserErrorCo
de.con3('FACTORY_TOP_LEVEL_DECLARATION', 42, "Top-level declarations cannot be d
eclared to be 'factory'"); |
| 5792 static final ParserErrorCode FACTORY_WITHOUT_BODY = new ParserErrorCode.con2('
FACTORY_WITHOUT_BODY', 43, "A non-redirecting 'factory' constructor must have a
body"); | 5792 static final ParserErrorCode FACTORY_WITHOUT_BODY = new ParserErrorCode.con3('
FACTORY_WITHOUT_BODY', 43, "A non-redirecting 'factory' constructor must have a
body"); |
| 5793 static final ParserErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR = new Parse
rErrorCode.con2('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR', 44, "Field initializers
can only be used in a constructor"); | 5793 static final ParserErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR = new Parse
rErrorCode.con3('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR', 44, "Field initializers
can only be used in a constructor"); |
| 5794 static final ParserErrorCode FINAL_AND_VAR = new ParserErrorCode.con2('FINAL_A
ND_VAR', 45, "Members cannot be declared to be both 'final' and 'var'"); | 5794 static final ParserErrorCode FINAL_AND_VAR = new ParserErrorCode.con3('FINAL_A
ND_VAR', 45, "Members cannot be declared to be both 'final' and 'var'"); |
| 5795 static final ParserErrorCode FINAL_CLASS = new ParserErrorCode.con2('FINAL_CLA
SS', 46, "Classes cannot be declared to be 'final'"); | 5795 static final ParserErrorCode FINAL_CLASS = new ParserErrorCode.con3('FINAL_CLA
SS', 46, "Classes cannot be declared to be 'final'"); |
| 5796 static final ParserErrorCode FINAL_CONSTRUCTOR = new ParserErrorCode.con2('FIN
AL_CONSTRUCTOR', 47, "A constructor cannot be declared to be 'final'"); | 5796 static final ParserErrorCode FINAL_CONSTRUCTOR = new ParserErrorCode.con3('FIN
AL_CONSTRUCTOR', 47, "A constructor cannot be declared to be 'final'"); |
| 5797 static final ParserErrorCode FINAL_METHOD = new ParserErrorCode.con2('FINAL_ME
THOD', 48, "Getters, setters and methods cannot be declared to be 'final'"); | 5797 static final ParserErrorCode FINAL_METHOD = new ParserErrorCode.con3('FINAL_ME
THOD', 48, "Getters, setters and methods cannot be declared to be 'final'"); |
| 5798 static final ParserErrorCode FINAL_TYPEDEF = new ParserErrorCode.con2('FINAL_T
YPEDEF', 49, "Type aliases cannot be declared to be 'final'"); | 5798 static final ParserErrorCode FINAL_TYPEDEF = new ParserErrorCode.con3('FINAL_T
YPEDEF', 49, "Type aliases cannot be declared to be 'final'"); |
| 5799 static final ParserErrorCode FUNCTION_TYPED_PARAMETER_VAR = new ParserErrorCod
e.con2('FUNCTION_TYPED_PARAMETER_VAR', 50, "Function typed parameters cannot spe
cify 'const', 'final' or 'var' instead of return type"); | 5799 static final ParserErrorCode FUNCTION_TYPED_PARAMETER_VAR = new ParserErrorCod
e.con3('FUNCTION_TYPED_PARAMETER_VAR', 50, "Function typed parameters cannot spe
cify 'const', 'final' or 'var' instead of return type"); |
| 5800 static final ParserErrorCode GETTER_WITH_PARAMETERS = new ParserErrorCode.con2
('GETTER_WITH_PARAMETERS', 51, "Getter should be declared without a parameter li
st"); | 5800 static final ParserErrorCode GETTER_WITH_PARAMETERS = new ParserErrorCode.con3
('GETTER_WITH_PARAMETERS', 51, "Getter should be declared without a parameter li
st"); |
| 5801 static final ParserErrorCode ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE = new Parser
ErrorCode.con2('ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE', 52, "Illegal assignment t
o non-assignable expression"); | 5801 static final ParserErrorCode ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE = new Parser
ErrorCode.con3('ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE', 52, "Illegal assignment t
o non-assignable expression"); |
| 5802 static final ParserErrorCode IMPLEMENTS_BEFORE_EXTENDS = new ParserErrorCode.c
on2('IMPLEMENTS_BEFORE_EXTENDS', 53, "The extends clause must be before the impl
ements clause"); | 5802 static final ParserErrorCode IMPLEMENTS_BEFORE_EXTENDS = new ParserErrorCode.c
on3('IMPLEMENTS_BEFORE_EXTENDS', 53, "The extends clause must be before the impl
ements clause"); |
| 5803 static final ParserErrorCode IMPLEMENTS_BEFORE_WITH = new ParserErrorCode.con2
('IMPLEMENTS_BEFORE_WITH', 54, "The with clause must be before the implements cl
ause"); | 5803 static final ParserErrorCode IMPLEMENTS_BEFORE_WITH = new ParserErrorCode.con3
('IMPLEMENTS_BEFORE_WITH', 54, "The with clause must be before the implements cl
ause"); |
| 5804 static final ParserErrorCode IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new Parse
rErrorCode.con2('IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 55, "Import directives
must preceed part directives"); | 5804 static final ParserErrorCode IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE = new Parse
rErrorCode.con3('IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE', 55, "Import directives
must preceed part directives"); |
| 5805 static final ParserErrorCode INITIALIZED_VARIABLE_IN_FOR_EACH = new ParserErro
rCode.con2('INITIALIZED_VARIABLE_IN_FOR_EACH', 56, "The loop variable in a for-e
ach loop cannot be initialized"); | 5805 static final ParserErrorCode INITIALIZED_VARIABLE_IN_FOR_EACH = new ParserErro
rCode.con3('INITIALIZED_VARIABLE_IN_FOR_EACH', 56, "The loop variable in a for-e
ach loop cannot be initialized"); |
| 5806 static final ParserErrorCode INVALID_CODE_POINT = new ParserErrorCode.con2('IN
VALID_CODE_POINT', 57, "The escape sequence '%s' is not a valid code point"); | 5806 static final ParserErrorCode INVALID_CODE_POINT = new ParserErrorCode.con3('IN
VALID_CODE_POINT', 57, "The escape sequence '%s' is not a valid code point"); |
| 5807 static final ParserErrorCode INVALID_COMMENT_REFERENCE = new ParserErrorCode.c
on2('INVALID_COMMENT_REFERENCE', 58, "Comment references should contain a possib
ly prefixed identifier and can start with 'new', but should not contain anything
else"); | 5807 static final ParserErrorCode INVALID_COMMENT_REFERENCE = new ParserErrorCode.c
on3('INVALID_COMMENT_REFERENCE', 58, "Comment references should contain a possib
ly prefixed identifier and can start with 'new', but should not contain anything
else"); |
| 5808 static final ParserErrorCode INVALID_HEX_ESCAPE = new ParserErrorCode.con2('IN
VALID_HEX_ESCAPE', 59, "An escape sequence starting with '\\x' must be followed
by 2 hexidecimal digits"); | 5808 static final ParserErrorCode INVALID_HEX_ESCAPE = new ParserErrorCode.con3('IN
VALID_HEX_ESCAPE', 59, "An escape sequence starting with '\\x' must be followed
by 2 hexidecimal digits"); |
| 5809 static final ParserErrorCode INVALID_OPERATOR = new ParserErrorCode.con2('INVA
LID_OPERATOR', 60, "The string '%s' is not a valid operator"); | 5809 static final ParserErrorCode INVALID_OPERATOR = new ParserErrorCode.con3('INVA
LID_OPERATOR', 60, "The string '%s' is not a valid operator"); |
| 5810 static final ParserErrorCode INVALID_OPERATOR_FOR_SUPER = new ParserErrorCode.
con2('INVALID_OPERATOR_FOR_SUPER', 61, "The operator '%s' cannot be used with 's
uper'"); | 5810 static final ParserErrorCode INVALID_OPERATOR_FOR_SUPER = new ParserErrorCode.
con3('INVALID_OPERATOR_FOR_SUPER', 61, "The operator '%s' cannot be used with 's
uper'"); |
| 5811 static final ParserErrorCode INVALID_UNICODE_ESCAPE = new ParserErrorCode.con2
('INVALID_UNICODE_ESCAPE', 62, "An escape sequence starting with '\\u' must be f
ollowed by 4 hexidecimal digits or from 1 to 6 digits between '{' and '}'"); | 5811 static final ParserErrorCode INVALID_UNICODE_ESCAPE = new ParserErrorCode.con3
('INVALID_UNICODE_ESCAPE', 62, "An escape sequence starting with '\\u' must be f
ollowed by 4 hexidecimal digits or from 1 to 6 digits between '{' and '}'"); |
| 5812 static final ParserErrorCode LIBRARY_DIRECTIVE_NOT_FIRST = new ParserErrorCode
.con2('LIBRARY_DIRECTIVE_NOT_FIRST', 63, "The library directive must appear befo
re all other directives"); | 5812 static final ParserErrorCode LIBRARY_DIRECTIVE_NOT_FIRST = new ParserErrorCode
.con3('LIBRARY_DIRECTIVE_NOT_FIRST', 63, "The library directive must appear befo
re all other directives"); |
| 5813 static final ParserErrorCode LOCAL_FUNCTION_DECLARATION_MODIFIER = new ParserE
rrorCode.con2('LOCAL_FUNCTION_DECLARATION_MODIFIER', 64, "Local function declara
tions cannot specify any modifier"); | 5813 static final ParserErrorCode LOCAL_FUNCTION_DECLARATION_MODIFIER = new ParserE
rrorCode.con3('LOCAL_FUNCTION_DECLARATION_MODIFIER', 64, "Local function declara
tions cannot specify any modifier"); |
| 5814 static final ParserErrorCode MISSING_ASSIGNABLE_SELECTOR = new ParserErrorCode
.con2('MISSING_ASSIGNABLE_SELECTOR', 65, "Missing selector such as \".<identifie
r>\" or \"[0]\""); | 5814 static final ParserErrorCode MISSING_ASSIGNABLE_SELECTOR = new ParserErrorCode
.con3('MISSING_ASSIGNABLE_SELECTOR', 65, "Missing selector such as \".<identifie
r>\" or \"[0]\""); |
| 5815 static final ParserErrorCode MISSING_CATCH_OR_FINALLY = new ParserErrorCode.co
n2('MISSING_CATCH_OR_FINALLY', 66, "A try statement must have either a catch or
finally clause"); | 5815 static final ParserErrorCode MISSING_CATCH_OR_FINALLY = new ParserErrorCode.co
n3('MISSING_CATCH_OR_FINALLY', 66, "A try statement must have either a catch or
finally clause"); |
| 5816 static final ParserErrorCode MISSING_CLASS_BODY = new ParserErrorCode.con2('MI
SSING_CLASS_BODY', 67, "A class definition must have a body, even if it is empty
"); | 5816 static final ParserErrorCode MISSING_CLASS_BODY = new ParserErrorCode.con3('MI
SSING_CLASS_BODY', 67, "A class definition must have a body, even if it is empty
"); |
| 5817 static final ParserErrorCode MISSING_CLOSING_PARENTHESIS = new ParserErrorCode
.con2('MISSING_CLOSING_PARENTHESIS', 68, "The closing parenthesis is missing"); | 5817 static final ParserErrorCode MISSING_CLOSING_PARENTHESIS = new ParserErrorCode
.con3('MISSING_CLOSING_PARENTHESIS', 68, "The closing parenthesis is missing"); |
| 5818 static final ParserErrorCode MISSING_CONST_FINAL_VAR_OR_TYPE = new ParserError
Code.con2('MISSING_CONST_FINAL_VAR_OR_TYPE', 69, "Variables must be declared usi
ng the keywords 'const', 'final', 'var' or a type name"); | 5818 static final ParserErrorCode MISSING_CONST_FINAL_VAR_OR_TYPE = new ParserError
Code.con3('MISSING_CONST_FINAL_VAR_OR_TYPE', 69, "Variables must be declared usi
ng the keywords 'const', 'final', 'var' or a type name"); |
| 5819 static final ParserErrorCode MISSING_EXPRESSION_IN_THROW = new ParserErrorCode
.con2('MISSING_EXPRESSION_IN_THROW', 70, "Throw expressions must compute the obj
ect to be thrown"); | 5819 static final ParserErrorCode MISSING_EXPRESSION_IN_THROW = new ParserErrorCode
.con3('MISSING_EXPRESSION_IN_THROW', 70, "Throw expressions must compute the obj
ect to be thrown"); |
| 5820 static final ParserErrorCode MISSING_FUNCTION_BODY = new ParserErrorCode.con2(
'MISSING_FUNCTION_BODY', 71, "A function body must be provided"); | 5820 static final ParserErrorCode MISSING_FUNCTION_BODY = new ParserErrorCode.con3(
'MISSING_FUNCTION_BODY', 71, "A function body must be provided"); |
| 5821 static final ParserErrorCode MISSING_FUNCTION_PARAMETERS = new ParserErrorCode
.con2('MISSING_FUNCTION_PARAMETERS', 72, "Functions must have an explicit list o
f parameters"); | 5821 static final ParserErrorCode MISSING_FUNCTION_PARAMETERS = new ParserErrorCode
.con3('MISSING_FUNCTION_PARAMETERS', 72, "Functions must have an explicit list o
f parameters"); |
| 5822 static final ParserErrorCode MISSING_IDENTIFIER = new ParserErrorCode.con2('MI
SSING_IDENTIFIER', 73, "Expected an identifier"); | 5822 static final ParserErrorCode MISSING_IDENTIFIER = new ParserErrorCode.con3('MI
SSING_IDENTIFIER', 73, "Expected an identifier"); |
| 5823 static final ParserErrorCode MISSING_KEYWORD_OPERATOR = new ParserErrorCode.co
n2('MISSING_KEYWORD_OPERATOR', 74, "Operator declarations must be preceeded by t
he keyword 'operator'"); | 5823 static final ParserErrorCode MISSING_KEYWORD_OPERATOR = new ParserErrorCode.co
n3('MISSING_KEYWORD_OPERATOR', 74, "Operator declarations must be preceeded by t
he keyword 'operator'"); |
| 5824 static final ParserErrorCode MISSING_NAME_IN_LIBRARY_DIRECTIVE = new ParserErr
orCode.con2('MISSING_NAME_IN_LIBRARY_DIRECTIVE', 75, "Library directives must in
clude a library name"); | 5824 static final ParserErrorCode MISSING_NAME_IN_LIBRARY_DIRECTIVE = new ParserErr
orCode.con3('MISSING_NAME_IN_LIBRARY_DIRECTIVE', 75, "Library directives must in
clude a library name"); |
| 5825 static final ParserErrorCode MISSING_NAME_IN_PART_OF_DIRECTIVE = new ParserErr
orCode.con2('MISSING_NAME_IN_PART_OF_DIRECTIVE', 76, "Library directives must in
clude a library name"); | 5825 static final ParserErrorCode MISSING_NAME_IN_PART_OF_DIRECTIVE = new ParserErr
orCode.con3('MISSING_NAME_IN_PART_OF_DIRECTIVE', 76, "Library directives must in
clude a library name"); |
| 5826 static final ParserErrorCode MISSING_STATEMENT = new ParserErrorCode.con2('MIS
SING_STATEMENT', 77, "Expected a statement"); | 5826 static final ParserErrorCode MISSING_STATEMENT = new ParserErrorCode.con3('MIS
SING_STATEMENT', 77, "Expected a statement"); |
| 5827 static final ParserErrorCode MISSING_TERMINATOR_FOR_PARAMETER_GROUP = new Pars
erErrorCode.con2('MISSING_TERMINATOR_FOR_PARAMETER_GROUP', 78, "There is no '%s'
to close the parameter group"); | 5827 static final ParserErrorCode MISSING_TERMINATOR_FOR_PARAMETER_GROUP = new Pars
erErrorCode.con3('MISSING_TERMINATOR_FOR_PARAMETER_GROUP', 78, "There is no '%s'
to close the parameter group"); |
| 5828 static final ParserErrorCode MISSING_TYPEDEF_PARAMETERS = new ParserErrorCode.
con2('MISSING_TYPEDEF_PARAMETERS', 79, "Type aliases for functions must have an
explicit list of parameters"); | 5828 static final ParserErrorCode MISSING_TYPEDEF_PARAMETERS = new ParserErrorCode.
con3('MISSING_TYPEDEF_PARAMETERS', 79, "Type aliases for functions must have an
explicit list of parameters"); |
| 5829 static final ParserErrorCode MISSING_VARIABLE_IN_FOR_EACH = new ParserErrorCod
e.con2('MISSING_VARIABLE_IN_FOR_EACH', 80, "A loop variable must be declared in
a for-each loop before the 'in', but none were found"); | 5829 static final ParserErrorCode MISSING_VARIABLE_IN_FOR_EACH = new ParserErrorCod
e.con3('MISSING_VARIABLE_IN_FOR_EACH', 80, "A loop variable must be declared in
a for-each loop before the 'in', but none were found"); |
| 5830 static final ParserErrorCode MIXED_PARAMETER_GROUPS = new ParserErrorCode.con2
('MIXED_PARAMETER_GROUPS', 81, "Cannot have both positional and named parameters
in a single parameter list"); | 5830 static final ParserErrorCode MIXED_PARAMETER_GROUPS = new ParserErrorCode.con3
('MIXED_PARAMETER_GROUPS', 81, "Cannot have both positional and named parameters
in a single parameter list"); |
| 5831 static final ParserErrorCode MULTIPLE_EXTENDS_CLAUSES = new ParserErrorCode.co
n2('MULTIPLE_EXTENDS_CLAUSES', 82, "Each class definition can have at most one e
xtends clause"); | 5831 static final ParserErrorCode MULTIPLE_EXTENDS_CLAUSES = new ParserErrorCode.co
n3('MULTIPLE_EXTENDS_CLAUSES', 82, "Each class definition can have at most one e
xtends clause"); |
| 5832 static final ParserErrorCode MULTIPLE_IMPLEMENTS_CLAUSES = new ParserErrorCode
.con2('MULTIPLE_IMPLEMENTS_CLAUSES', 83, "Each class definition can have at most
one implements clause"); | 5832 static final ParserErrorCode MULTIPLE_IMPLEMENTS_CLAUSES = new ParserErrorCode
.con3('MULTIPLE_IMPLEMENTS_CLAUSES', 83, "Each class definition can have at most
one implements clause"); |
| 5833 static final ParserErrorCode MULTIPLE_LIBRARY_DIRECTIVES = new ParserErrorCode
.con2('MULTIPLE_LIBRARY_DIRECTIVES', 84, "Only one library directive may be decl
ared in a file"); | 5833 static final ParserErrorCode MULTIPLE_LIBRARY_DIRECTIVES = new ParserErrorCode
.con3('MULTIPLE_LIBRARY_DIRECTIVES', 84, "Only one library directive may be decl
ared in a file"); |
| 5834 static final ParserErrorCode MULTIPLE_NAMED_PARAMETER_GROUPS = new ParserError
Code.con2('MULTIPLE_NAMED_PARAMETER_GROUPS', 85, "Cannot have multiple groups of
named parameters in a single parameter list"); | 5834 static final ParserErrorCode MULTIPLE_NAMED_PARAMETER_GROUPS = new ParserError
Code.con3('MULTIPLE_NAMED_PARAMETER_GROUPS', 85, "Cannot have multiple groups of
named parameters in a single parameter list"); |
| 5835 static final ParserErrorCode MULTIPLE_PART_OF_DIRECTIVES = new ParserErrorCode
.con2('MULTIPLE_PART_OF_DIRECTIVES', 86, "Only one part-of directive may be decl
ared in a file"); | 5835 static final ParserErrorCode MULTIPLE_PART_OF_DIRECTIVES = new ParserErrorCode
.con3('MULTIPLE_PART_OF_DIRECTIVES', 86, "Only one part-of directive may be decl
ared in a file"); |
| 5836 static final ParserErrorCode MULTIPLE_POSITIONAL_PARAMETER_GROUPS = new Parser
ErrorCode.con2('MULTIPLE_POSITIONAL_PARAMETER_GROUPS', 87, "Cannot have multiple
groups of positional parameters in a single parameter list"); | 5836 static final ParserErrorCode MULTIPLE_POSITIONAL_PARAMETER_GROUPS = new Parser
ErrorCode.con3('MULTIPLE_POSITIONAL_PARAMETER_GROUPS', 87, "Cannot have multiple
groups of positional parameters in a single parameter list"); |
| 5837 static final ParserErrorCode MULTIPLE_VARIABLES_IN_FOR_EACH = new ParserErrorC
ode.con2('MULTIPLE_VARIABLES_IN_FOR_EACH', 88, "A single loop variable must be d
eclared in a for-each loop before the 'in', but %s were found"); | 5837 static final ParserErrorCode MULTIPLE_VARIABLES_IN_FOR_EACH = new ParserErrorC
ode.con3('MULTIPLE_VARIABLES_IN_FOR_EACH', 88, "A single loop variable must be d
eclared in a for-each loop before the 'in', but %s were found"); |
| 5838 static final ParserErrorCode MULTIPLE_WITH_CLAUSES = new ParserErrorCode.con2(
'MULTIPLE_WITH_CLAUSES', 89, "Each class definition can have at most one with cl
ause"); | 5838 static final ParserErrorCode MULTIPLE_WITH_CLAUSES = new ParserErrorCode.con3(
'MULTIPLE_WITH_CLAUSES', 89, "Each class definition can have at most one with cl
ause"); |
| 5839 static final ParserErrorCode NAMED_FUNCTION_EXPRESSION = new ParserErrorCode.c
on2('NAMED_FUNCTION_EXPRESSION', 90, "Function expressions cannot be named"); | 5839 static final ParserErrorCode NAMED_FUNCTION_EXPRESSION = new ParserErrorCode.c
on3('NAMED_FUNCTION_EXPRESSION', 90, "Function expressions cannot be named"); |
| 5840 static final ParserErrorCode NAMED_PARAMETER_OUTSIDE_GROUP = new ParserErrorCo
de.con2('NAMED_PARAMETER_OUTSIDE_GROUP', 91, "Named parameters must be enclosed
in curly braces ('{' and '}')"); | 5840 static final ParserErrorCode NAMED_PARAMETER_OUTSIDE_GROUP = new ParserErrorCo
de.con3('NAMED_PARAMETER_OUTSIDE_GROUP', 91, "Named parameters must be enclosed
in curly braces ('{' and '}')"); |
| 5841 static final ParserErrorCode NATIVE_CLAUSE_IN_NON_SDK_CODE = new ParserErrorCo
de.con2('NATIVE_CLAUSE_IN_NON_SDK_CODE', 92, "Native clause can only be used in
the SDK and code that is loaded through native extensions"); | 5841 static final ParserErrorCode NATIVE_CLAUSE_IN_NON_SDK_CODE = new ParserErrorCo
de.con3('NATIVE_CLAUSE_IN_NON_SDK_CODE', 92, "Native clause can only be used in
the SDK and code that is loaded through native extensions"); |
| 5842 static final ParserErrorCode NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE = new Parser
ErrorCode.con2('NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE', 93, "Native functions can
only be declared in the SDK and code that is loaded through native extensions")
; | 5842 static final ParserErrorCode NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE = new Parser
ErrorCode.con3('NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE', 93, "Native functions can
only be declared in the SDK and code that is loaded through native extensions")
; |
| 5843 static final ParserErrorCode NON_CONSTRUCTOR_FACTORY = new ParserErrorCode.con
2('NON_CONSTRUCTOR_FACTORY', 94, "Only constructors can be declared to be a 'fac
tory'"); | 5843 static final ParserErrorCode NON_CONSTRUCTOR_FACTORY = new ParserErrorCode.con
3('NON_CONSTRUCTOR_FACTORY', 94, "Only constructors can be declared to be a 'fac
tory'"); |
| 5844 static final ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = new ParserErrorCode
.con2('NON_IDENTIFIER_LIBRARY_NAME', 95, "The name of a library must be an ident
ifier"); | 5844 static final ParserErrorCode NON_IDENTIFIER_LIBRARY_NAME = new ParserErrorCode
.con3('NON_IDENTIFIER_LIBRARY_NAME', 95, "The name of a library must be an ident
ifier"); |
| 5845 static final ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = new ParserErrorCo
de.con2('NON_PART_OF_DIRECTIVE_IN_PART', 96, "The part-of directive must be the
only directive in a part"); | 5845 static final ParserErrorCode NON_PART_OF_DIRECTIVE_IN_PART = new ParserErrorCo
de.con3('NON_PART_OF_DIRECTIVE_IN_PART', 96, "The part-of directive must be the
only directive in a part"); |
| 5846 static final ParserErrorCode NON_USER_DEFINABLE_OPERATOR = new ParserErrorCode
.con2('NON_USER_DEFINABLE_OPERATOR', 97, "The operator '%s' is not user definabl
e"); | 5846 static final ParserErrorCode NON_USER_DEFINABLE_OPERATOR = new ParserErrorCode
.con3('NON_USER_DEFINABLE_OPERATOR', 97, "The operator '%s' is not user definabl
e"); |
| 5847 static final ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS = new ParserErr
orCode.con2('NORMAL_BEFORE_OPTIONAL_PARAMETERS', 98, "Normal parameters must occ
ur before optional parameters"); | 5847 static final ParserErrorCode NORMAL_BEFORE_OPTIONAL_PARAMETERS = new ParserErr
orCode.con3('NORMAL_BEFORE_OPTIONAL_PARAMETERS', 98, "Normal parameters must occ
ur before optional parameters"); |
| 5848 static final ParserErrorCode POSITIONAL_AFTER_NAMED_ARGUMENT = new ParserError
Code.con2('POSITIONAL_AFTER_NAMED_ARGUMENT', 99, "Positional arguments must occu
r before named arguments"); | 5848 static final ParserErrorCode POSITIONAL_AFTER_NAMED_ARGUMENT = new ParserError
Code.con3('POSITIONAL_AFTER_NAMED_ARGUMENT', 99, "Positional arguments must occu
r before named arguments"); |
| 5849 static final ParserErrorCode POSITIONAL_PARAMETER_OUTSIDE_GROUP = new ParserEr
rorCode.con2('POSITIONAL_PARAMETER_OUTSIDE_GROUP', 100, "Positional parameters m
ust be enclosed in square brackets ('[' and ']')"); | 5849 static final ParserErrorCode POSITIONAL_PARAMETER_OUTSIDE_GROUP = new ParserEr
rorCode.con3('POSITIONAL_PARAMETER_OUTSIDE_GROUP', 100, "Positional parameters m
ust be enclosed in square brackets ('[' and ']')"); |
| 5850 static final ParserErrorCode REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR = new Pars
erErrorCode.con2('REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR', 101, "Only factory co
nstructor can specify '=' redirection."); | 5850 static final ParserErrorCode REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR = new Pars
erErrorCode.con3('REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR', 101, "Only factory co
nstructor can specify '=' redirection."); |
| 5851 static final ParserErrorCode STATIC_AFTER_CONST = new ParserErrorCode.con2('ST
ATIC_AFTER_CONST', 102, "The modifier 'static' should be before the modifier 'co
nst'"); | 5851 static final ParserErrorCode STATIC_AFTER_CONST = new ParserErrorCode.con3('ST
ATIC_AFTER_CONST', 102, "The modifier 'static' should be before the modifier 'co
nst'"); |
| 5852 static final ParserErrorCode STATIC_AFTER_FINAL = new ParserErrorCode.con2('ST
ATIC_AFTER_FINAL', 103, "The modifier 'static' should be before the modifier 'fi
nal'"); | 5852 static final ParserErrorCode STATIC_AFTER_FINAL = new ParserErrorCode.con3('ST
ATIC_AFTER_FINAL', 103, "The modifier 'static' should be before the modifier 'fi
nal'"); |
| 5853 static final ParserErrorCode STATIC_AFTER_VAR = new ParserErrorCode.con2('STAT
IC_AFTER_VAR', 104, "The modifier 'static' should be before the modifier 'var'")
; | 5853 static final ParserErrorCode STATIC_AFTER_VAR = new ParserErrorCode.con3('STAT
IC_AFTER_VAR', 104, "The modifier 'static' should be before the modifier 'var'")
; |
| 5854 static final ParserErrorCode STATIC_CONSTRUCTOR = new ParserErrorCode.con2('ST
ATIC_CONSTRUCTOR', 105, "Constructors cannot be static"); | 5854 static final ParserErrorCode STATIC_CONSTRUCTOR = new ParserErrorCode.con3('ST
ATIC_CONSTRUCTOR', 105, "Constructors cannot be static"); |
| 5855 static final ParserErrorCode STATIC_GETTER_WITHOUT_BODY = new ParserErrorCode.
con2('STATIC_GETTER_WITHOUT_BODY', 106, "A 'static' getter must have a body"); | 5855 static final ParserErrorCode STATIC_GETTER_WITHOUT_BODY = new ParserErrorCode.
con3('STATIC_GETTER_WITHOUT_BODY', 106, "A 'static' getter must have a body"); |
| 5856 static final ParserErrorCode STATIC_OPERATOR = new ParserErrorCode.con2('STATI
C_OPERATOR', 107, "Operators cannot be static"); | 5856 static final ParserErrorCode STATIC_OPERATOR = new ParserErrorCode.con3('STATI
C_OPERATOR', 107, "Operators cannot be static"); |
| 5857 static final ParserErrorCode STATIC_SETTER_WITHOUT_BODY = new ParserErrorCode.
con2('STATIC_SETTER_WITHOUT_BODY', 108, "A 'static' setter must have a body"); | 5857 static final ParserErrorCode STATIC_SETTER_WITHOUT_BODY = new ParserErrorCode.
con3('STATIC_SETTER_WITHOUT_BODY', 108, "A 'static' setter must have a body"); |
| 5858 static final ParserErrorCode STATIC_TOP_LEVEL_DECLARATION = new ParserErrorCod
e.con2('STATIC_TOP_LEVEL_DECLARATION', 109, "Top-level declarations cannot be de
clared to be 'static'"); | 5858 static final ParserErrorCode STATIC_TOP_LEVEL_DECLARATION = new ParserErrorCod
e.con3('STATIC_TOP_LEVEL_DECLARATION', 109, "Top-level declarations cannot be de
clared to be 'static'"); |
| 5859 static final ParserErrorCode SWITCH_HAS_CASE_AFTER_DEFAULT_CASE = new ParserEr
rorCode.con2('SWITCH_HAS_CASE_AFTER_DEFAULT_CASE', 110, "The 'default' case shou
ld be the last case in a switch statement"); | 5859 static final ParserErrorCode SWITCH_HAS_CASE_AFTER_DEFAULT_CASE = new ParserEr
rorCode.con3('SWITCH_HAS_CASE_AFTER_DEFAULT_CASE', 110, "The 'default' case shou
ld be the last case in a switch statement"); |
| 5860 static final ParserErrorCode SWITCH_HAS_MULTIPLE_DEFAULT_CASES = new ParserErr
orCode.con2('SWITCH_HAS_MULTIPLE_DEFAULT_CASES', 111, "The 'default' case can on
ly be declared once"); | 5860 static final ParserErrorCode SWITCH_HAS_MULTIPLE_DEFAULT_CASES = new ParserErr
orCode.con3('SWITCH_HAS_MULTIPLE_DEFAULT_CASES', 111, "The 'default' case can on
ly be declared once"); |
| 5861 static final ParserErrorCode TOP_LEVEL_OPERATOR = new ParserErrorCode.con2('TO
P_LEVEL_OPERATOR', 112, "Operators must be declared within a class"); | 5861 static final ParserErrorCode TOP_LEVEL_OPERATOR = new ParserErrorCode.con3('TO
P_LEVEL_OPERATOR', 112, "Operators must be declared within a class"); |
| 5862 static final ParserErrorCode UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP = new P
arserErrorCode.con2('UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP', 113, "There is
no '%s' to open a parameter group"); | 5862 static final ParserErrorCode UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP = new P
arserErrorCode.con3('UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP', 113, "There is
no '%s' to open a parameter group"); |
| 5863 static final ParserErrorCode UNEXPECTED_TOKEN = new ParserErrorCode.con2('UNEX
PECTED_TOKEN', 114, "Unexpected token '%s'"); | 5863 static final ParserErrorCode UNEXPECTED_TOKEN = new ParserErrorCode.con3('UNEX
PECTED_TOKEN', 114, "Unexpected token '%s'"); |
| 5864 static final ParserErrorCode WITH_BEFORE_EXTENDS = new ParserErrorCode.con2('W
ITH_BEFORE_EXTENDS', 115, "The extends clause must be before the with clause"); | 5864 static final ParserErrorCode WITH_BEFORE_EXTENDS = new ParserErrorCode.con3('W
ITH_BEFORE_EXTENDS', 115, "The extends clause must be before the with clause"); |
| 5865 static final ParserErrorCode WITH_WITHOUT_EXTENDS = new ParserErrorCode.con2('
WITH_WITHOUT_EXTENDS', 116, "The with clause cannot be used without an extends c
lause"); | 5865 static final ParserErrorCode WITH_WITHOUT_EXTENDS = new ParserErrorCode.con3('
WITH_WITHOUT_EXTENDS', 116, "The with clause cannot be used without an extends c
lause"); |
| 5866 static final ParserErrorCode WRONG_SEPARATOR_FOR_NAMED_PARAMETER = new ParserE
rrorCode.con2('WRONG_SEPARATOR_FOR_NAMED_PARAMETER', 117, "The default value of
a named parameter should be preceeded by ':'"); | 5866 static final ParserErrorCode WRONG_SEPARATOR_FOR_NAMED_PARAMETER = new ParserE
rrorCode.con3('WRONG_SEPARATOR_FOR_NAMED_PARAMETER', 117, "The default value of
a named parameter should be preceeded by ':'"); |
| 5867 static final ParserErrorCode WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER = new Pa
rserErrorCode.con2('WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER', 118, "The default
value of a positional parameter should be preceeded by '='"); | 5867 static final ParserErrorCode WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER = new Pa
rserErrorCode.con3('WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER', 118, "The default
value of a positional parameter should be preceeded by '='"); |
| 5868 static final ParserErrorCode WRONG_TERMINATOR_FOR_PARAMETER_GROUP = new Parser
ErrorCode.con2('WRONG_TERMINATOR_FOR_PARAMETER_GROUP', 119, "Expected '%s' to cl
ose parameter group"); | 5868 static final ParserErrorCode WRONG_TERMINATOR_FOR_PARAMETER_GROUP = new Parser
ErrorCode.con3('WRONG_TERMINATOR_FOR_PARAMETER_GROUP', 119, "Expected '%s' to cl
ose parameter group"); |
| 5869 static final ParserErrorCode VAR_AND_TYPE = new ParserErrorCode.con2('VAR_AND_
TYPE', 120, "Variables cannot be declared using both 'var' and a type name; remo
ve the 'var'"); | 5869 static final ParserErrorCode VAR_AND_TYPE = new ParserErrorCode.con3('VAR_AND_
TYPE', 120, "Variables cannot be declared using both 'var' and a type name; remo
ve the 'var'"); |
| 5870 static final ParserErrorCode VAR_AS_TYPE_NAME = new ParserErrorCode.con2('VAR_
AS_TYPE_NAME', 121, "The keyword 'var' cannot be used as a type name"); | 5870 static final ParserErrorCode VAR_AS_TYPE_NAME = new ParserErrorCode.con3('VAR_
AS_TYPE_NAME', 121, "The keyword 'var' cannot be used as a type name"); |
| 5871 static final ParserErrorCode VAR_CLASS = new ParserErrorCode.con2('VAR_CLASS',
122, "Classes cannot be declared to be 'var'"); | 5871 static final ParserErrorCode VAR_CLASS = new ParserErrorCode.con3('VAR_CLASS',
122, "Classes cannot be declared to be 'var'"); |
| 5872 static final ParserErrorCode VAR_RETURN_TYPE = new ParserErrorCode.con2('VAR_R
ETURN_TYPE', 123, "The return type cannot be 'var'"); | 5872 static final ParserErrorCode VAR_RETURN_TYPE = new ParserErrorCode.con3('VAR_R
ETURN_TYPE', 123, "The return type cannot be 'var'"); |
| 5873 static final ParserErrorCode VAR_TYPEDEF = new ParserErrorCode.con2('VAR_TYPED
EF', 124, "Type aliases cannot be declared to be 'var'"); | 5873 static final ParserErrorCode VAR_TYPEDEF = new ParserErrorCode.con3('VAR_TYPED
EF', 124, "Type aliases cannot be declared to be 'var'"); |
| 5874 static final ParserErrorCode VOID_PARAMETER = new ParserErrorCode.con2('VOID_P
ARAMETER', 125, "Parameters cannot have a type of 'void'"); | 5874 static final ParserErrorCode VOID_PARAMETER = new ParserErrorCode.con3('VOID_P
ARAMETER', 125, "Parameters cannot have a type of 'void'"); |
| 5875 static final ParserErrorCode VOID_VARIABLE = new ParserErrorCode.con2('VOID_VA
RIABLE', 126, "Variables cannot have a type of 'void'"); | 5875 static final ParserErrorCode VOID_VARIABLE = new ParserErrorCode.con3('VOID_VA
RIABLE', 126, "Variables cannot have a type of 'void'"); |
| 5876 static final List<ParserErrorCode> values = [ | 5876 static final List<ParserErrorCode> values = [ |
| 5877 ABSTRACT_CLASS_MEMBER, | 5877 ABSTRACT_CLASS_MEMBER, |
| 5878 ABSTRACT_STATIC_METHOD, | 5878 ABSTRACT_STATIC_METHOD, |
| 5879 ABSTRACT_TOP_LEVEL_FUNCTION, | 5879 ABSTRACT_TOP_LEVEL_FUNCTION, |
| 5880 ABSTRACT_TOP_LEVEL_VARIABLE, | 5880 ABSTRACT_TOP_LEVEL_VARIABLE, |
| 5881 ABSTRACT_TYPEDEF, | 5881 ABSTRACT_TYPEDEF, |
| 5882 BREAK_OUTSIDE_OF_LOOP, | 5882 BREAK_OUTSIDE_OF_LOOP, |
| 5883 CONST_AND_FINAL, | 5883 CONST_AND_FINAL, |
| 5884 CONST_AND_VAR, | 5884 CONST_AND_VAR, |
| 5885 CONST_CLASS, | 5885 CONST_CLASS, |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5995 WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER, | 5995 WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER, |
| 5996 WRONG_TERMINATOR_FOR_PARAMETER_GROUP, | 5996 WRONG_TERMINATOR_FOR_PARAMETER_GROUP, |
| 5997 VAR_AND_TYPE, | 5997 VAR_AND_TYPE, |
| 5998 VAR_AS_TYPE_NAME, | 5998 VAR_AS_TYPE_NAME, |
| 5999 VAR_CLASS, | 5999 VAR_CLASS, |
| 6000 VAR_RETURN_TYPE, | 6000 VAR_RETURN_TYPE, |
| 6001 VAR_TYPEDEF, | 6001 VAR_TYPEDEF, |
| 6002 VOID_PARAMETER, | 6002 VOID_PARAMETER, |
| 6003 VOID_VARIABLE]; | 6003 VOID_VARIABLE]; |
| 6004 | 6004 |
| 6005 /// The name of this enum constant, as declared in the enum declaration. | |
| 6006 final String name; | |
| 6007 | |
| 6008 /// The position in the enum declaration. | |
| 6009 final int ordinal; | |
| 6010 | |
| 6011 /** | 6005 /** |
| 6012 * The severity of this error. | 6006 * The severity of this error. |
| 6013 */ | 6007 */ |
| 6014 ErrorSeverity _severity; | 6008 ErrorSeverity _severity; |
| 6015 | 6009 |
| 6016 /** | 6010 /** |
| 6017 * The message template used to create the message to be displayed for this er
ror. | 6011 * The template used to create the message to be displayed for this error. |
| 6018 */ | 6012 */ |
| 6019 String _message; | 6013 String _message; |
| 6020 | 6014 |
| 6021 /** | 6015 /** |
| 6016 * The template used to create the correction to be displayed for this error,
or `null` if |
| 6017 * there is no correction information for this error. |
| 6018 */ |
| 6019 String correction8; |
| 6020 |
| 6021 /** |
| 6022 * Initialize a newly created error code to have the given severity and messag
e. | 6022 * Initialize a newly created error code to have the given severity and messag
e. |
| 6023 * | 6023 * |
| 6024 * @param severity the severity of the error | 6024 * @param severity the severity of the error |
| 6025 * @param message the message template used to create the message to be displa
yed for the error | 6025 * @param message the message template used to create the message to be displa
yed for the error |
| 6026 */ | 6026 */ |
| 6027 ParserErrorCode.con1(this.name, this.ordinal, ErrorSeverity severity, String m
essage) { | 6027 ParserErrorCode.con1(String name, int ordinal, ErrorSeverity severity, String
message) : super(name, ordinal) { |
| 6028 this._severity = severity; | 6028 this._severity = severity; |
| 6029 this._message = message; | 6029 this._message = message; |
| 6030 } | 6030 } |
| 6031 | 6031 |
| 6032 /** | 6032 /** |
| 6033 * Initialize a newly created error code to have the given severity, message a
nd correction. |
| 6034 * |
| 6035 * @param severity the severity of the error |
| 6036 * @param message the template used to create the message to be displayed for
the error |
| 6037 * @param correction the template used to create the correction to be displaye
d for the error |
| 6038 */ |
| 6039 ParserErrorCode.con2(String name, int ordinal, ErrorSeverity severity, String
message, String correction) : super(name, ordinal) { |
| 6040 this._severity = severity; |
| 6041 this._message = message; |
| 6042 this.correction8 = correction; |
| 6043 } |
| 6044 |
| 6045 /** |
| 6033 * Initialize a newly created error code to have the given message and a sever
ity of ERROR. | 6046 * Initialize a newly created error code to have the given message and a sever
ity of ERROR. |
| 6034 * | 6047 * |
| 6035 * @param message the message template used to create the message to be displa
yed for the error | 6048 * @param message the message template used to create the message to be displa
yed for the error |
| 6036 */ | 6049 */ |
| 6037 ParserErrorCode.con2(String name, int ordinal, String message) : this.con1(nam
e, ordinal, ErrorSeverity.ERROR, message); | 6050 ParserErrorCode.con3(String name, int ordinal, String message) : this.con1(nam
e, ordinal, ErrorSeverity.ERROR, message); |
| 6051 String get correction => correction8; |
| 6038 ErrorSeverity get errorSeverity => _severity; | 6052 ErrorSeverity get errorSeverity => _severity; |
| 6039 String get message => _message; | 6053 String get message => _message; |
| 6040 ErrorType get type => ErrorType.SYNTACTIC_ERROR; | 6054 ErrorType get type => ErrorType.SYNTACTIC_ERROR; |
| 6041 int compareTo(ParserErrorCode other) => ordinal - other.ordinal; | |
| 6042 int get hashCode => ordinal; | |
| 6043 String toString() => name; | |
| 6044 } | 6055 } |
| 6045 /** | 6056 /** |
| 6046 * Instances of the class {link ToFormattedSourceVisitor} write a source represe
ntation of a visited | 6057 * Instances of the class {link ToFormattedSourceVisitor} write a source represe
ntation of a visited |
| 6047 * AST node (and all of it's children) to a writer. | 6058 * AST node (and all of it's children) to a writer. |
| 6048 */ | 6059 */ |
| 6049 class ToFormattedSourceVisitor implements ASTVisitor<Object> { | 6060 class ToFormattedSourceVisitor implements ASTVisitor<Object> { |
| 6050 | 6061 |
| 6051 /** | 6062 /** |
| 6052 * The writer to which the source is to be written. | 6063 * The writer to which the source is to be written. |
| 6053 */ | 6064 */ |
| (...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6980 if ("\n" == separator) { | 6991 if ("\n" == separator) { |
| 6981 _writer.print("\n"); | 6992 _writer.print("\n"); |
| 6982 indent(); | 6993 indent(); |
| 6983 } else if (i > 0) { | 6994 } else if (i > 0) { |
| 6984 _writer.print(separator); | 6995 _writer.print(separator); |
| 6985 } | 6996 } |
| 6986 _writer.print(tokens[i].lexeme); | 6997 _writer.print(tokens[i].lexeme); |
| 6987 } | 6998 } |
| 6988 } | 6999 } |
| 6989 } | 7000 } |
| OLD | NEW |