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

Side by Side Diff: pkg/dart_parser/lib/src/parser.dart

Issue 2647343003: Update dart2js unit tests to dart_parser and dart_scanner. (Closed)
Patch Set: Address review comments. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart_parser.parser; 5 library dart_parser.parser;
6 6
7 import 'package:dart_scanner/src/keyword.dart' show 7 import 'package:dart_scanner/src/keyword.dart' show
8 Keyword; 8 Keyword;
9 9
10 import 'package:dart_scanner/src/precedence.dart' show 10 import 'package:dart_scanner/src/precedence.dart' show
(...skipping 834 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 !identical(value, token.stringValue); 845 !identical(value, token.stringValue);
846 } 846 }
847 847
848 Token parseType(Token token) { 848 Token parseType(Token token) {
849 Token begin = token; 849 Token begin = token;
850 if (isValidTypeReference(token)) { 850 if (isValidTypeReference(token)) {
851 token = parseIdentifier(token); 851 token = parseIdentifier(token);
852 token = parseQualifiedRestOpt(token); 852 token = parseQualifiedRestOpt(token);
853 } else { 853 } else {
854 token = reportUnrecoverableError(token, ErrorKind.ExpectedType); 854 token = reportUnrecoverableError(token, ErrorKind.ExpectedType);
855 listener.handleInvalidTypeReference(token);
855 } 856 }
856 token = parseTypeArgumentsOpt(token); 857 token = parseTypeArgumentsOpt(token);
857 listener.endType(begin, token); 858 listener.endType(begin, token);
858 return token; 859 return token;
859 } 860 }
860 861
861 Token parseTypeArgumentsOpt(Token token) { 862 Token parseTypeArgumentsOpt(Token token) {
862 return parseStuff( 863 return parseStuff(
863 token, 864 token,
864 (t) => listener.beginTypeArguments(t), 865 (t) => listener.beginTypeArguments(t),
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after
1785 expectSemicolon(token); 1786 expectSemicolon(token);
1786 listener.endReturnStatement(true, begin, token); 1787 listener.endReturnStatement(true, begin, token);
1787 } else { 1788 } else {
1788 listener.endReturnStatement(true, begin, null); 1789 listener.endReturnStatement(true, begin, null);
1789 } 1790 }
1790 return token; 1791 return token;
1791 } 1792 }
1792 Token begin = token; 1793 Token begin = token;
1793 int statementCount = 0; 1794 int statementCount = 0;
1794 if (!optional('{', token)) { 1795 if (!optional('{', token)) {
1795 return reportUnrecoverableError(token, ErrorKind.ExpectedFunctionBody); 1796 token = reportUnrecoverableError(token, ErrorKind.ExpectedFunctionBody);
1797 listener.handleInvalidFunctionBody(token);
1798 return token;
1796 } 1799 }
1797 1800
1798 listener.beginFunctionBody(begin); 1801 listener.beginFunctionBody(begin);
1799 token = token.next; 1802 token = token.next;
1800 while (notEofOrValue('}', token)) { 1803 while (notEofOrValue('}', token)) {
1801 token = parseStatement(token); 1804 token = parseStatement(token);
1802 ++statementCount; 1805 ++statementCount;
1803 } 1806 }
1804 listener.endFunctionBody(statementCount, begin, token); 1807 listener.endFunctionBody(statementCount, begin, token);
1805 expect('}', token); 1808 expect('}', token);
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
2359 } else if (value == 'super') { 2362 } else if (value == 'super') {
2360 return parseSuperExpression(token); 2363 return parseSuperExpression(token);
2361 } else if (value == 'new') { 2364 } else if (value == 'new') {
2362 return parseNewExpression(token); 2365 return parseNewExpression(token);
2363 } else if (value == 'const') { 2366 } else if (value == 'const') {
2364 return parseConstExpression(token); 2367 return parseConstExpression(token);
2365 } else if (value == 'void') { 2368 } else if (value == 'void') {
2366 return parseFunctionExpression(token); 2369 return parseFunctionExpression(token);
2367 } else if (asyncAwaitKeywordsEnabled && 2370 } else if (asyncAwaitKeywordsEnabled &&
2368 (value == 'yield' || value == 'async')) { 2371 (value == 'yield' || value == 'async')) {
2369 return reportUnrecoverableError(token, ErrorKind.ExpectedExpression); 2372 return expressionExpected(token);
2370 } else if (token.isIdentifier()) { 2373 } else if (token.isIdentifier()) {
2371 return parseSendOrFunctionLiteral(token); 2374 return parseSendOrFunctionLiteral(token);
2372 } else { 2375 } else {
2373 return reportUnrecoverableError(token, ErrorKind.ExpectedExpression); 2376 return expressionExpected(token);
2374 } 2377 }
2375 } else if (kind == OPEN_PAREN_TOKEN) { 2378 } else if (kind == OPEN_PAREN_TOKEN) {
2376 return parseParenthesizedExpressionOrFunctionLiteral(token); 2379 return parseParenthesizedExpressionOrFunctionLiteral(token);
2377 } else if (kind == OPEN_SQUARE_BRACKET_TOKEN || token.stringValue == '[]') { 2380 } else if (kind == OPEN_SQUARE_BRACKET_TOKEN || token.stringValue == '[]') {
2378 listener.handleNoTypeArguments(token); 2381 listener.handleNoTypeArguments(token);
2379 return parseLiteralListSuffix(token, null); 2382 return parseLiteralListSuffix(token, null);
2380 } else if (kind == OPEN_CURLY_BRACKET_TOKEN) { 2383 } else if (kind == OPEN_CURLY_BRACKET_TOKEN) {
2381 listener.handleNoTypeArguments(token); 2384 listener.handleNoTypeArguments(token);
2382 return parseLiteralMapSuffix(token, null); 2385 return parseLiteralMapSuffix(token, null);
2383 } else if (kind == LT_TOKEN) { 2386 } else if (kind == LT_TOKEN) {
2384 return parseLiteralListOrMapOrFunction(token, null); 2387 return parseLiteralListOrMapOrFunction(token, null);
2385 } else { 2388 } else {
2386 return reportUnrecoverableError(token, ErrorKind.ExpectedExpression); 2389 return expressionExpected(token);
2387 } 2390 }
2388 } 2391 }
2389 2392
2393 Token expressionExpected(Token token) {
2394 token = reportUnrecoverableError(token, ErrorKind.ExpectedExpression);
2395 listener.handleInvalidExpression(token);
2396 return token;
2397 }
2398
2390 Token parseParenthesizedExpressionOrFunctionLiteral(Token token) { 2399 Token parseParenthesizedExpressionOrFunctionLiteral(Token token) {
2391 BeginGroupToken beginGroup = token; 2400 BeginGroupToken beginGroup = token;
2392 // TODO(eernst): Check for NPE as described in issue 26252. 2401 // TODO(eernst): Check for NPE as described in issue 26252.
2393 Token nextToken = beginGroup.endGroup.next; 2402 Token nextToken = beginGroup.endGroup.next;
2394 int kind = nextToken.kind; 2403 int kind = nextToken.kind;
2395 if (mayParseFunctionExpressions && 2404 if (mayParseFunctionExpressions &&
2396 (identical(kind, FUNCTION_TOKEN) || 2405 (identical(kind, FUNCTION_TOKEN) ||
2397 identical(kind, OPEN_CURLY_BRACKET_TOKEN) || 2406 identical(kind, OPEN_CURLY_BRACKET_TOKEN) ||
2398 (identical(kind, KEYWORD_TOKEN) && 2407 (identical(kind, KEYWORD_TOKEN) &&
2399 (nextToken.value == 'async' || nextToken.value == 'sync')))) { 2408 (nextToken.value == 'async' || nextToken.value == 'sync')))) {
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after
3305 r'${': '}', 3314 r'${': '}',
3306 }[openBrace]; 3315 }[openBrace];
3307 } 3316 }
3308 3317
3309 Token skipToEof(Token token) { 3318 Token skipToEof(Token token) {
3310 while (!identical(token.info, EOF_INFO)) { 3319 while (!identical(token.info, EOF_INFO)) {
3311 token = token.next; 3320 token = token.next;
3312 } 3321 }
3313 return token; 3322 return token;
3314 } 3323 }
OLDNEW
« no previous file with comments | « pkg/dart_parser/lib/src/listener.dart ('k') | tests/compiler/dart2js/diagnostic_reporter_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698