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

Side by Side Diff: pkg/analyzer/lib/src/generated/parser.dart

Issue 2140673004: Generalize the first argument in an assert to be an expression (issue 26865) (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « pkg/analyzer/lib/src/generated/error.dart ('k') | pkg/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 analyzer.src.generated.parser; 5 library analyzer.src.generated.parser;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import "dart:math" as math; 8 import "dart:math" as math;
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 4339 matching lines...) Expand 10 before | Expand all | Expand 10 after
4350 return new ArgumentList(_createSyntheticToken(TokenType.OPEN_PAREN), null, 4350 return new ArgumentList(_createSyntheticToken(TokenType.OPEN_PAREN), null,
4351 _createSyntheticToken(TokenType.CLOSE_PAREN)); 4351 _createSyntheticToken(TokenType.CLOSE_PAREN));
4352 } 4352 }
4353 4353
4354 /** 4354 /**
4355 * Parse an assert statement. Return the assert statement. 4355 * Parse an assert statement. Return the assert statement.
4356 * 4356 *
4357 * This method assumes that the current token matches `Keyword.ASSERT`. 4357 * This method assumes that the current token matches `Keyword.ASSERT`.
4358 * 4358 *
4359 * assertStatement ::= 4359 * assertStatement ::=
4360 * 'assert' '(' conditionalExpression ')' ';' 4360 * 'assert' '(' expression [',' expression] ')' ';'
4361 */ 4361 */
4362 AssertStatement _parseAssertStatement() { 4362 AssertStatement _parseAssertStatement() {
4363 Token keyword = getAndAdvance(); 4363 Token keyword = getAndAdvance();
4364 Token leftParen = _expect(TokenType.OPEN_PAREN); 4364 Token leftParen = _expect(TokenType.OPEN_PAREN);
4365 Expression expression = parseExpression2(); 4365 Expression expression = parseExpression2();
4366 if (expression is AssignmentExpression) {
4367 _reportErrorForNode(
4368 ParserErrorCode.ASSERT_DOES_NOT_TAKE_ASSIGNMENT, expression);
4369 } else if (expression is CascadeExpression) {
4370 _reportErrorForNode(
4371 ParserErrorCode.ASSERT_DOES_NOT_TAKE_CASCADE, expression);
4372 } else if (expression is ThrowExpression) {
4373 _reportErrorForNode(
4374 ParserErrorCode.ASSERT_DOES_NOT_TAKE_THROW, expression);
4375 } else if (expression is RethrowExpression) {
4376 _reportErrorForNode(
4377 ParserErrorCode.ASSERT_DOES_NOT_TAKE_RETHROW, expression);
4378 }
4379 Token comma; 4366 Token comma;
4380 Expression message; 4367 Expression message;
4381 if (_matches(TokenType.COMMA)) { 4368 if (_matches(TokenType.COMMA)) {
4382 comma = getAndAdvance(); 4369 comma = getAndAdvance();
4383 message = parseExpression2(); 4370 message = parseExpression2();
4384 } 4371 }
4385 Token rightParen = _expect(TokenType.CLOSE_PAREN); 4372 Token rightParen = _expect(TokenType.CLOSE_PAREN);
4386 Token semicolon = _expect(TokenType.SEMICOLON); 4373 Token semicolon = _expect(TokenType.SEMICOLON);
4387 return new AssertStatement( 4374 return new AssertStatement(
4388 keyword, leftParen, expression, comma, message, rightParen, semicolon); 4375 keyword, leftParen, expression, comma, message, rightParen, semicolon);
(...skipping 5500 matching lines...) Expand 10 before | Expand all | Expand 10 after
9889 const ParserErrorCode('ABSTRACT_TOP_LEVEL_VARIABLE', 9876 const ParserErrorCode('ABSTRACT_TOP_LEVEL_VARIABLE',
9890 "Top-level variables cannot be declared to be 'abstract'"); 9877 "Top-level variables cannot be declared to be 'abstract'");
9891 9878
9892 static const ParserErrorCode ABSTRACT_TYPEDEF = const ParserErrorCode( 9879 static const ParserErrorCode ABSTRACT_TYPEDEF = const ParserErrorCode(
9893 'ABSTRACT_TYPEDEF', "Type aliases cannot be declared to be 'abstract'"); 9880 'ABSTRACT_TYPEDEF', "Type aliases cannot be declared to be 'abstract'");
9894 9881
9895 static const ParserErrorCode ANNOTATION_ON_ENUM_CONSTANT = 9882 static const ParserErrorCode ANNOTATION_ON_ENUM_CONSTANT =
9896 const ParserErrorCode('ANNOTATION_ON_ENUM_CONSTANT', 9883 const ParserErrorCode('ANNOTATION_ON_ENUM_CONSTANT',
9897 "Enum constants cannot have annotations"); 9884 "Enum constants cannot have annotations");
9898 9885
9899 static const ParserErrorCode ASSERT_DOES_NOT_TAKE_ASSIGNMENT =
9900 const ParserErrorCode('ASSERT_DOES_NOT_TAKE_ASSIGNMENT',
9901 "Assert cannot be called on an assignment");
9902
9903 static const ParserErrorCode ASSERT_DOES_NOT_TAKE_CASCADE =
9904 const ParserErrorCode(
9905 'ASSERT_DOES_NOT_TAKE_CASCADE', "Assert cannot be called on cascade");
9906
9907 static const ParserErrorCode ASSERT_DOES_NOT_TAKE_THROW =
9908 const ParserErrorCode(
9909 'ASSERT_DOES_NOT_TAKE_THROW', "Assert cannot be called on throws");
9910
9911 static const ParserErrorCode ASSERT_DOES_NOT_TAKE_RETHROW =
9912 const ParserErrorCode('ASSERT_DOES_NOT_TAKE_RETHROW',
9913 "Assert cannot be called on rethrows");
9914
9915 /** 9886 /**
9916 * 16.32 Identifier Reference: It is a compile-time error if any of the 9887 * 16.32 Identifier Reference: It is a compile-time error if any of the
9917 * identifiers async, await, or yield is used as an identifier in a function 9888 * identifiers async, await, or yield is used as an identifier in a function
9918 * body marked with either async, async*, or sync*. 9889 * body marked with either async, async*, or sync*.
9919 */ 9890 */
9920 static const ParserErrorCode ASYNC_KEYWORD_USED_AS_IDENTIFIER = 9891 static const ParserErrorCode ASYNC_KEYWORD_USED_AS_IDENTIFIER =
9921 const ParserErrorCode('ASYNC_KEYWORD_USED_AS_IDENTIFIER', 9892 const ParserErrorCode('ASYNC_KEYWORD_USED_AS_IDENTIFIER',
9922 "The keywords 'async', 'await', and 'yield' may not be used as identif iers in an asynchronous or generator function."); 9893 "The keywords 'async', 'await', and 'yield' may not be used as identif iers in an asynchronous or generator function.");
9923 9894
9924 /** 9895 /**
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
10478 */ 10449 */
10479 const ParserErrorCode(String name, String message, [String correction]) 10450 const ParserErrorCode(String name, String message, [String correction])
10480 : super(name, message, correction); 10451 : super(name, message, correction);
10481 10452
10482 @override 10453 @override
10483 ErrorSeverity get errorSeverity => ErrorSeverity.ERROR; 10454 ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
10484 10455
10485 @override 10456 @override
10486 ErrorType get type => ErrorType.SYNTACTIC_ERROR; 10457 ErrorType get type => ErrorType.SYNTACTIC_ERROR;
10487 } 10458 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/error.dart ('k') | pkg/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698