Index: pkg/analyzer/test/generated/parser_test.dart |
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart |
index b9d5345741354ca70f3461c7862ed27f77b81988..76aef3540d66d7a68e56b13843577616eb39f859 100644 |
--- a/pkg/analyzer/test/generated/parser_test.dart |
+++ b/pkg/analyzer/test/generated/parser_test.dart |
@@ -8,7 +8,6 @@ import 'package:analyzer/dart/ast/ast.dart'; |
import 'package:analyzer/dart/ast/token.dart'; |
import 'package:analyzer/dart/ast/visitor.dart'; |
import 'package:analyzer/error/error.dart'; |
-import 'package:analyzer/error/listener.dart'; |
import 'package:analyzer/src/dart/ast/token.dart'; |
import 'package:analyzer/src/dart/scanner/reader.dart'; |
import 'package:analyzer/src/dart/scanner/scanner.dart'; |
@@ -31,15 +30,6 @@ main() { |
defineReflectiveTests(SimpleParserTest); |
} |
-class AnalysisErrorListener_SimpleParserTest_computeStringValue |
- implements AnalysisErrorListener { |
- @override |
- void onError(AnalysisError event) { |
- fail( |
- "Unexpected compilation error: ${event.message} (${event.offset}, ${event.length})"); |
- } |
-} |
- |
/** |
* Instances of the class `AstValidator` are used to validate the correct construction of an |
* AST structure. |
@@ -590,8 +580,11 @@ class ErrorParserTest extends ParserTestCase { |
// literals that are being created are not always zero length (because they |
// could have type parameters), which violates the contract of |
// isSynthetic(). |
- TypedLiteral literal = parse3("parseListOrMapLiteral", <Object>[null], "1", |
- [ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL]); |
+ createParser('1'); |
+ TypedLiteral literal = parser.parseListOrMapLiteral(null); |
+ expectNotNullIfNoErrors(literal); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL]); |
expect(literal.isSynthetic, isTrue); |
} |
@@ -604,32 +597,43 @@ class ErrorParserTest extends ParserTestCase { |
void fail_invalidCommentReference__new_nonIdentifier() { |
// This test fails because the method parseCommentReference returns null. |
- parse3("parseCommentReference", <Object>["new 42", 0], "", |
- [ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
+ createParser(''); |
+ CommentReference reference = parser.parseCommentReference('new 42', 0); |
+ expectNotNullIfNoErrors(reference); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
} |
void fail_invalidCommentReference__new_tooMuch() { |
- parse3("parseCommentReference", <Object>["new a.b.c.d", 0], "", |
- [ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
+ createParser(''); |
+ CommentReference reference = parser.parseCommentReference('new a.b.c.d', 0); |
+ expectNotNullIfNoErrors(reference); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
} |
void fail_invalidCommentReference__nonNew_nonIdentifier() { |
// This test fails because the method parseCommentReference returns null. |
- parse3("parseCommentReference", <Object>["42", 0], "", |
- [ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
+ createParser(''); |
+ CommentReference reference = parser.parseCommentReference('42', 0); |
+ expectNotNullIfNoErrors(reference); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
} |
void fail_invalidCommentReference__nonNew_tooMuch() { |
- parse3("parseCommentReference", <Object>["a.b.c.d", 0], "", |
- [ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
+ createParser(''); |
+ CommentReference reference = parser.parseCommentReference('a.b.c.d', 0); |
+ expectNotNullIfNoErrors(reference); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
} |
void fail_missingClosingParenthesis() { |
// It is possible that it is not possible to generate this error (that it's |
// being reported in code that cannot actually be reached), but that hasn't |
// been proven yet. |
- parse4("parseFormalParameterList", "(int a, int b ;", |
- [ParserErrorCode.MISSING_CLOSING_PARENTHESIS]); |
+ createParser('(int a, int b ;'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.MISSING_CLOSING_PARENTHESIS]); |
} |
void fail_missingFunctionParameters_local_nonVoid_block() { |
@@ -649,10 +653,11 @@ class ErrorParserTest extends ParserTestCase { |
} |
void fail_namedFunctionExpression() { |
- Expression expression = parse4("parsePrimaryExpression", "f() {}", |
- [ParserErrorCode.NAMED_FUNCTION_EXPRESSION]); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is FunctionExpression, FunctionExpression, expression); |
+ createParser('f() {}'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.NAMED_FUNCTION_EXPRESSION]); |
+ expect(expression, new isInstanceOf<FunctionExpression>()); |
} |
void fail_unexpectedToken_invalidPostfixExpression() { |
@@ -670,33 +675,45 @@ class ErrorParserTest extends ParserTestCase { |
void fail_varAndType_parameter() { |
// This is currently reporting EXPECTED_TOKEN for a missing semicolon, but |
// this would be a better error message. |
- parse4("parseFormalParameterList", "(var int x)", |
- [ParserErrorCode.VAR_AND_TYPE]); |
+ createParser('(var int x)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ParserErrorCode.VAR_AND_TYPE]); |
} |
void test_abstractClassMember_constructor() { |
- parse3("parseClassMember", <Object>["C"], "abstract C.c();", |
- [ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
+ createParser('abstract C.c();'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
} |
void test_abstractClassMember_field() { |
- parse3("parseClassMember", <Object>["C"], "abstract C f;", |
- [ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
+ createParser('abstract C f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
} |
void test_abstractClassMember_getter() { |
- parse3("parseClassMember", <Object>["C"], "abstract get m;", |
- [ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
+ createParser('abstract get m;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
} |
void test_abstractClassMember_method() { |
- parse3("parseClassMember", <Object>["C"], "abstract m();", |
- [ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
+ createParser('abstract m();'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
} |
void test_abstractClassMember_setter() { |
- parse3("parseClassMember", <Object>["C"], "abstract set m(v);", |
- [ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
+ createParser('abstract set m(v);'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ABSTRACT_CLASS_MEMBER]); |
} |
void test_abstractEnum() { |
@@ -740,24 +757,38 @@ class ErrorParserTest extends ParserTestCase { |
} |
void test_breakOutsideOfLoop_breakInDoStatement() { |
- parse4("parseDoStatement", "do {break;} while (x);"); |
+ createParser('do {break;} while (x);'); |
+ DoStatement statement = parser.parseDoStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_breakOutsideOfLoop_breakInForStatement() { |
- parse4("parseForStatement", "for (; x;) {break;}"); |
+ createParser('for (; x;) {break;}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_breakOutsideOfLoop_breakInIfStatement() { |
- parse4("parseIfStatement", "if (x) {break;}", |
- [ParserErrorCode.BREAK_OUTSIDE_OF_LOOP]); |
+ createParser('if (x) {break;}'); |
+ IfStatement statement = parser.parseIfStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.BREAK_OUTSIDE_OF_LOOP]); |
} |
void test_breakOutsideOfLoop_breakInSwitchStatement() { |
- parse4("parseSwitchStatement", "switch (x) {case 1: break;}"); |
+ createParser('switch (x) {case 1: break;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_breakOutsideOfLoop_breakInWhileStatement() { |
- parse4("parseWhileStatement", "while (x) {break;}"); |
+ createParser('while (x) {break;}'); |
+ WhileStatement statement = parser.parseWhileStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_breakOutsideOfLoop_functionExpression_inALoop() { |
@@ -782,10 +813,11 @@ class ErrorParserTest extends ParserTestCase { |
void test_classTypeAlias_abstractAfterEq() { |
// This syntax has been removed from the language in favor of |
// "abstract class A = B with C;" (issue 18098). |
- parse3( |
- "parseCompilationUnitMember", |
- <Object>[emptyCommentAndMetadata()], |
- "class A = abstract B with C;", |
+ createParser('class A = abstract B with C;'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.EXPECTED_TOKEN, ParserErrorCode.EXPECTED_TOKEN]); |
} |
@@ -795,13 +827,17 @@ class ErrorParserTest extends ParserTestCase { |
} |
void test_constAndFinal() { |
- parse3("parseClassMember", <Object>["C"], "const final int x;", |
- [ParserErrorCode.CONST_AND_FINAL]); |
+ createParser('const final int x;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.CONST_AND_FINAL]); |
} |
void test_constAndVar() { |
- parse3("parseClassMember", <Object>["C"], "const var x;", |
- [ParserErrorCode.CONST_AND_VAR]); |
+ createParser('const var x;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.CONST_AND_VAR]); |
} |
void test_constClass() { |
@@ -810,8 +846,11 @@ class ErrorParserTest extends ParserTestCase { |
} |
void test_constConstructorWithBody() { |
- parse3("parseClassMember", <Object>["C"], "const C() {}", |
- [ParserErrorCode.CONST_CONSTRUCTOR_WITH_BODY]); |
+ createParser('const C() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.CONST_CONSTRUCTOR_WITH_BODY]); |
} |
void test_constEnum() { |
@@ -820,23 +859,33 @@ class ErrorParserTest extends ParserTestCase { |
} |
void test_constFactory() { |
- parse3("parseClassMember", <Object>["C"], "const factory C() {}", |
- [ParserErrorCode.CONST_FACTORY]); |
+ createParser('const factory C() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.CONST_FACTORY]); |
} |
void test_constMethod() { |
- parse3("parseClassMember", <Object>["C"], "const int m() {}", |
- [ParserErrorCode.CONST_METHOD]); |
+ createParser('const int m() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.CONST_METHOD]); |
} |
void test_constructorWithReturnType() { |
- parse3("parseClassMember", <Object>["C"], "C C() {}", |
- [ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE]); |
+ createParser('C C() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE]); |
} |
void test_constructorWithReturnType_var() { |
- parse3("parseClassMember", <Object>["C"], "var C() {}", |
- [ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE]); |
+ createParser('var C() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.CONSTRUCTOR_WITH_RETURN_TYPE]); |
} |
void test_constTypedef() { |
@@ -845,24 +894,38 @@ class ErrorParserTest extends ParserTestCase { |
} |
void test_continueOutsideOfLoop_continueInDoStatement() { |
- parse4("parseDoStatement", "do {continue;} while (x);"); |
+ createParser('do {continue;} while (x);'); |
+ DoStatement statement = parser.parseDoStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_continueOutsideOfLoop_continueInForStatement() { |
- parse4("parseForStatement", "for (; x;) {continue;}"); |
+ createParser('for (; x;) {continue;}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_continueOutsideOfLoop_continueInIfStatement() { |
- parse4("parseIfStatement", "if (x) {continue;}", |
- [ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]); |
+ createParser('if (x) {continue;}'); |
+ IfStatement statement = parser.parseIfStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]); |
} |
void test_continueOutsideOfLoop_continueInSwitchStatement() { |
- parse4("parseSwitchStatement", "switch (x) {case 1: continue a;}"); |
+ createParser('switch (x) {case 1: continue a;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_continueOutsideOfLoop_continueInWhileStatement() { |
- parse4("parseWhileStatement", "while (x) {continue;}"); |
+ createParser('while (x) {continue;}'); |
+ WhileStatement statement = parser.parseWhileStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_continueOutsideOfLoop_functionExpression_inALoop() { |
@@ -875,17 +938,25 @@ class ErrorParserTest extends ParserTestCase { |
} |
void test_continueWithoutLabelInCase_error() { |
- parse4("parseSwitchStatement", "switch (x) {case 1: continue;}", |
+ createParser('switch (x) {case 1: continue;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE]); |
} |
void test_continueWithoutLabelInCase_noError() { |
- parse4("parseSwitchStatement", "switch (x) {case 1: continue a;}"); |
+ createParser('switch (x) {case 1: continue a;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_continueWithoutLabelInCase_noError_switchInLoop() { |
- parse4( |
- "parseWhileStatement", "while (a) { switch (b) {default: continue;}}"); |
+ createParser('while (a) { switch (b) {default: continue;}}'); |
+ WhileStatement statement = parser.parseWhileStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_deprecatedClassTypeAlias() { |
@@ -913,76 +984,95 @@ class ErrorParserTest extends ParserTestCase { |
} |
void test_duplicatedModifier_const() { |
- parse3("parseClassMember", <Object>["C"], "const const m;", |
- [ParserErrorCode.DUPLICATED_MODIFIER]); |
+ createParser('const const m;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); |
} |
void test_duplicatedModifier_external() { |
- parse3("parseClassMember", <Object>["C"], "external external f();", |
- [ParserErrorCode.DUPLICATED_MODIFIER]); |
+ createParser('external external f();'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); |
} |
void test_duplicatedModifier_factory() { |
- parse3("parseClassMember", <Object>["C"], "factory factory C() {}", |
- [ParserErrorCode.DUPLICATED_MODIFIER]); |
+ createParser('factory factory C() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); |
} |
void test_duplicatedModifier_final() { |
- parse3("parseClassMember", <Object>["C"], "final final m;", |
- [ParserErrorCode.DUPLICATED_MODIFIER]); |
+ createParser('final final m;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); |
} |
void test_duplicatedModifier_static() { |
- parse3("parseClassMember", <Object>["C"], "static static var m;", |
- [ParserErrorCode.DUPLICATED_MODIFIER]); |
+ createParser('static static var m;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); |
} |
void test_duplicatedModifier_var() { |
- parse3("parseClassMember", <Object>["C"], "var var m;", |
- [ParserErrorCode.DUPLICATED_MODIFIER]); |
+ createParser('var var m;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); |
} |
void test_duplicateLabelInSwitchStatement() { |
- parse4( |
- "parseSwitchStatement", |
- "switch (e) {l1: case 0: break; l1: case 1: break;}", |
+ createParser('switch (e) {l1: case 0: break; l1: case 1: break;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT]); |
} |
void test_emptyEnumBody() { |
- parse3("parseEnumDeclaration", <Object>[emptyCommentAndMetadata()], |
- "enum E {}", [ParserErrorCode.EMPTY_ENUM_BODY]); |
+ createParser('enum E {}'); |
+ EnumDeclaration declaration = |
+ parser.parseEnumDeclaration(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EMPTY_ENUM_BODY]); |
} |
void test_enableAsync_false_1() { |
parseAsync = false; |
- FunctionDeclarationStatement stmt = parse4( |
- "parseFunctionDeclarationStatement", |
- "foo() async {}", |
- [ParserErrorCode.ASYNC_NOT_SUPPORTED]); |
- FunctionExpression expr = stmt.functionDeclaration.functionExpression; |
+ createParser('foo() async {}'); |
+ FunctionDeclarationStatement statement = |
+ parser.parseFunctionDeclarationStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ASYNC_NOT_SUPPORTED]); |
+ FunctionExpression expr = statement.functionDeclaration.functionExpression; |
expect(expr.body.isAsynchronous, isTrue); |
expect(expr.body.isGenerator, isFalse); |
} |
void test_enableAsync_false_2() { |
parseAsync = false; |
- FunctionDeclarationStatement stmt = parse4( |
- "parseFunctionDeclarationStatement", |
- "foo() async => 0;", |
- [ParserErrorCode.ASYNC_NOT_SUPPORTED]); |
- FunctionExpression expr = stmt.functionDeclaration.functionExpression; |
+ createParser('foo() async => 0;'); |
+ FunctionDeclarationStatement statement = |
+ parser.parseFunctionDeclarationStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ASYNC_NOT_SUPPORTED]); |
+ FunctionExpression expr = statement.functionDeclaration.functionExpression; |
expect(expr.body.isAsynchronous, isTrue); |
expect(expr.body.isGenerator, isFalse); |
} |
void test_enableAsync_false_3() { |
parseAsync = false; |
- FunctionDeclarationStatement stmt = parse4( |
- "parseFunctionDeclarationStatement", |
- "foo() sync* {}", |
- [ParserErrorCode.ASYNC_NOT_SUPPORTED]); |
- FunctionExpression expr = stmt.functionDeclaration.functionExpression; |
+ createParser('foo() sync* {}'); |
+ FunctionDeclarationStatement statement = |
+ parser.parseFunctionDeclarationStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.ASYNC_NOT_SUPPORTED]); |
+ FunctionExpression expr = statement.functionDeclaration.functionExpression; |
expect(expr.body.isAsynchronous, isFalse); |
expect(expr.body.isGenerator, isTrue); |
} |
@@ -1015,42 +1105,59 @@ class Foo { |
} |
void test_expectedCaseOrDefault() { |
- parse4("parseSwitchStatement", "switch (e) {break;}", |
- [ParserErrorCode.EXPECTED_CASE_OR_DEFAULT]); |
+ createParser('switch (e) {break;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CASE_OR_DEFAULT]); |
} |
void test_expectedClassMember_inClass_afterType() { |
- parse3("parseClassMember", <Object>["C"], "heart 2 heart", |
- [ParserErrorCode.EXPECTED_CLASS_MEMBER]); |
+ createParser('heart 2 heart'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CLASS_MEMBER]); |
} |
void test_expectedClassMember_inClass_beforeType() { |
- parse3("parseClassMember", <Object>["C"], "4 score", |
- [ParserErrorCode.EXPECTED_CLASS_MEMBER]); |
+ createParser('4 score'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CLASS_MEMBER]); |
} |
void test_expectedExecutable_inClass_afterVoid() { |
- parse3("parseClassMember", <Object>["C"], "void 2 void", |
- [ParserErrorCode.EXPECTED_EXECUTABLE]); |
+ createParser('void 2 void'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_EXECUTABLE]); |
} |
void test_expectedExecutable_topLevel_afterType() { |
- parse3("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()], |
- "heart 2 heart", [ParserErrorCode.EXPECTED_EXECUTABLE]); |
+ createParser('heart 2 heart'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_EXECUTABLE]); |
} |
void test_expectedExecutable_topLevel_afterVoid() { |
- parse3("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()], |
- "void 2 void", [ParserErrorCode.EXPECTED_EXECUTABLE]); |
+ createParser('void 2 void'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_EXECUTABLE]); |
} |
void test_expectedExecutable_topLevel_beforeType() { |
- parse3("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()], |
- "4 score", [ParserErrorCode.EXPECTED_EXECUTABLE]); |
+ createParser('4 score'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_EXECUTABLE]); |
} |
void test_expectedExecutable_topLevel_eof() { |
- parse2( |
+ parse( |
"parseCompilationUnitMember", |
<Object>[emptyCommentAndMetadata()], |
"x", |
@@ -1058,26 +1165,33 @@ class Foo { |
} |
void test_expectedInterpolationIdentifier() { |
- parse4( |
- "parseStringLiteral", "'\$x\$'", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser("'\$x\$'"); |
+ StringLiteral literal = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_expectedInterpolationIdentifier_emptyString() { |
// The scanner inserts an empty string token between the two $'s; we need to |
// make sure that the MISSING_IDENTIFIER error that is generated has a |
// nonzero width so that it will show up in the editor UI. |
- parse2("parseStringLiteral", <Object>[], "'\$\$foo'", |
+ parse("parseStringLiteral", <Object>[], "'\$\$foo'", |
[new AnalysisError(null, 2, 1, ParserErrorCode.MISSING_IDENTIFIER)]); |
} |
void test_expectedStringLiteral() { |
- StringLiteral expression = parse4( |
- "parseStringLiteral", "1", [ParserErrorCode.EXPECTED_STRING_LITERAL]); |
- expect(expression.isSynthetic, isTrue); |
+ createParser('1'); |
+ StringLiteral literal = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_STRING_LITERAL]); |
+ expect(literal.isSynthetic, isTrue); |
} |
void test_expectedToken_commaMissingInArgumentList() { |
- parse4("parseArgumentList", "(x, y z)", [ParserErrorCode.EXPECTED_TOKEN]); |
+ createParser('(x, y z)'); |
+ ArgumentList list = parser.parseArgumentList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); |
} |
void test_expectedToken_parseStatement_afterVoid() { |
@@ -1087,11 +1201,11 @@ class Foo { |
void test_expectedToken_semicolonAfterClass() { |
Token token = TokenFactory.tokenFromKeyword(Keyword.CLASS); |
- parse3( |
- "parseClassTypeAlias", |
- <Object>[emptyCommentAndMetadata(), null, token], |
- "A = B with C", |
- [ParserErrorCode.EXPECTED_TOKEN]); |
+ createParser('A = B with C'); |
+ ClassTypeAlias declaration = |
+ parser.parseClassTypeAlias(emptyCommentAndMetadata(), null, token); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); |
} |
void test_expectedToken_semicolonMissingAfterExport() { |
@@ -1131,18 +1245,24 @@ class Foo { |
} |
void test_externalAfterConst() { |
- parse3("parseClassMember", <Object>["C"], "const external C();", |
- [ParserErrorCode.EXTERNAL_AFTER_CONST]); |
+ createParser('const external C();'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_AFTER_CONST]); |
} |
void test_externalAfterFactory() { |
- parse3("parseClassMember", <Object>["C"], "factory external C();", |
- [ParserErrorCode.EXTERNAL_AFTER_FACTORY]); |
+ createParser('factory external C();'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_AFTER_FACTORY]); |
} |
void test_externalAfterStatic() { |
- parse3("parseClassMember", <Object>["C"], "static external int m();", |
- [ParserErrorCode.EXTERNAL_AFTER_STATIC]); |
+ createParser('static external int m();'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_AFTER_STATIC]); |
} |
void test_externalClass() { |
@@ -1151,12 +1271,18 @@ class Foo { |
} |
void test_externalConstructorWithBody_factory() { |
- parse3("parseClassMember", <Object>["C"], "external factory C() {}", |
+ createParser('external factory C() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY]); |
} |
void test_externalConstructorWithBody_named() { |
- parse3("parseClassMember", <Object>["C"], "external C.c() {}", |
+ createParser('external C.c() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY]); |
} |
@@ -1166,51 +1292,67 @@ class Foo { |
} |
void test_externalField_const() { |
- parse3("parseClassMember", <Object>["C"], "external const A f;", |
- [ParserErrorCode.EXTERNAL_FIELD]); |
+ createParser('external const A f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_FIELD]); |
} |
void test_externalField_final() { |
- parse3("parseClassMember", <Object>["C"], "external final A f;", |
- [ParserErrorCode.EXTERNAL_FIELD]); |
+ createParser('external final A f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_FIELD]); |
} |
void test_externalField_static() { |
- parse3("parseClassMember", <Object>["C"], "external static A f;", |
- [ParserErrorCode.EXTERNAL_FIELD]); |
+ createParser('external static A f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_FIELD]); |
} |
void test_externalField_typed() { |
- parse3("parseClassMember", <Object>["C"], "external A f;", |
- [ParserErrorCode.EXTERNAL_FIELD]); |
+ createParser('external A f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_FIELD]); |
} |
void test_externalField_untyped() { |
- parse3("parseClassMember", <Object>["C"], "external var f;", |
- [ParserErrorCode.EXTERNAL_FIELD]); |
+ createParser('external var f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_FIELD]); |
} |
void test_externalGetterWithBody() { |
- parse3("parseClassMember", <Object>["C"], "external int get x {}", |
- [ParserErrorCode.EXTERNAL_GETTER_WITH_BODY]); |
+ createParser('external int get x {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_GETTER_WITH_BODY]); |
} |
void test_externalMethodWithBody() { |
- parse3("parseClassMember", <Object>["C"], "external m() {}", |
- [ParserErrorCode.EXTERNAL_METHOD_WITH_BODY]); |
+ createParser('external m() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_METHOD_WITH_BODY]); |
} |
void test_externalOperatorWithBody() { |
- parse3( |
- "parseClassMember", |
- <Object>["C"], |
- "external operator +(int value) {}", |
- [ParserErrorCode.EXTERNAL_OPERATOR_WITH_BODY]); |
+ createParser('external operator +(int value) {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.EXTERNAL_OPERATOR_WITH_BODY]); |
} |
void test_externalSetterWithBody() { |
- parse3("parseClassMember", <Object>["C"], "external set x(int value) {}", |
- [ParserErrorCode.EXTERNAL_SETTER_WITH_BODY]); |
+ createParser('external set x(int value) {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXTERNAL_SETTER_WITH_BODY]); |
} |
void test_externalTypedef() { |
@@ -1219,27 +1361,38 @@ class Foo { |
} |
void test_extraCommaInParameterList() { |
- parse4("parseFormalParameterList", "(int a, , int b)", |
+ createParser('(int a, , int b)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); |
} |
void test_extraCommaTrailingNamedParameterGroup() { |
- parse4("parseFormalParameterList", "({int b},)", [ |
+ createParser('({int b},)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ |
ParserErrorCode.MISSING_IDENTIFIER, |
ParserErrorCode.NORMAL_BEFORE_OPTIONAL_PARAMETERS |
]); |
} |
void test_extraCommaTrailingPositionalParameterGroup() { |
- parse4("parseFormalParameterList", "([int b],)", [ |
+ createParser('([int b],)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ |
ParserErrorCode.MISSING_IDENTIFIER, |
ParserErrorCode.NORMAL_BEFORE_OPTIONAL_PARAMETERS |
]); |
} |
void test_extraTrailingCommaInParameterList() { |
- parse4("parseFormalParameterList", "(a,,)", |
- [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('(a,,)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_factoryTopLevelDeclaration_class() { |
@@ -1253,23 +1406,32 @@ class Foo { |
} |
void test_factoryWithInitializers() { |
- parse3("parseClassMember", <Object>["C"], "factory C() : x = 3 {}", |
- [ParserErrorCode.FACTORY_WITH_INITIALIZERS]); |
+ createParser('factory C() : x = 3 {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.FACTORY_WITH_INITIALIZERS]); |
} |
void test_factoryWithoutBody() { |
- parse3("parseClassMember", <Object>["C"], "factory C();", |
- [ParserErrorCode.FACTORY_WITHOUT_BODY]); |
+ createParser('factory C();'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.FACTORY_WITHOUT_BODY]); |
} |
void test_fieldInitializerOutsideConstructor() { |
- parse3("parseClassMember", <Object>["C"], "void m(this.x);", |
+ createParser('void m(this.x);'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR]); |
} |
void test_finalAndVar() { |
- parse3("parseClassMember", <Object>["C"], "final var x;", |
- [ParserErrorCode.FINAL_AND_VAR]); |
+ createParser('final var x;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.FINAL_AND_VAR]); |
} |
void test_finalClass() { |
@@ -1278,8 +1440,10 @@ class Foo { |
} |
void test_finalConstructor() { |
- parse3("parseClassMember", <Object>["C"], "final C() {}", |
- [ParserErrorCode.FINAL_CONSTRUCTOR]); |
+ createParser('final C() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.FINAL_CONSTRUCTOR]); |
} |
void test_finalEnum() { |
@@ -1288,8 +1452,10 @@ class Foo { |
} |
void test_finalMethod() { |
- parse3("parseClassMember", <Object>["C"], "final int m() {}", |
- [ParserErrorCode.FINAL_METHOD]); |
+ createParser('final int m() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.FINAL_METHOD]); |
} |
void test_finalTypedef() { |
@@ -1334,8 +1500,10 @@ class Foo { |
} |
void test_getterWithParameters() { |
- parse3("parseClassMember", <Object>["C"], "int get x() {}", |
- [ParserErrorCode.GETTER_WITH_PARAMETERS]); |
+ createParser('int get x() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.GETTER_WITH_PARAMETERS]); |
} |
void test_illegalAssignmentToNonAssignable_postfix_minusMinus_literal() { |
@@ -1387,96 +1555,141 @@ class Foo { |
} |
void test_initializedVariableInForEach() { |
- parse4("parseForStatement", "for (int a = 0 in foo) {}", |
+ createParser('for (int a = 0 in foo) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH]); |
} |
void test_invalidAwaitInFor() { |
- parse4("parseForStatement", "await for (; ;) {}", |
- [ParserErrorCode.INVALID_AWAIT_IN_FOR]); |
+ createParser('await for (; ;) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_AWAIT_IN_FOR]); |
} |
void test_invalidCodePoint() { |
- parse4("parseStringLiteral", "'\\uD900'", |
- [ParserErrorCode.INVALID_CODE_POINT]); |
+ createParser("'\\uD900'"); |
+ StringLiteral literal = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_CODE_POINT]); |
} |
void test_invalidHexEscape_invalidDigit() { |
- parse4( |
- "parseStringLiteral", "'\\x0 a'", [ParserErrorCode.INVALID_HEX_ESCAPE]); |
+ createParser("'\\x0 a'"); |
+ StringLiteral literal = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_HEX_ESCAPE]); |
} |
void test_invalidHexEscape_tooFewDigits() { |
- parse4( |
- "parseStringLiteral", "'\\x0'", [ParserErrorCode.INVALID_HEX_ESCAPE]); |
+ createParser("'\\x0'"); |
+ StringLiteral literal = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_HEX_ESCAPE]); |
} |
void test_invalidInterpolationIdentifier_startWithDigit() { |
- parse4("parseStringLiteral", "'\$1'", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser("'\$1'"); |
+ StringLiteral literal = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_invalidLiteralInConfiguration() { |
- parse4("parseConfiguration", "if (a == 'x \$y z') 'a.dart'", |
+ createParser("if (a == 'x \$y z') 'a.dart'"); |
+ Configuration configuration = parser.parseConfiguration(); |
+ expectNotNullIfNoErrors(configuration); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.INVALID_LITERAL_IN_CONFIGURATION]); |
} |
void test_invalidOperator() { |
- parse3("parseClassMember", <Object>["C"], "void operator ===(x) {}", |
- [ParserErrorCode.INVALID_OPERATOR]); |
+ createParser('void operator ===(x) {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_OPERATOR]); |
} |
void test_invalidOperatorAfterSuper_assignableExpression() { |
- parse3('parseAssignableExpression', <Object>[false], 'super?.v', |
- [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
+ createParser('super?.v'); |
+ Expression expression = parser.parseAssignableExpression(false); |
+ expectNotNullIfNoErrors(expression); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
} |
void test_invalidOperatorAfterSuper_primaryExpression() { |
- parse4('parsePrimaryExpression', 'super?.v', |
- [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
+ createParser('super?.v'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
} |
void test_invalidOperatorForSuper() { |
- parse4("parseUnaryExpression", "++super", |
- [ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
+ createParser('++super'); |
+ Expression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.INVALID_OPERATOR_FOR_SUPER]); |
} |
void test_invalidStarAfterAsync() { |
- parse3("parseFunctionBody", <Object>[false, null, false], "async* => 0;", |
- [ParserErrorCode.INVALID_STAR_AFTER_ASYNC]); |
+ createParser('async* => 0;'); |
+ FunctionBody functionBody = parser.parseFunctionBody(false, null, false); |
+ expectNotNullIfNoErrors(functionBody); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_STAR_AFTER_ASYNC]); |
} |
void test_invalidSync() { |
- parse3("parseFunctionBody", <Object>[false, null, false], "sync* => 0;", |
- [ParserErrorCode.INVALID_SYNC]); |
+ createParser('sync* => 0;'); |
+ FunctionBody functionBody = parser.parseFunctionBody(false, null, false); |
+ expectNotNullIfNoErrors(functionBody); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_SYNC]); |
} |
void test_invalidUnicodeEscape_incomplete_noDigits() { |
- parse4("parseStringLiteral", "'\\u{'", |
- [ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
+ createParser("'\\u{'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
} |
void test_invalidUnicodeEscape_incomplete_someDigits() { |
- parse4("parseStringLiteral", "'\\u{0A'", |
- [ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
+ createParser("'\\u{0A'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
} |
void test_invalidUnicodeEscape_invalidDigit() { |
- parse4("parseStringLiteral", "'\\u0 a'", |
- [ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
+ createParser("'\\u0 a'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
} |
void test_invalidUnicodeEscape_tooFewDigits_fixed() { |
- parse4("parseStringLiteral", "'\\u04'", |
- [ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
+ createParser("'\\u04'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
} |
void test_invalidUnicodeEscape_tooFewDigits_variable() { |
- parse4("parseStringLiteral", "'\\u{}'", |
- [ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
+ createParser("'\\u{}'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.INVALID_UNICODE_ESCAPE]); |
} |
void test_invalidUnicodeEscape_tooManyDigits_variable() { |
- parse4("parseStringLiteral", "'\\u{12345678}'", [ |
+ createParser("'\\u{12345678}'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ |
ParserErrorCode.INVALID_UNICODE_ESCAPE, |
ParserErrorCode.INVALID_CODE_POINT |
]); |
@@ -1516,17 +1729,18 @@ class Foo { |
void test_method_invalidTypeParameterComments() { |
enableGenericMethodComments = true; |
- MethodDeclaration method = parse3( |
- "parseClassMember", |
- <Object>["C"], |
- "void m/*<E, hello!>*/() {}", |
- [ |
- ParserErrorCode.EXPECTED_TOKEN /*>*/, |
- ParserErrorCode.MISSING_IDENTIFIER, |
- ParserErrorCode.EXPECTED_TOKEN /*(*/, |
- ParserErrorCode.EXPECTED_TOKEN /*)*/, |
- ParserErrorCode.MISSING_FUNCTION_BODY |
- ]); |
+ createParser('void m/*<E, hello!>*/() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ |
+ ParserErrorCode.EXPECTED_TOKEN /*>*/, |
+ ParserErrorCode.MISSING_IDENTIFIER, |
+ ParserErrorCode.EXPECTED_TOKEN /*(*/, |
+ ParserErrorCode.EXPECTED_TOKEN /*)*/, |
+ ParserErrorCode.MISSING_FUNCTION_BODY |
+ ]); |
+ expect(member, new isInstanceOf<MethodDeclaration>()); |
+ MethodDeclaration method = member; |
expect(method.typeParameters.toString(), '<E, hello>', |
reason: 'parser recovers what it can'); |
} |
@@ -1536,16 +1750,17 @@ class Foo { |
// TODO(jmesserly): ideally we'd be better at parser recovery here. |
enableGenericMethods = true; |
- MethodDeclaration method = parse3( |
- "parseClassMember", |
- <Object>["C"], |
- "f<E>(E extends num p);", |
- [ |
- ParserErrorCode.MISSING_IDENTIFIER, // `extends` is a keyword |
- ParserErrorCode.EXPECTED_TOKEN, // comma |
- ParserErrorCode.EXPECTED_TOKEN, // close paren |
- ParserErrorCode.MISSING_FUNCTION_BODY |
- ]); |
+ createParser('f<E>(E extends num p);'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ |
+ ParserErrorCode.MISSING_IDENTIFIER, // `extends` is a keyword |
+ ParserErrorCode.EXPECTED_TOKEN, // comma |
+ ParserErrorCode.EXPECTED_TOKEN, // close paren |
+ ParserErrorCode.MISSING_FUNCTION_BODY |
+ ]); |
+ expect(member, new isInstanceOf<MethodDeclaration>()); |
+ MethodDeclaration method = member; |
expect(method.parameters.toString(), '(E, extends)', |
reason: 'parser recovers what it can'); |
} |
@@ -1559,17 +1774,18 @@ class Foo { |
// point in the parser. This has a slight effect on the AST that results |
// from error recovery. |
enableGenericMethodComments = true; |
- MethodDeclaration method = parse3( |
- "parseClassMember", |
- <Object>["C"], |
- "f/*<E>*/(dynamic/*=E extends num*/p);", |
- [ |
- ParserErrorCode.MISSING_IDENTIFIER, // `extends` is a keyword |
- ParserErrorCode.EXPECTED_TOKEN, // comma |
- ParserErrorCode.MISSING_IDENTIFIER, // `extends` is a keyword |
- ParserErrorCode.EXPECTED_TOKEN, // close paren |
- ParserErrorCode.MISSING_FUNCTION_BODY |
- ]); |
+ createParser('f/*<E>*/(dynamic/*=E extends num*/p);'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ |
+ ParserErrorCode.MISSING_IDENTIFIER, // `extends` is a keyword |
+ ParserErrorCode.EXPECTED_TOKEN, // comma |
+ ParserErrorCode.MISSING_IDENTIFIER, // `extends` is a keyword |
+ ParserErrorCode.EXPECTED_TOKEN, // close paren |
+ ParserErrorCode.MISSING_FUNCTION_BODY |
+ ]); |
+ expect(member, new isInstanceOf<MethodDeclaration>()); |
+ MethodDeclaration method = member; |
expect(method.parameters.toString(), '(E extends, extends)', |
reason: 'parser recovers what it can'); |
} |
@@ -1580,17 +1796,18 @@ class Foo { |
// valid `>`. If it did we'd get less cascading errors, at least for this |
// particular example. |
enableGenericMethods = true; |
- MethodDeclaration method = parse3( |
- "parseClassMember", |
- <Object>["C"], |
- "void m<E, hello!>() {}", |
- [ |
- ParserErrorCode.EXPECTED_TOKEN /*>*/, |
- ParserErrorCode.MISSING_IDENTIFIER, |
- ParserErrorCode.EXPECTED_TOKEN /*(*/, |
- ParserErrorCode.EXPECTED_TOKEN /*)*/, |
- ParserErrorCode.MISSING_FUNCTION_BODY |
- ]); |
+ createParser('void m<E, hello!>() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ |
+ ParserErrorCode.EXPECTED_TOKEN /*>*/, |
+ ParserErrorCode.MISSING_IDENTIFIER, |
+ ParserErrorCode.EXPECTED_TOKEN /*(*/, |
+ ParserErrorCode.EXPECTED_TOKEN /*)*/, |
+ ParserErrorCode.MISSING_FUNCTION_BODY |
+ ]); |
+ expect(member, new isInstanceOf<MethodDeclaration>()); |
+ MethodDeclaration method = member; |
expect(method.typeParameters.toString(), '<E, hello>', |
reason: 'parser recovers what it can'); |
} |
@@ -1612,9 +1829,14 @@ class Foo { |
} |
void test_missingAssignableSelector_superPrimaryExpression() { |
- SuperExpression expression = parse4("parsePrimaryExpression", "super", |
- [ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR]); |
- expect(expression.superKeyword, isNotNull); |
+ createParser('super'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR]); |
+ expect(expression, new isInstanceOf<SuperExpression>()); |
+ SuperExpression superExpression = expression; |
+ expect(superExpression.superKeyword, isNotNull); |
} |
void test_missingAssignableSelector_superPropertyAccessAssigned() { |
@@ -1622,8 +1844,10 @@ class Foo { |
} |
void test_missingCatchOrFinally() { |
- TryStatement statement = parse4("parseTryStatement", "try {}", |
- [ParserErrorCode.MISSING_CATCH_OR_FINALLY]); |
+ createParser('try {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_CATCH_OR_FINALLY]); |
expect(statement, isNotNull); |
} |
@@ -1638,39 +1862,51 @@ class Foo { |
} |
void test_missingConstFinalVarOrType_topLevel() { |
- parse3("parseFinalConstVarOrType", <Object>[false], "a;", |
+ createParser('a;'); |
+ FinalConstVarOrType result = parser.parseFinalConstVarOrType(false); |
+ expectNotNullIfNoErrors(result); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE]); |
} |
void test_missingEnumBody() { |
- parse3("parseEnumDeclaration", <Object>[emptyCommentAndMetadata()], |
- "enum E;", [ParserErrorCode.MISSING_ENUM_BODY]); |
+ createParser('enum E;'); |
+ EnumDeclaration declaration = |
+ parser.parseEnumDeclaration(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_ENUM_BODY]); |
} |
void test_missingExpressionInThrow_withCascade() { |
- parse4("parseThrowExpression", "throw;", |
- [ParserErrorCode.MISSING_EXPRESSION_IN_THROW]); |
+ createParser('throw;'); |
+ ThrowExpression expression = parser.parseThrowExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.MISSING_EXPRESSION_IN_THROW]); |
} |
void test_missingExpressionInThrow_withoutCascade() { |
- parse4("parseThrowExpressionWithoutCascade", "throw;", |
- [ParserErrorCode.MISSING_EXPRESSION_IN_THROW]); |
+ createParser('throw;'); |
+ ThrowExpression expression = parser.parseThrowExpressionWithoutCascade(); |
+ expectNotNullIfNoErrors(expression); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.MISSING_EXPRESSION_IN_THROW]); |
} |
void test_missingFunctionBody_emptyNotAllowed() { |
- parse3( |
- "parseFunctionBody", |
- <Object>[false, ParserErrorCode.MISSING_FUNCTION_BODY, false], |
- ";", |
- [ParserErrorCode.MISSING_FUNCTION_BODY]); |
+ createParser(';'); |
+ FunctionBody functionBody = parser.parseFunctionBody( |
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false); |
+ expectNotNullIfNoErrors(functionBody); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_FUNCTION_BODY]); |
} |
void test_missingFunctionBody_invalid() { |
- parse3( |
- "parseFunctionBody", |
- <Object>[false, ParserErrorCode.MISSING_FUNCTION_BODY, false], |
- "return 0;", |
- [ParserErrorCode.MISSING_FUNCTION_BODY]); |
+ createParser('return 0;'); |
+ FunctionBody functionBody = parser.parseFunctionBody( |
+ false, ParserErrorCode.MISSING_FUNCTION_BODY, false); |
+ expectNotNullIfNoErrors(functionBody); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_FUNCTION_BODY]); |
} |
void test_missingFunctionParameters_local_void_block() { |
@@ -1708,73 +1944,108 @@ class Foo { |
} |
void test_missingIdentifier_afterOperator() { |
- parse4("parseMultiplicativeExpression", "1 *", |
- [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('1 *'); |
+ BinaryExpression expression = parser.parseMultiplicativeExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_missingIdentifier_beforeClosingCurly() { |
- parse3("parseClassMember", <Object>["C"], "int}", |
+ createParser('int}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MISSING_IDENTIFIER, ParserErrorCode.EXPECTED_TOKEN]); |
} |
void test_missingIdentifier_functionDeclaration_returnTypeWithoutName() { |
- parse4("parseFunctionDeclarationStatement", "A<T> () {}", |
- [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('A<T> () {}'); |
+ Statement statement = parser.parseFunctionDeclarationStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_missingIdentifier_inEnum() { |
- parse3("parseEnumDeclaration", <Object>[emptyCommentAndMetadata()], |
- "enum E {, TWO}", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('enum E {, TWO}'); |
+ EnumDeclaration declaration = |
+ parser.parseEnumDeclaration(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_missingIdentifier_inSymbol_afterPeriod() { |
- parse4("parseSymbolLiteral", "#a.", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('#a.'); |
+ SymbolLiteral literal = parser.parseSymbolLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_missingIdentifier_inSymbol_first() { |
- parse4("parseSymbolLiteral", "#", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('#'); |
+ SymbolLiteral literal = parser.parseSymbolLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_missingIdentifier_number() { |
- SimpleIdentifier expression = parse4( |
- "parseSimpleIdentifier", "1", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('1'); |
+ SimpleIdentifier expression = parser.parseSimpleIdentifier(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
expect(expression.isSynthetic, isTrue); |
} |
void test_missingIdentifierForParameterGroup() { |
- parse4("parseFormalParameterList", "(,)", |
- [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('(,)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
} |
void test_missingKeywordOperator() { |
- parse3("parseOperator", <Object>[emptyCommentAndMetadata(), null, null], |
- "+(x) {}", [ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
+ createParser('+(x) {}'); |
+ MethodDeclaration method = |
+ parser.parseOperator(emptyCommentAndMetadata(), null, null); |
+ expectNotNullIfNoErrors(method); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
} |
void test_missingKeywordOperator_parseClassMember() { |
- parse3("parseClassMember", <Object>["C"], "+() {}", |
- [ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
+ createParser('+() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
} |
void test_missingKeywordOperator_parseClassMember_afterTypeName() { |
- parse3("parseClassMember", <Object>["C"], "int +() {}", |
- [ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
+ createParser('int +() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
} |
void test_missingKeywordOperator_parseClassMember_afterVoid() { |
- parse3("parseClassMember", <Object>["C"], "void +() {}", |
- [ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
+ createParser('void +() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_KEYWORD_OPERATOR]); |
} |
void test_missingMethodParameters_void_block() { |
- MethodDeclaration method = parse3("parseClassMember", <Object>["C"], |
- "void m {} }", [ParserErrorCode.MISSING_METHOD_PARAMETERS]); |
+ createParser('void m {} }'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_METHOD_PARAMETERS]); |
+ expect(member, new isInstanceOf<MethodDeclaration>()); |
+ MethodDeclaration method = member; |
expect(method.parameters, hasLength(0)); |
} |
void test_missingMethodParameters_void_expression() { |
- parse3("parseClassMember", <Object>["C"], "void m => null; }", |
- [ParserErrorCode.MISSING_METHOD_PARAMETERS]); |
+ createParser('void m => null; }'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_METHOD_PARAMETERS]); |
} |
void test_missingNameInLibraryDirective() { |
@@ -1795,8 +2066,10 @@ class Foo { |
} |
void test_missingStartAfterSync() { |
- parse3("parseFunctionBody", <Object>[false, null, false], "sync {}", |
- [ParserErrorCode.MISSING_STAR_AFTER_SYNC]); |
+ createParser('sync {}'); |
+ FunctionBody functionBody = parser.parseFunctionBody(false, null, false); |
+ expectNotNullIfNoErrors(functionBody); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_STAR_AFTER_SYNC]); |
} |
void test_missingStatement() { |
@@ -1808,12 +2081,18 @@ class Foo { |
} |
void test_missingTerminatorForParameterGroup_named() { |
- parse4("parseFormalParameterList", "(a, {b: 0)", |
+ createParser('(a, {b: 0)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP]); |
} |
void test_missingTerminatorForParameterGroup_optional() { |
- parse4("parseFormalParameterList", "(a, [b = 0)", |
+ createParser('(a, [b = 0)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MISSING_TERMINATOR_FOR_PARAMETER_GROUP]); |
} |
@@ -1833,18 +2112,25 @@ class Foo { |
} |
void test_missingVariableInForEach() { |
- parse4("parseForStatement", "for (a < b in foo) {}", |
- [ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH]); |
+ createParser('for (a < b in foo) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH]); |
} |
void test_mixedParameterGroups_namedPositional() { |
- parse4("parseFormalParameterList", "(a, {b}, [c])", |
- [ParserErrorCode.MIXED_PARAMETER_GROUPS]); |
+ createParser('(a, {b}, [c])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MIXED_PARAMETER_GROUPS]); |
} |
void test_mixedParameterGroups_positionalNamed() { |
- parse4("parseFormalParameterList", "(a, [b], {c})", |
- [ParserErrorCode.MIXED_PARAMETER_GROUPS]); |
+ createParser('(a, [b], {c})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MIXED_PARAMETER_GROUPS]); |
} |
void test_mixin_application_lacks_with_clause() { |
@@ -1868,7 +2154,10 @@ class Foo { |
} |
void test_multipleNamedParameterGroups() { |
- parse4("parseFormalParameterList", "(a, {b}, {c})", |
+ createParser('(a, {b}, {c})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MULTIPLE_NAMED_PARAMETER_GROUPS]); |
} |
@@ -1878,12 +2167,18 @@ class Foo { |
} |
void test_multiplePositionalParameterGroups() { |
- parse4("parseFormalParameterList", "(a, [b], [c])", |
+ createParser('(a, [b], [c])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS]); |
} |
void test_multipleVariablesInForEach() { |
- parse4("parseForStatement", "for (int a, b in foo) {}", |
+ createParser('for (int a, b in foo) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MULTIPLE_VARIABLES_IN_FOR_EACH]); |
} |
@@ -1893,18 +2188,25 @@ class Foo { |
} |
void test_namedParameterOutsideGroup() { |
- parse4("parseFormalParameterList", "(a, b : 0)", |
- [ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP]); |
+ createParser('(a, b : 0)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.NAMED_PARAMETER_OUTSIDE_GROUP]); |
} |
void test_nonConstructorFactory_field() { |
- parse3("parseClassMember", <Object>["C"], "factory int x;", |
- [ParserErrorCode.NON_CONSTRUCTOR_FACTORY]); |
+ createParser('factory int x;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.NON_CONSTRUCTOR_FACTORY]); |
} |
void test_nonConstructorFactory_method() { |
- parse3("parseClassMember", <Object>["C"], "factory int m() {}", |
- [ParserErrorCode.NON_CONSTRUCTOR_FACTORY]); |
+ createParser('factory int m() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.NON_CONSTRUCTOR_FACTORY]); |
} |
void test_nonIdentifierLibraryName_library() { |
@@ -1930,8 +2232,11 @@ class Foo { |
} |
void test_nonUserDefinableOperator() { |
- parse3("parseClassMember", <Object>["C"], "operator +=(int x) => x + 1;", |
- [ParserErrorCode.NON_USER_DEFINABLE_OPERATOR]); |
+ createParser('operator +=(int x) => x + 1;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.NON_USER_DEFINABLE_OPERATOR]); |
} |
void test_optionalAfterNormalParameters_named() { |
@@ -1945,8 +2250,10 @@ class Foo { |
} |
void test_parseCascadeSection_missingIdentifier() { |
- MethodInvocation methodInvocation = parse4( |
- "parseCascadeSection", "..()", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('..()'); |
+ MethodInvocation methodInvocation = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(methodInvocation); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
expect(methodInvocation.target, isNull); |
expect(methodInvocation.methodName.name, ""); |
expect(methodInvocation.typeArguments, isNull); |
@@ -1955,8 +2262,10 @@ class Foo { |
void test_parseCascadeSection_missingIdentifier_typeArguments() { |
enableGenericMethods = true; |
- MethodInvocation methodInvocation = parse4( |
- "parseCascadeSection", "..<E>()", [ParserErrorCode.MISSING_IDENTIFIER]); |
+ createParser('..<E>()'); |
+ MethodInvocation methodInvocation = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(methodInvocation); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
expect(methodInvocation.target, isNull); |
expect(methodInvocation.methodName.name, ""); |
expect(methodInvocation.typeArguments, isNotNull); |
@@ -1964,27 +2273,42 @@ class Foo { |
} |
void test_positionalAfterNamedArgument() { |
- parse4("parseArgumentList", "(x: 1, 2)", |
+ createParser('(x: 1, 2)'); |
+ ArgumentList list = parser.parseArgumentList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.POSITIONAL_AFTER_NAMED_ARGUMENT]); |
} |
void test_positionalParameterOutsideGroup() { |
- parse4("parseFormalParameterList", "(a, b = 0)", |
+ createParser('(a, b = 0)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.POSITIONAL_PARAMETER_OUTSIDE_GROUP]); |
} |
void test_redirectingConstructorWithBody_named() { |
- parse3("parseClassMember", <Object>["C"], "C.x() : this() {}", |
+ createParser('C.x() : this() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.REDIRECTING_CONSTRUCTOR_WITH_BODY]); |
} |
void test_redirectingConstructorWithBody_unnamed() { |
- parse3("parseClassMember", <Object>["C"], "C() : this.x() {}", |
+ createParser('C() : this.x() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.REDIRECTING_CONSTRUCTOR_WITH_BODY]); |
} |
void test_redirectionInNonFactoryConstructor() { |
- parse3("parseClassMember", <Object>["C"], "C() = D;", |
+ createParser('C() = D;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.REDIRECTION_IN_NON_FACTORY_CONSTRUCTOR]); |
} |
@@ -1999,49 +2323,61 @@ class Foo { |
} |
void test_staticAfterConst() { |
- parse3("parseClassMember", <Object>["C"], "final static int f;", |
- [ParserErrorCode.STATIC_AFTER_FINAL]); |
+ createParser('final static int f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.STATIC_AFTER_FINAL]); |
} |
void test_staticAfterFinal() { |
- parse3("parseClassMember", <Object>["C"], "const static int f;", |
- [ParserErrorCode.STATIC_AFTER_CONST]); |
+ createParser('const static int f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.STATIC_AFTER_CONST]); |
} |
void test_staticAfterVar() { |
- parse3("parseClassMember", <Object>["C"], "var static f;", |
- [ParserErrorCode.STATIC_AFTER_VAR]); |
+ createParser('var static f;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.STATIC_AFTER_VAR]); |
} |
void test_staticConstructor() { |
- parse3("parseClassMember", <Object>["C"], "static C.m() {}", |
- [ParserErrorCode.STATIC_CONSTRUCTOR]); |
+ createParser('static C.m() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.STATIC_CONSTRUCTOR]); |
} |
void test_staticGetterWithoutBody() { |
- parse3("parseClassMember", <Object>["C"], "static get m;", |
- [ParserErrorCode.STATIC_GETTER_WITHOUT_BODY]); |
+ createParser('static get m;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.STATIC_GETTER_WITHOUT_BODY]); |
} |
void test_staticOperator_noReturnType() { |
- parse3( |
- "parseClassMember", |
- <Object>["C"], |
- "static operator +(int x) => x + 1;", |
- [ParserErrorCode.STATIC_OPERATOR]); |
+ createParser('static operator +(int x) => x + 1;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.STATIC_OPERATOR]); |
} |
void test_staticOperator_returnType() { |
- parse3( |
- "parseClassMember", |
- <Object>["C"], |
- "static int operator +(int x) => x + 1;", |
- [ParserErrorCode.STATIC_OPERATOR]); |
+ createParser('static int operator +(int x) => x + 1;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.STATIC_OPERATOR]); |
} |
void test_staticSetterWithoutBody() { |
- parse3("parseClassMember", <Object>["C"], "static set m(x);", |
- [ParserErrorCode.STATIC_SETTER_WITHOUT_BODY]); |
+ createParser('static set m(x);'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener |
+ .assertErrorsWithCodes([ParserErrorCode.STATIC_SETTER_WITHOUT_BODY]); |
} |
void test_staticTopLevelDeclaration_class() { |
@@ -2083,65 +2419,76 @@ m() { |
} |
void test_switchHasCaseAfterDefaultCase() { |
- parse4( |
- "parseSwitchStatement", |
- "switch (a) {default: return 0; case 1: return 1;}", |
+ createParser('switch (a) {default: return 0; case 1: return 1;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE]); |
} |
void test_switchHasCaseAfterDefaultCase_repeated() { |
- parse4("parseSwitchStatement", |
- "switch (a) {default: return 0; case 1: return 1; case 2: return 2;}", [ |
+ createParser( |
+ 'switch (a) {default: return 0; case 1: return 1; case 2: return 2;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ |
ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, |
ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE |
]); |
} |
void test_switchHasMultipleDefaultCases() { |
- parse4( |
- "parseSwitchStatement", |
- "switch (a) {default: return 0; default: return 1;}", |
+ createParser('switch (a) {default: return 0; default: return 1;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES]); |
} |
void test_switchHasMultipleDefaultCases_repeated() { |
- parse4( |
- "parseSwitchStatement", |
- "switch (a) {default: return 0; default: return 1; default: return 2;}", |
- [ |
- ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, |
- ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES |
- ]); |
+ createParser( |
+ 'switch (a) {default: return 0; default: return 1; default: return 2;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ |
+ ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, |
+ ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES |
+ ]); |
} |
void test_topLevel_getter() { |
- FunctionDeclaration funct = parse3("parseCompilationUnitMember", |
- <Object>[emptyCommentAndMetadata()], "get x => 7;"); |
- expect(funct.functionExpression.parameters, isNull); |
+ createParser('get x => 7;'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertNoErrors(); |
+ expect(member, new isInstanceOf<FunctionDeclaration>()); |
+ FunctionDeclaration function = member; |
+ expect(function.functionExpression.parameters, isNull); |
} |
void test_topLevelOperator_withoutType() { |
- parse3( |
- "parseCompilationUnitMember", |
- <Object>[emptyCommentAndMetadata()], |
- "operator +(bool x, bool y) => x | y;", |
- [ParserErrorCode.TOP_LEVEL_OPERATOR]); |
+ createParser('operator +(bool x, bool y) => x | y;'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.TOP_LEVEL_OPERATOR]); |
} |
void test_topLevelOperator_withType() { |
- parse3( |
- "parseCompilationUnitMember", |
- <Object>[emptyCommentAndMetadata()], |
- "bool operator +(bool x, bool y) => x | y;", |
- [ParserErrorCode.TOP_LEVEL_OPERATOR]); |
+ createParser('bool operator +(bool x, bool y) => x | y;'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.TOP_LEVEL_OPERATOR]); |
} |
void test_topLevelOperator_withVoid() { |
- parse3( |
- "parseCompilationUnitMember", |
- <Object>[emptyCommentAndMetadata()], |
- "void operator +(bool x, bool y) => x | y;", |
- [ParserErrorCode.TOP_LEVEL_OPERATOR]); |
+ createParser('void operator +(bool x, bool y) => x | y;'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.TOP_LEVEL_OPERATOR]); |
} |
void test_topLevelVariable_withMetadata() { |
@@ -2163,12 +2510,18 @@ m() { |
} |
void test_unexpectedTerminatorForParameterGroup_named() { |
- parse4("parseFormalParameterList", "(a, b})", |
+ createParser('(a, b})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP]); |
} |
void test_unexpectedTerminatorForParameterGroup_optional() { |
- parse4("parseFormalParameterList", "(a, b])", |
+ createParser('(a, b])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.UNEXPECTED_TERMINATOR_FOR_PARAMETER_GROUP]); |
} |
@@ -2183,8 +2536,11 @@ m() { |
} |
void test_unexpectedToken_semicolonBetweenClassMembers() { |
- parse3("parseClassDeclaration", <Object>[emptyCommentAndMetadata(), null], |
- "class C { int x; ; int y;}", [ParserErrorCode.UNEXPECTED_TOKEN]); |
+ createParser('class C { int x; ; int y;}'); |
+ ClassDeclaration declaration = |
+ parser.parseClassDeclaration(emptyCommentAndMetadata(), null); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]); |
} |
void test_unexpectedToken_semicolonBetweenCompilationUnitMembers() { |
@@ -2267,11 +2623,13 @@ void main() { |
} |
void test_useOfUnaryPlusOperator() { |
- SimpleIdentifier expression = parse4( |
- "parseUnaryExpression", "+x", [ParserErrorCode.MISSING_IDENTIFIER]); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is SimpleIdentifier, SimpleIdentifier, expression); |
- expect(expression.isSynthetic, isTrue); |
+ createParser('+x'); |
+ Expression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
+ expect(expression, new isInstanceOf<SimpleIdentifier>()); |
+ SimpleIdentifier identifier = expression; |
+ expect(identifier.isSynthetic, isTrue); |
} |
void test_varAndType_field() { |
@@ -2299,8 +2657,10 @@ void main() { |
} |
void test_varReturnType() { |
- parse3("parseClassMember", <Object>["C"], "var m() {}", |
- [ParserErrorCode.VAR_RETURN_TYPE]); |
+ createParser('var m() {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.VAR_RETURN_TYPE]); |
} |
void test_varTypedef() { |
@@ -2309,18 +2669,24 @@ void main() { |
} |
void test_voidParameter() { |
- parse4("parseNormalFormalParameter", "void a)", |
- [ParserErrorCode.VOID_PARAMETER]); |
+ createParser('void a)'); |
+ NormalFormalParameter parameter = parser.parseNormalFormalParameter(); |
+ expectNotNullIfNoErrors(parameter); |
+ listener.assertErrorsWithCodes([ParserErrorCode.VOID_PARAMETER]); |
} |
void test_voidVariable_parseClassMember_initializer() { |
- parse3("parseClassMember", <Object>["C"], "void x = 0;", |
- [ParserErrorCode.VOID_VARIABLE]); |
+ createParser('void x = 0;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.VOID_VARIABLE]); |
} |
void test_voidVariable_parseClassMember_noInitializer() { |
- parse3("parseClassMember", <Object>["C"], "void x;", |
- [ParserErrorCode.VOID_VARIABLE]); |
+ createParser('void x;'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.VOID_VARIABLE]); |
} |
void test_voidVariable_parseCompilationUnit_initializer() { |
@@ -2334,13 +2700,19 @@ void main() { |
} |
void test_voidVariable_parseCompilationUnitMember_initializer() { |
- parse3("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()], |
- "void a = 0;", [ParserErrorCode.VOID_VARIABLE]); |
+ createParser('void a = 0;'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.VOID_VARIABLE]); |
} |
void test_voidVariable_parseCompilationUnitMember_noInitializer() { |
- parse3("parseCompilationUnitMember", <Object>[emptyCommentAndMetadata()], |
- "void a;", [ParserErrorCode.VOID_VARIABLE]); |
+ createParser('void a;'); |
+ CompilationUnitMember member = |
+ parser.parseCompilationUnitMember(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.VOID_VARIABLE]); |
} |
void test_voidVariable_statement_initializer() { |
@@ -2363,27 +2735,42 @@ void main() { |
} |
void test_withWithoutExtends() { |
- parse3("parseClassDeclaration", <Object>[emptyCommentAndMetadata(), null], |
- "class A with B, C {}", [ParserErrorCode.WITH_WITHOUT_EXTENDS]); |
+ createParser('class A with B, C {}'); |
+ ClassDeclaration declaration = |
+ parser.parseClassDeclaration(emptyCommentAndMetadata(), null); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertErrorsWithCodes([ParserErrorCode.WITH_WITHOUT_EXTENDS]); |
} |
void test_wrongSeparatorForNamedParameter() { |
- parse4("parseFormalParameterList", "(a, {b = 0})", |
+ createParser('(a, {b = 0})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.WRONG_SEPARATOR_FOR_NAMED_PARAMETER]); |
} |
void test_wrongSeparatorForPositionalParameter() { |
- parse4("parseFormalParameterList", "(a, [b : 0])", |
+ createParser('(a, [b : 0])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER]); |
} |
void test_wrongTerminatorForParameterGroup_named() { |
- parse4("parseFormalParameterList", "(a, {b, c])", |
+ createParser('(a, {b, c])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]); |
} |
void test_wrongTerminatorForParameterGroup_optional() { |
- parse4("parseFormalParameterList", "(a, [b, c})", |
+ createParser('(a, [b, c})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.WRONG_TERMINATOR_FOR_PARAMETER_GROUP]); |
} |
} |
@@ -2397,7 +2784,10 @@ class NonErrorParserTest extends ParserTestCase { |
void test_staticMethod_notParsingFunctionBodies() { |
ParserTestCase.parseFunctionBodies = false; |
try { |
- parse4("parseCompilationUnit", "class C { static void m() {} }"); |
+ createParser('class C { static void m() {} }'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
} finally { |
ParserTestCase.parseFunctionBodies = true; |
} |
@@ -2450,6 +2840,20 @@ class ParserTestCase extends EngineTestCase { |
bool enableNnbd = false; |
/** |
+ * The error listener to which scanner and parser errors will be reported. |
+ * |
+ * This field is typically initialized by invoking [createParser]. |
+ */ |
+ GatheringErrorListener listener; |
+ |
+ /** |
+ * The parser used by the test. |
+ * |
+ * This field is typically initialized by invoking [createParser]. |
+ */ |
+ Parser parser; |
+ |
+ /** |
* Return a CommentAndMetadata object with the given values that can be used for testing. |
* |
* @param comment the comment to be wrapped in the object |
@@ -2462,95 +2866,70 @@ class ParserTestCase extends EngineTestCase { |
} |
/** |
- * Return an empty CommentAndMetadata object that can be used for testing. |
- * |
- * @return an empty CommentAndMetadata object that can be used for testing |
+ * Create the [parser] and [listener] used by a test. The [parser] will be |
+ * prepared to parse the tokens scanned from the given [content]. |
*/ |
- CommentAndMetadata emptyCommentAndMetadata() => |
- new CommentAndMetadata(null, null); |
- |
- /** |
- * Invoke a method in [Parser]. The method is assumed to have the given number and type of |
- * parameters and will be invoked with the given arguments. |
- * |
- * The given source is scanned and the parser is initialized to start with the first token in the |
- * source before the method is invoked. |
- * |
- * @param methodName the name of the method that should be invoked |
- * @param objects the values of the arguments to the method |
- * @param source the source to be processed by the parse method |
- * @param listener the error listener that will be used for both scanning and parsing |
- * @return the result of invoking the method |
- * @throws Exception if the method could not be invoked or throws an exception |
- * @throws AssertionFailedError if the result is `null` or the errors produced while |
- * scanning and parsing the source do not match the expected errors |
- */ |
- Object invokeParserMethod(String methodName, List<Object> objects, |
- String source, GatheringErrorListener listener) { |
+ void createParser(String content) { |
+ listener = new GatheringErrorListener(); |
// |
// Scan the source. |
// |
- Scanner scanner = |
- new Scanner(null, new CharSequenceReader(source), listener); |
+ TestSource source = new TestSource(); |
+ CharacterReader reader = new CharSequenceReader(content); |
+ Scanner scanner = new Scanner(source, reader, listener); |
scanner.scanGenericMethodComments = enableGenericMethodComments; |
scanner.scanLazyAssignmentOperators = enableLazyAssignmentOperators; |
Token tokenStream = scanner.tokenize(); |
- listener.setLineInfo(new TestSource(), scanner.lineStarts); |
+ listener.setLineInfo(source, scanner.lineStarts); |
// |
- // Parse the source. |
+ // Create and initialize the parser. |
// |
- Parser parser = createParser(listener); |
+ parser = new Parser(source, listener); |
parser.enableAssertInitializer = enableAssertInitializer; |
parser.parseAsync = parseAsync; |
parser.parseGenericMethods = enableGenericMethods; |
parser.parseGenericMethodComments = enableGenericMethodComments; |
parser.parseFunctionBodies = parseFunctionBodies; |
parser.enableNnbd = enableNnbd; |
- Object result = |
- invokeParserMethodImpl(parser, methodName, objects, tokenStream); |
- // |
- // Partially test the results. |
- // |
+ parser.currentToken = tokenStream; |
+ } |
+ |
+ /** |
+ * Return an empty CommentAndMetadata object that can be used for testing. |
+ * |
+ * @return an empty CommentAndMetadata object that can be used for testing |
+ */ |
+ CommentAndMetadata emptyCommentAndMetadata() => |
+ new CommentAndMetadata(null, null); |
+ |
+ void expectNotNullIfNoErrors(Object result) { |
if (!listener.hasErrors) { |
expect(result, isNotNull); |
} |
- return result; |
} |
/** |
- * Invoke a method in [Parser]. The method is assumed to have no arguments. |
+ * Invoke a method in [Parser]. The method is assumed to have the given number and type of |
+ * parameters and will be invoked with the given arguments. |
* |
* The given source is scanned and the parser is initialized to start with the first token in the |
* source before the method is invoked. |
* |
* @param methodName the name of the method that should be invoked |
+ * @param objects the values of the arguments to the method |
* @param source the source to be processed by the parse method |
- * @param listener the error listener that will be used for both scanning and parsing |
* @return the result of invoking the method |
* @throws Exception if the method could not be invoked or throws an exception |
* @throws AssertionFailedError if the result is `null` or the errors produced while |
* scanning and parsing the source do not match the expected errors |
*/ |
- Object invokeParserMethod2( |
- String methodName, String source, GatheringErrorListener listener) => |
- invokeParserMethod(methodName, _EMPTY_ARGUMENTS, source, listener); |
- |
- /** |
- * Invoke a parse method in [Parser]. The method is assumed to have the given number and |
- * type of parameters and will be invoked with the given arguments. |
- * |
- * The given source is scanned and the parser is initialized to start with the first token in the |
- * source before the parse method is invoked. |
- * |
- * @param methodName the name of the parse method that should be invoked to parse the source |
- * @param objects the values of the arguments to the method |
- * @param source the source to be parsed by the parse method |
- * @return the result of invoking the method |
- * @throws Exception if the method could not be invoked or throws an exception |
- * @throws AssertionFailedError if the result is `null` or if any errors are produced |
- */ |
- Object parse(String methodName, List<Object> objects, String source) => |
- parse2(methodName, objects, source); |
+ Object invokeParserMethod( |
+ String methodName, List<Object> objects, String source) { |
+ createParser(source); |
+ Object result = invokeParserMethodImpl(parser, methodName, objects); |
+ expectNotNullIfNoErrors(result); |
+ return result; |
+ } |
/** |
* Invoke a parse method in [Parser]. The method is assumed to have the given number and |
@@ -2568,23 +2947,20 @@ class ParserTestCase extends EngineTestCase { |
* @throws AssertionFailedError if the result is `null` or the errors produced while |
* scanning and parsing the source do not match the expected errors |
*/ |
- Object parse2(String methodName, List<Object> objects, String source, |
+ Object parse(String methodName, List<Object> objects, String source, |
[List<AnalysisError> errors = AnalysisError.NO_ERRORS]) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- Object result = invokeParserMethod(methodName, objects, source, listener); |
+ Object result = invokeParserMethod(methodName, objects, source); |
listener.assertErrors(errors); |
return result; |
} |
/** |
- * Invoke a parse method in [Parser]. The method is assumed to have the given number and |
- * type of parameters and will be invoked with the given arguments. |
+ * Invoke a parse method in [Parser]. The method is assumed to have no arguments. |
* |
* The given source is scanned and the parser is initialized to start with the first token in the |
* source before the parse method is invoked. |
* |
* @param methodName the name of the parse method that should be invoked to parse the source |
- * @param objects the values of the arguments to the method |
* @param source the source to be parsed by the parse method |
* @param errorCodes the error codes of the errors that should be generated |
* @return the result of invoking the method |
@@ -2592,52 +2968,22 @@ class ParserTestCase extends EngineTestCase { |
* @throws AssertionFailedError if the result is `null` or the errors produced while |
* scanning and parsing the source do not match the expected errors |
*/ |
- Object parse3(String methodName, List<Object> objects, String source, |
+ Object parse4(String methodName, String source, |
[List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- Object result = invokeParserMethod(methodName, objects, source, listener); |
+ Object result = invokeParserMethod(methodName, _EMPTY_ARGUMENTS, source); |
listener.assertErrorsWithCodes(errorCodes); |
return result; |
} |
/** |
- * Invoke a parse method in [Parser]. The method is assumed to have no arguments. |
- * |
- * The given source is scanned and the parser is initialized to start with the first token in the |
- * source before the parse method is invoked. |
- * |
- * @param methodName the name of the parse method that should be invoked to parse the source |
- * @param source the source to be parsed by the parse method |
- * @param errorCodes the error codes of the errors that should be generated |
- * @return the result of invoking the method |
- * @throws Exception if the method could not be invoked or throws an exception |
- * @throws AssertionFailedError if the result is `null` or the errors produced while |
- * scanning and parsing the source do not match the expected errors |
- */ |
- Object parse4(String methodName, String source, |
- [List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) => |
- parse3(methodName, _EMPTY_ARGUMENTS, source, errorCodes); |
- |
- /** |
* Parse the given [source] as a compilation unit. Throw an exception if the |
* source could not be parsed, if the compilation errors in the source do not |
* match those that are expected, or if the result would have been `null`. |
*/ |
CompilationUnit parseCompilationUnitWithOptions(String source, |
[List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- Scanner scanner = |
- new Scanner(null, new CharSequenceReader(source), listener); |
- listener.setLineInfo(new TestSource(), scanner.lineStarts); |
- Token token = scanner.tokenize(); |
- Parser parser = createParser(listener); |
- parser.enableAssertInitializer = enableAssertInitializer; |
- parser.parseAsync = parseAsync; |
- parser.parseFunctionBodies = parseFunctionBodies; |
- parser.parseGenericMethods = enableGenericMethods; |
- parser.parseGenericMethodComments = enableGenericMethodComments; |
- parser.enableNnbd = enableNnbd; |
- CompilationUnit unit = parser.parseCompilationUnit(token); |
+ createParser(source); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
expect(unit, isNotNull); |
listener.assertErrorsWithCodes(errorCodes); |
return unit; |
@@ -2654,17 +3000,8 @@ class ParserTestCase extends EngineTestCase { |
*/ |
Expression parseExpression(String source, |
[List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- Scanner scanner = |
- new Scanner(null, new CharSequenceReader(source), listener); |
- scanner.scanGenericMethodComments = enableGenericMethodComments; |
- listener.setLineInfo(new TestSource(), scanner.lineStarts); |
- Token token = scanner.tokenize(); |
- Parser parser = createParser(listener); |
- parser.parseGenericMethods = enableGenericMethods; |
- parser.parseGenericMethodComments = enableGenericMethodComments; |
- parser.enableNnbd = enableNnbd; |
- Expression expression = parser.parseExpression(token); |
+ createParser(source); |
+ Expression expression = parser.parseExpression2(); |
expect(expression, isNotNull); |
listener.assertErrorsWithCodes(errorCodes); |
return expression; |
@@ -2677,16 +3014,6 @@ class ParserTestCase extends EngineTestCase { |
} |
/** |
- * Create a parser. |
- * |
- * @param listener the listener to be passed to the parser |
- * @return the parser that was created |
- */ |
- static Parser createParser(GatheringErrorListener listener) { |
- return new Parser(null, listener); |
- } |
- |
- /** |
* Parse the given source as a compilation unit. |
* |
* @param source the source to be parsed |
@@ -2702,7 +3029,7 @@ class ParserTestCase extends EngineTestCase { |
new Scanner(null, new CharSequenceReader(source), listener); |
listener.setLineInfo(new TestSource(), scanner.lineStarts); |
Token token = scanner.tokenize(); |
- Parser parser = createParser(listener); |
+ Parser parser = new Parser(null, listener); |
CompilationUnit unit = parser.parseCompilationUnit(token); |
expect(unit, isNotNull); |
listener.assertErrorsWithCodes(errorCodes); |
@@ -2724,7 +3051,7 @@ class ParserTestCase extends EngineTestCase { |
scanner.scanLazyAssignmentOperators = enableLazyAssignmentOperators; |
listener.setLineInfo(new TestSource(), scanner.lineStarts); |
Token token = scanner.tokenize(); |
- Parser parser = createParser(listener); |
+ Parser parser = new Parser(null, listener); |
Statement statement = parser.parseStatement(token); |
expect(statement, isNotNull); |
listener.assertErrorsWithCodes(errorCodes); |
@@ -2749,7 +3076,7 @@ class ParserTestCase extends EngineTestCase { |
new Scanner(null, new CharSequenceReader(source), listener); |
listener.setLineInfo(new TestSource(), scanner.lineStarts); |
Token token = scanner.tokenize(); |
- Parser parser = createParser(listener); |
+ Parser parser = new Parser(null, listener); |
List<Statement> statements = parser.parseStatements(token); |
expect(statements, hasLength(expectedCount)); |
listener.assertErrorsWithCodes(errorCodes); |
@@ -3093,19 +3420,27 @@ class B = Object with A {}''', |
} |
void test_conditionalExpression_missingElse() { |
- ConditionalExpression expression = parse4("parseConditionalExpression", |
- "x ? y :", [ParserErrorCode.MISSING_IDENTIFIER]); |
- EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, |
- SimpleIdentifier, expression.elseExpression); |
- expect(expression.elseExpression.isSynthetic, isTrue); |
+ createParser('x ? y :'); |
+ Expression expression = parser.parseConditionalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
+ expect(expression, new isInstanceOf<ConditionalExpression>()); |
+ ConditionalExpression conditionalExpression = expression; |
+ expect(conditionalExpression.elseExpression, |
+ new isInstanceOf<SimpleIdentifier>()); |
+ expect(conditionalExpression.elseExpression.isSynthetic, isTrue); |
} |
void test_conditionalExpression_missingThen() { |
- ConditionalExpression expression = parse4("parseConditionalExpression", |
- "x ? : z", [ParserErrorCode.MISSING_IDENTIFIER]); |
- EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, |
- SimpleIdentifier, expression.thenExpression); |
- expect(expression.thenExpression.isSynthetic, isTrue); |
+ createParser('x ? : z'); |
+ Expression expression = parser.parseConditionalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
+ expect(expression, new isInstanceOf<ConditionalExpression>()); |
+ ConditionalExpression conditionalExpression = expression; |
+ expect(conditionalExpression.thenExpression, |
+ new isInstanceOf<SimpleIdentifier>()); |
+ expect(conditionalExpression.thenExpression.isSynthetic, isTrue); |
} |
void test_declarationBeforeDirective() { |
@@ -3187,8 +3522,10 @@ class B = Object with A {}''', |
} |
void test_expressionList_multiple_end() { |
- List<Expression> result = parse4("parseExpressionList", ", 2, 3, 4", |
- [ParserErrorCode.MISSING_IDENTIFIER]) as List<Expression>; |
+ createParser(', 2, 3, 4'); |
+ List<Expression> result = parser.parseExpressionList(); |
+ expectNotNullIfNoErrors(result); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
expect(result, hasLength(4)); |
Expression syntheticExpression = result[0]; |
EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, |
@@ -3197,8 +3534,10 @@ class B = Object with A {}''', |
} |
void test_expressionList_multiple_middle() { |
- List<Expression> result = parse4("parseExpressionList", "1, 2, , 4", |
- [ParserErrorCode.MISSING_IDENTIFIER]) as List<Expression>; |
+ createParser('1, 2, , 4'); |
+ List<Expression> result = parser.parseExpressionList(); |
+ expectNotNullIfNoErrors(result); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
expect(result, hasLength(4)); |
Expression syntheticExpression = result[2]; |
EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, |
@@ -3207,8 +3546,10 @@ class B = Object with A {}''', |
} |
void test_expressionList_multiple_start() { |
- List<Expression> result = parse4("parseExpressionList", "1, 2, 3,", |
- [ParserErrorCode.MISSING_IDENTIFIER]) as List<Expression>; |
+ createParser('1, 2, 3,'); |
+ List<Expression> result = parser.parseExpressionList(); |
+ expectNotNullIfNoErrors(result); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
expect(result, hasLength(4)); |
Expression syntheticExpression = result[3]; |
EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, |
@@ -3269,12 +3610,17 @@ class B = Object with A {}''', |
} |
void test_incomplete_constructorInitializers_empty() { |
- parse3("parseClassMember", ["C"], "C() : {}", |
- [ParserErrorCode.MISSING_INITIALIZER]); |
+ createParser('C() : {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.MISSING_INITIALIZER]); |
} |
void test_incomplete_constructorInitializers_missingEquals() { |
- ClassMember member = parse3("parseClassMember", ["C"], "C() : x(3) {}", |
+ createParser('C() : x(3) {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER]); |
expect(member, new isInstanceOf<ConstructorDeclaration>()); |
NodeList<ConstructorInitializer> initializers = |
@@ -3289,7 +3635,10 @@ class B = Object with A {}''', |
} |
void test_incomplete_constructorInitializers_variable() { |
- parse3("parseClassMember", ["C"], "C() : x {}", |
+ createParser('C() : x {}'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes( |
[ParserErrorCode.MISSING_ASSIGNMENT_IN_INITIALIZER]); |
} |
@@ -3691,8 +4040,12 @@ class C { |
} |
void test_missingIdentifier_afterAnnotation() { |
- MethodDeclaration method = parse3("parseClassMember", <Object>["C"], |
- "@override }", [ParserErrorCode.EXPECTED_CLASS_MEMBER]); |
+ createParser('@override }'); |
+ ClassMember member = parser.parseClassMember('C'); |
+ expectNotNullIfNoErrors(member); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CLASS_MEMBER]); |
+ expect(member, new isInstanceOf<MethodDeclaration>()); |
+ MethodDeclaration method = member; |
expect(method.documentationComment, isNull); |
NodeList<Annotation> metadata = method.metadata; |
expect(metadata, hasLength(1)); |
@@ -3802,10 +4155,11 @@ class C { |
} |
void test_primaryExpression_argumentDefinitionTest() { |
- Expression expression = parse4( |
- "parsePrimaryExpression", "?a", [ParserErrorCode.UNEXPECTED_TOKEN]); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is SimpleIdentifier, SimpleIdentifier, expression); |
+ createParser('?a'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertErrorsWithCodes([ParserErrorCode.UNEXPECTED_TOKEN]); |
+ expect(expression, new isInstanceOf<SimpleIdentifier>()); |
} |
void test_relationalExpression_missing_LHS() { |
@@ -3976,9 +4330,13 @@ class SimpleParserTest extends ParserTestCase { |
void fail_parseStatement_functionDeclaration_noReturnType_typeParameters() { |
enableGenericMethods = true; |
- FunctionDeclarationStatement statement = |
- parse4("parseStatement", "f<E>(a, b) {};"); |
- expect(statement.functionDeclaration, isNotNull); |
+ createParser('f<E>(a, b) {};'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<FunctionDeclarationStatement>()); |
+ FunctionDeclarationStatement declaration = statement; |
+ expect(declaration.functionDeclaration, isNotNull); |
} |
void test_computeStringValue_emptyInterpolationPrefix() { |
@@ -4066,12 +4424,16 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_createSyntheticIdentifier() { |
- SimpleIdentifier identifier = _createSyntheticIdentifier(); |
+ createParser(''); |
+ SimpleIdentifier identifier = parser.createSyntheticIdentifier(); |
+ expectNotNullIfNoErrors(identifier); |
expect(identifier.isSynthetic, isTrue); |
} |
void test_createSyntheticStringLiteral() { |
- SimpleStringLiteral literal = _createSyntheticStringLiteral(); |
+ createParser(''); |
+ SimpleStringLiteral literal = parser.createSyntheticStringLiteral(); |
+ expectNotNullIfNoErrors(literal); |
expect(literal.isSynthetic, isTrue); |
} |
@@ -4322,25 +4684,36 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAdditiveExpression_normal() { |
- BinaryExpression expression = parse4("parseAdditiveExpression", "x + y"); |
- expect(expression.leftOperand, isNotNull); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.PLUS); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('x + y'); |
+ Expression expression = parser.parseAdditiveExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, isNotNull); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.PLUS); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseAdditiveExpression_super() { |
- BinaryExpression expression = |
- parse4("parseAdditiveExpression", "super + y"); |
- EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, |
- SuperExpression, expression.leftOperand); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.PLUS); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('super + y'); |
+ Expression expression = parser.parseAdditiveExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.PLUS); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseAnnotation_n1() { |
- Annotation annotation = parse4("parseAnnotation", "@A"); |
+ createParser('@A'); |
+ Annotation annotation = parser.parseAnnotation(); |
+ expectNotNullIfNoErrors(annotation); |
+ listener.assertNoErrors(); |
expect(annotation.atSign, isNotNull); |
expect(annotation.name, isNotNull); |
expect(annotation.period, isNull); |
@@ -4349,7 +4722,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAnnotation_n1_a() { |
- Annotation annotation = parse4("parseAnnotation", "@A(x,y)"); |
+ createParser('@A(x,y)'); |
+ Annotation annotation = parser.parseAnnotation(); |
+ expectNotNullIfNoErrors(annotation); |
+ listener.assertNoErrors(); |
expect(annotation.atSign, isNotNull); |
expect(annotation.name, isNotNull); |
expect(annotation.period, isNull); |
@@ -4358,7 +4734,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAnnotation_n2() { |
- Annotation annotation = parse4("parseAnnotation", "@A.B"); |
+ createParser('@A.B'); |
+ Annotation annotation = parser.parseAnnotation(); |
+ expectNotNullIfNoErrors(annotation); |
+ listener.assertNoErrors(); |
expect(annotation.atSign, isNotNull); |
expect(annotation.name, isNotNull); |
expect(annotation.period, isNull); |
@@ -4367,7 +4746,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAnnotation_n2_a() { |
- Annotation annotation = parse4("parseAnnotation", "@A.B(x,y)"); |
+ createParser('@A.B(x,y)'); |
+ Annotation annotation = parser.parseAnnotation(); |
+ expectNotNullIfNoErrors(annotation); |
+ listener.assertNoErrors(); |
expect(annotation.atSign, isNotNull); |
expect(annotation.name, isNotNull); |
expect(annotation.period, isNull); |
@@ -4376,7 +4758,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAnnotation_n3() { |
- Annotation annotation = parse4("parseAnnotation", "@A.B.C"); |
+ createParser('@A.B.C'); |
+ Annotation annotation = parser.parseAnnotation(); |
+ expectNotNullIfNoErrors(annotation); |
+ listener.assertNoErrors(); |
expect(annotation.atSign, isNotNull); |
expect(annotation.name, isNotNull); |
expect(annotation.period, isNotNull); |
@@ -4385,7 +4770,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAnnotation_n3_a() { |
- Annotation annotation = parse4("parseAnnotation", "@A.B.C(x,y)"); |
+ createParser('@A.B.C(x,y)'); |
+ Annotation annotation = parser.parseAnnotation(); |
+ expectNotNullIfNoErrors(annotation); |
+ listener.assertNoErrors(); |
expect(annotation.atSign, isNotNull); |
expect(annotation.name, isNotNull); |
expect(annotation.period, isNotNull); |
@@ -4394,53 +4782,80 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseArgument_named() { |
- NamedExpression expression = parse4("parseArgument", "n: x"); |
- Label name = expression.name; |
+ createParser('n: x'); |
+ Expression expression = parser.parseArgument(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<NamedExpression>()); |
+ NamedExpression namedExpression = expression; |
+ Label name = namedExpression.name; |
expect(name, isNotNull); |
expect(name.label, isNotNull); |
expect(name.colon, isNotNull); |
- expect(expression.expression, isNotNull); |
+ expect(namedExpression.expression, isNotNull); |
} |
void test_parseArgument_unnamed() { |
String lexeme = "x"; |
- SimpleIdentifier identifier = parse4("parseArgument", lexeme); |
+ createParser(lexeme); |
+ Expression expression = parser.parseArgument(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleIdentifier>()); |
+ SimpleIdentifier identifier = expression; |
expect(identifier.name, lexeme); |
} |
void test_parseArgumentList_empty() { |
- ArgumentList argumentList = parse4("parseArgumentList", "()"); |
+ createParser('()'); |
+ ArgumentList argumentList = parser.parseArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
NodeList<Expression> arguments = argumentList.arguments; |
expect(arguments, hasLength(0)); |
} |
void test_parseArgumentList_mixed() { |
- ArgumentList argumentList = |
- parse4("parseArgumentList", "(w, x, y: y, z: z)"); |
+ createParser('(w, x, y: y, z: z)'); |
+ ArgumentList argumentList = parser.parseArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
NodeList<Expression> arguments = argumentList.arguments; |
expect(arguments, hasLength(4)); |
} |
void test_parseArgumentList_noNamed() { |
- ArgumentList argumentList = parse4("parseArgumentList", "(x, y, z)"); |
+ createParser('(x, y, z)'); |
+ ArgumentList argumentList = parser.parseArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
NodeList<Expression> arguments = argumentList.arguments; |
expect(arguments, hasLength(3)); |
} |
void test_parseArgumentList_onlyNamed() { |
- ArgumentList argumentList = parse4("parseArgumentList", "(x: x, y: y)"); |
+ createParser('(x: x, y: y)'); |
+ ArgumentList argumentList = parser.parseArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
NodeList<Expression> arguments = argumentList.arguments; |
expect(arguments, hasLength(2)); |
} |
void test_parseArgumentList_trailing_comma() { |
- ArgumentList argumentList = parse4("parseArgumentList", "(x, y, z,)"); |
+ createParser('(x, y, z,)'); |
+ ArgumentList argumentList = parser.parseArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
NodeList<Expression> arguments = argumentList.arguments; |
expect(arguments, hasLength(3)); |
} |
void test_parseAssertStatement() { |
- AssertStatement statement = parse4("parseAssertStatement", "assert (x);"); |
+ createParser('assert (x);'); |
+ AssertStatement statement = parser.parseAssertStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.assertKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -4455,8 +4870,10 @@ class SimpleParserTest extends ParserTestCase { |
// practice, but it's the lowest precedence expression type, so verifying |
// that it works should give us high confidence that other expression types |
// will work as well. |
- AssertStatement statement = |
- parse4('parseAssertStatement', 'assert (x, throw "foo");'); |
+ createParser('assert (x, throw "foo");'); |
+ AssertStatement statement = parser.parseAssertStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.assertKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -4467,8 +4884,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAssertStatement_messageString() { |
- AssertStatement statement = |
- parse4('parseAssertStatement', 'assert (x, "foo");'); |
+ createParser('assert (x, "foo");'); |
+ AssertStatement statement = parser.parseAssertStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.assertKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -4670,7 +5089,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseAwaitExpression() { |
- AwaitExpression expression = parse4("parseAwaitExpression", "await x;"); |
+ createParser('await x;'); |
+ AwaitExpression expression = parser.parseAwaitExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.awaitKeyword, isNotNull); |
expect(expression.expression, isNotNull); |
} |
@@ -4705,90 +5127,130 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseBitwiseAndExpression_normal() { |
- BinaryExpression expression = parse4("parseBitwiseAndExpression", "x & y"); |
- expect(expression.leftOperand, isNotNull); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.AMPERSAND); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('x & y'); |
+ Expression expression = parser.parseBitwiseAndExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, isNotNull); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.AMPERSAND); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseBitwiseAndExpression_super() { |
- BinaryExpression expression = |
- parse4("parseBitwiseAndExpression", "super & y"); |
- EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, |
- SuperExpression, expression.leftOperand); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.AMPERSAND); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('super & y'); |
+ Expression expression = parser.parseBitwiseAndExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.AMPERSAND); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseBitwiseOrExpression_normal() { |
- BinaryExpression expression = parse4("parseBitwiseOrExpression", "x | y"); |
- expect(expression.leftOperand, isNotNull); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.BAR); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('x | y'); |
+ Expression expression = parser.parseBitwiseOrExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, isNotNull); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.BAR); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseBitwiseOrExpression_super() { |
- BinaryExpression expression = |
- parse4("parseBitwiseOrExpression", "super | y"); |
- EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, |
- SuperExpression, expression.leftOperand); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.BAR); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('super | y'); |
+ Expression expression = parser.parseBitwiseOrExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.BAR); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseBitwiseXorExpression_normal() { |
- BinaryExpression expression = parse4("parseBitwiseXorExpression", "x ^ y"); |
- expect(expression.leftOperand, isNotNull); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.CARET); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('x ^ y'); |
+ Expression expression = parser.parseBitwiseXorExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, isNotNull); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.CARET); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseBitwiseXorExpression_super() { |
- BinaryExpression expression = |
- parse4("parseBitwiseXorExpression", "super ^ y"); |
- EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, |
- SuperExpression, expression.leftOperand); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.CARET); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('super ^ y'); |
+ Expression expression = parser.parseBitwiseXorExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, new isInstanceOf<SuperExpression>()); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.CARET); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseBlock_empty() { |
- Block block = parse4("parseBlock", "{}"); |
+ createParser('{}'); |
+ Block block = parser.parseBlock(); |
+ expectNotNullIfNoErrors(block); |
+ listener.assertNoErrors(); |
expect(block.leftBracket, isNotNull); |
expect(block.statements, hasLength(0)); |
expect(block.rightBracket, isNotNull); |
} |
void test_parseBlock_nonEmpty() { |
- Block block = parse4("parseBlock", "{;}"); |
+ createParser('{;}'); |
+ Block block = parser.parseBlock(); |
+ expectNotNullIfNoErrors(block); |
+ listener.assertNoErrors(); |
expect(block.leftBracket, isNotNull); |
expect(block.statements, hasLength(1)); |
expect(block.rightBracket, isNotNull); |
} |
void test_parseBreakStatement_label() { |
- BreakStatement statement = parse4("parseBreakStatement", "break foo;"); |
+ createParser('break foo;'); |
+ BreakStatement statement = parser.parseBreakStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.breakKeyword, isNotNull); |
expect(statement.label, isNotNull); |
expect(statement.semicolon, isNotNull); |
} |
void test_parseBreakStatement_noLabel() { |
- BreakStatement statement = parse4("parseBreakStatement", "break;", |
- [ParserErrorCode.BREAK_OUTSIDE_OF_LOOP]); |
+ createParser('break;'); |
+ BreakStatement statement = parser.parseBreakStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.BREAK_OUTSIDE_OF_LOOP]); |
expect(statement.breakKeyword, isNotNull); |
expect(statement.label, isNull); |
expect(statement.semicolon, isNotNull); |
} |
void test_parseCascadeSection_i() { |
- IndexExpression section = parse4("parseCascadeSection", "..[i]"); |
+ createParser('..[i]'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<IndexExpression>()); |
+ IndexExpression section = expression; |
expect(section.target, isNull); |
expect(section.leftBracket, isNotNull); |
expect(section.index, isNotNull); |
@@ -4796,38 +5258,51 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCascadeSection_ia() { |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..[i](b)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is IndexExpression, IndexExpression, section.function); |
+ createParser('..[i](b)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<IndexExpression>()); |
expect(section.typeArguments, isNull); |
expect(section.argumentList, isNotNull); |
} |
void test_parseCascadeSection_ia_typeArgumentComments() { |
enableGenericMethodComments = true; |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..[i]/*<E>*/(b)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is IndexExpression, IndexExpression, section.function); |
+ createParser('..[i]/*<E>*/(b)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<IndexExpression>()); |
expect(section.typeArguments, isNotNull); |
expect(section.argumentList, isNotNull); |
} |
void test_parseCascadeSection_ia_typeArguments() { |
enableGenericMethods = true; |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..[i]<E>(b)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is IndexExpression, IndexExpression, section.function); |
+ createParser('..[i]<E>(b)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<IndexExpression>()); |
expect(section.typeArguments, isNotNull); |
expect(section.argumentList, isNotNull); |
} |
void test_parseCascadeSection_ii() { |
- MethodInvocation section = parse4("parseCascadeSection", "..a(b).c(d)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.target); |
+ createParser('..a(b).c(d)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MethodInvocation>()); |
+ MethodInvocation section = expression; |
+ expect(section.target, new isInstanceOf<MethodInvocation>()); |
expect(section.operator, isNotNull); |
expect(section.methodName, isNotNull); |
expect(section.typeArguments, isNull); |
@@ -4837,10 +5312,13 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_ii_typeArgumentComments() { |
enableGenericMethodComments = true; |
- MethodInvocation section = |
- parse4("parseCascadeSection", "..a/*<E>*/(b).c/*<F>*/(d)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.target); |
+ createParser('..a/*<E>*/(b).c/*<F>*/(d)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MethodInvocation>()); |
+ MethodInvocation section = expression; |
+ expect(section.target, new isInstanceOf<MethodInvocation>()); |
expect(section.operator, isNotNull); |
expect(section.methodName, isNotNull); |
expect(section.typeArguments, isNotNull); |
@@ -4850,10 +5328,13 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_ii_typeArguments() { |
enableGenericMethods = true; |
- MethodInvocation section = |
- parse4("parseCascadeSection", "..a<E>(b).c<F>(d)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.target); |
+ createParser('..a<E>(b).c<F>(d)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MethodInvocation>()); |
+ MethodInvocation section = expression; |
+ expect(section.target, new isInstanceOf<MethodInvocation>()); |
expect(section.operator, isNotNull); |
expect(section.methodName, isNotNull); |
expect(section.typeArguments, isNotNull); |
@@ -4862,14 +5343,24 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCascadeSection_p() { |
- PropertyAccess section = parse4("parseCascadeSection", "..a"); |
+ createParser('..a'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<PropertyAccess>()); |
+ PropertyAccess section = expression; |
expect(section.target, isNull); |
expect(section.operator, isNotNull); |
expect(section.propertyName, isNotNull); |
} |
void test_parseCascadeSection_p_assign() { |
- AssignmentExpression section = parse4("parseCascadeSection", "..a = 3"); |
+ createParser('..a = 3'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<AssignmentExpression>()); |
+ AssignmentExpression section = expression; |
expect(section.leftHandSide, isNotNull); |
expect(section.operator, isNotNull); |
Expression rhs = section.rightHandSide; |
@@ -4877,8 +5368,12 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCascadeSection_p_assign_withCascade() { |
- AssignmentExpression section = |
- parse4("parseCascadeSection", "..a = 3..m()"); |
+ createParser('..a = 3..m()'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<AssignmentExpression>()); |
+ AssignmentExpression section = expression; |
expect(section.leftHandSide, isNotNull); |
expect(section.operator, isNotNull); |
Expression rhs = section.rightHandSide; |
@@ -4888,8 +5383,12 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_p_assign_withCascade_typeArgumentComments() { |
enableGenericMethodComments = true; |
- AssignmentExpression section = |
- parse4("parseCascadeSection", "..a = 3..m/*<E>*/()"); |
+ createParser('..a = 3..m/*<E>*/()'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<AssignmentExpression>()); |
+ AssignmentExpression section = expression; |
expect(section.leftHandSide, isNotNull); |
expect(section.operator, isNotNull); |
Expression rhs = section.rightHandSide; |
@@ -4899,8 +5398,12 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_p_assign_withCascade_typeArguments() { |
enableGenericMethods = true; |
- AssignmentExpression section = |
- parse4("parseCascadeSection", "..a = 3..m<E>()"); |
+ createParser('..a = 3..m<E>()'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<AssignmentExpression>()); |
+ AssignmentExpression section = expression; |
expect(section.leftHandSide, isNotNull); |
expect(section.operator, isNotNull); |
Expression rhs = section.rightHandSide; |
@@ -4909,14 +5412,24 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCascadeSection_p_builtIn() { |
- PropertyAccess section = parse4("parseCascadeSection", "..as"); |
+ createParser('..as'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<PropertyAccess>()); |
+ PropertyAccess section = expression; |
expect(section.target, isNull); |
expect(section.operator, isNotNull); |
expect(section.propertyName, isNotNull); |
} |
void test_parseCascadeSection_pa() { |
- MethodInvocation section = parse4("parseCascadeSection", "..a(b)"); |
+ createParser('..a(b)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MethodInvocation>()); |
+ MethodInvocation section = expression; |
expect(section.target, isNull); |
expect(section.operator, isNotNull); |
expect(section.methodName, isNotNull); |
@@ -4927,7 +5440,12 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_pa_typeArgumentComments() { |
enableGenericMethodComments = true; |
- MethodInvocation section = parse4("parseCascadeSection", "..a/*<E>*/(b)"); |
+ createParser('..a/*<E>*/(b)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MethodInvocation>()); |
+ MethodInvocation section = expression; |
expect(section.target, isNull); |
expect(section.operator, isNotNull); |
expect(section.methodName, isNotNull); |
@@ -4938,7 +5456,12 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_pa_typeArguments() { |
enableGenericMethods = true; |
- MethodInvocation section = parse4("parseCascadeSection", "..a<E>(b)"); |
+ createParser('..a<E>(b)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MethodInvocation>()); |
+ MethodInvocation section = expression; |
expect(section.target, isNull); |
expect(section.operator, isNotNull); |
expect(section.methodName, isNotNull); |
@@ -4948,10 +5471,13 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCascadeSection_paa() { |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..a(b)(c)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.function); |
+ createParser('..a(b)(c)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<MethodInvocation>()); |
expect(section.typeArguments, isNull); |
expect(section.argumentList, isNotNull); |
expect(section.argumentList.arguments, hasLength(1)); |
@@ -4959,10 +5485,13 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_paa_typeArgumentComments() { |
enableGenericMethodComments = true; |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..a/*<E>*/(b)/*<F>*/(c)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.function); |
+ createParser('..a/*<E>*/(b)/*<F>*/(c)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<MethodInvocation>()); |
expect(section.typeArguments, isNotNull); |
expect(section.argumentList, isNotNull); |
expect(section.argumentList.arguments, hasLength(1)); |
@@ -4970,20 +5499,26 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_paa_typeArguments() { |
enableGenericMethods = true; |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..a<E>(b)<F>(c)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.function); |
+ createParser('..a<E>(b)<F>(c)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<MethodInvocation>()); |
expect(section.typeArguments, isNotNull); |
expect(section.argumentList, isNotNull); |
expect(section.argumentList.arguments, hasLength(1)); |
} |
void test_parseCascadeSection_paapaa() { |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..a(b)(c).d(e)(f)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.function); |
+ createParser('..a(b)(c).d(e)(f)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<MethodInvocation>()); |
expect(section.typeArguments, isNull); |
expect(section.argumentList, isNotNull); |
expect(section.argumentList.arguments, hasLength(1)); |
@@ -4991,10 +5526,13 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_paapaa_typeArgumentComments() { |
enableGenericMethodComments = true; |
- FunctionExpressionInvocation section = parse4( |
- "parseCascadeSection", "..a/*<E>*/(b)/*<F>*/(c).d/*<G>*/(e)/*<H>*/(f)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.function); |
+ createParser('..a/*<E>*/(b)/*<F>*/(c).d/*<G>*/(e)/*<H>*/(f)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<MethodInvocation>()); |
expect(section.typeArguments, isNotNull); |
expect(section.argumentList, isNotNull); |
expect(section.argumentList.arguments, hasLength(1)); |
@@ -5002,17 +5540,25 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_paapaa_typeArguments() { |
enableGenericMethods = true; |
- FunctionExpressionInvocation section = |
- parse4("parseCascadeSection", "..a<E>(b)<F>(c).d<G>(e)<H>(f)"); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is MethodInvocation, MethodInvocation, section.function); |
+ createParser('..a<E>(b)<F>(c).d<G>(e)<H>(f)'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpressionInvocation>()); |
+ FunctionExpressionInvocation section = expression; |
+ expect(section.function, new isInstanceOf<MethodInvocation>()); |
expect(section.typeArguments, isNotNull); |
expect(section.argumentList, isNotNull); |
expect(section.argumentList.arguments, hasLength(1)); |
} |
void test_parseCascadeSection_pap() { |
- PropertyAccess section = parse4("parseCascadeSection", "..a(b).c"); |
+ createParser('..a(b).c'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<PropertyAccess>()); |
+ PropertyAccess section = expression; |
expect(section.target, isNotNull); |
expect(section.operator, isNotNull); |
expect(section.propertyName, isNotNull); |
@@ -5020,7 +5566,12 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_pap_typeArgumentComments() { |
enableGenericMethodComments = true; |
- PropertyAccess section = parse4("parseCascadeSection", "..a/*<E>*/(b).c"); |
+ createParser('..a/*<E>*/(b).c'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<PropertyAccess>()); |
+ PropertyAccess section = expression; |
expect(section.target, isNotNull); |
expect(section.operator, isNotNull); |
expect(section.propertyName, isNotNull); |
@@ -5028,7 +5579,12 @@ class SimpleParserTest extends ParserTestCase { |
void test_parseCascadeSection_pap_typeArguments() { |
enableGenericMethods = true; |
- PropertyAccess section = parse4("parseCascadeSection", "..a<E>(b).c"); |
+ createParser('..a<E>(b).c'); |
+ Expression expression = parser.parseCascadeSection(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<PropertyAccess>()); |
+ PropertyAccess section = expression; |
expect(section.target, isNotNull); |
expect(section.operator, isNotNull); |
expect(section.propertyName, isNotNull); |
@@ -5762,22 +6318,32 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCombinator_hide() { |
- HideCombinator combinator = parse4('parseCombinator', 'hide a;'); |
+ createParser('hide a;'); |
+ Combinator combinator = parser.parseCombinator(); |
+ expectNotNullIfNoErrors(combinator); |
+ listener.assertNoErrors(); |
expect(combinator, new isInstanceOf<HideCombinator>()); |
- expect(combinator.keyword, isNotNull); |
- expect(combinator.hiddenNames, hasLength(1)); |
+ HideCombinator hideCombinator = combinator; |
+ expect(hideCombinator.keyword, isNotNull); |
+ expect(hideCombinator.hiddenNames, hasLength(1)); |
} |
void test_parseCombinator_show() { |
- ShowCombinator combinator = parse4('parseCombinator', 'show a;'); |
+ createParser('show a;'); |
+ Combinator combinator = parser.parseCombinator(); |
+ expectNotNullIfNoErrors(combinator); |
+ listener.assertNoErrors(); |
expect(combinator, new isInstanceOf<ShowCombinator>()); |
- expect(combinator.keyword, isNotNull); |
- expect(combinator.shownNames, hasLength(1)); |
+ ShowCombinator showCombinator = combinator; |
+ expect(showCombinator.keyword, isNotNull); |
+ expect(showCombinator.shownNames, hasLength(1)); |
} |
void test_parseCombinators_h() { |
- List<Combinator> combinators = |
- parse4("parseCombinators", "hide a;") as List<Combinator>; |
+ createParser('hide a;'); |
+ List<Combinator> combinators = parser.parseCombinators(); |
+ expectNotNullIfNoErrors(combinators); |
+ listener.assertNoErrors(); |
expect(combinators, hasLength(1)); |
HideCombinator combinator = combinators[0] as HideCombinator; |
expect(combinator, isNotNull); |
@@ -5786,8 +6352,10 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCombinators_hs() { |
- List<Combinator> combinators = |
- parse4("parseCombinators", "hide a show b;") as List<Combinator>; |
+ createParser('hide a show b;'); |
+ List<Combinator> combinators = parser.parseCombinators(); |
+ expectNotNullIfNoErrors(combinators); |
+ listener.assertNoErrors(); |
expect(combinators, hasLength(2)); |
HideCombinator hideCombinator = combinators[0] as HideCombinator; |
expect(hideCombinator, isNotNull); |
@@ -5800,15 +6368,18 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCombinators_hshs() { |
- List<Combinator> combinators = |
- parse4("parseCombinators", "hide a show b hide c show d;") |
- as List<Combinator>; |
+ createParser('hide a show b hide c show d;'); |
+ List<Combinator> combinators = parser.parseCombinators(); |
+ expectNotNullIfNoErrors(combinators); |
+ listener.assertNoErrors(); |
expect(combinators, hasLength(4)); |
} |
void test_parseCombinators_s() { |
- List<Combinator> combinators = |
- parse4("parseCombinators", "show a;") as List<Combinator>; |
+ createParser('show a;'); |
+ List<Combinator> combinators = parser.parseCombinators(); |
+ expectNotNullIfNoErrors(combinators); |
+ listener.assertNoErrors(); |
expect(combinators, hasLength(1)); |
ShowCombinator combinator = combinators[0] as ShowCombinator; |
expect(combinator, isNotNull); |
@@ -5817,75 +6388,94 @@ class SimpleParserTest extends ParserTestCase { |
} |
void test_parseCommentAndMetadata_c() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "/** 1 */ void"); |
+ createParser('/** 1 */ void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNotNull); |
expect(commentAndMetadata.metadata, isNull); |
} |
void test_parseCommentAndMetadata_cmc() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "/** 1 */ @A /** 2 */ void"); |
+ createParser('/** 1 */ @A /** 2 */ void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNotNull); |
expect(commentAndMetadata.metadata, hasLength(1)); |
} |
void test_parseCommentAndMetadata_cmcm() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "/** 1 */ @A /** 2 */ @B void"); |
+ createParser('/** 1 */ @A /** 2 */ @B void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNotNull); |
expect(commentAndMetadata.metadata, hasLength(2)); |
} |
void test_parseCommentAndMetadata_cmm() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "/** 1 */ @A @B void"); |
+ createParser('/** 1 */ @A @B void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNotNull); |
expect(commentAndMetadata.metadata, hasLength(2)); |
} |
void test_parseCommentAndMetadata_m() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "@A void"); |
+ createParser('@A void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNull); |
expect(commentAndMetadata.metadata, hasLength(1)); |
} |
void test_parseCommentAndMetadata_mcm() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "@A /** 1 */ @B void"); |
+ createParser('@A /** 1 */ @B void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNotNull); |
expect(commentAndMetadata.metadata, hasLength(2)); |
} |
void test_parseCommentAndMetadata_mcmc() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "@A /** 1 */ @B /** 2 */ void"); |
+ createParser('@A /** 1 */ @B /** 2 */ void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNotNull); |
expect(commentAndMetadata.metadata, hasLength(2)); |
} |
void test_parseCommentAndMetadata_mm() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "@A @B(x) void"); |
+ createParser('@A @B(x) void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNull); |
expect(commentAndMetadata.metadata, hasLength(2)); |
} |
void test_parseCommentAndMetadata_none() { |
- CommentAndMetadata commentAndMetadata = |
- parse4("parseCommentAndMetadata", "void"); |
+ createParser('void'); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNull); |
expect(commentAndMetadata.metadata, isNull); |
} |
void test_parseCommentAndMetadata_singleLine() { |
- CommentAndMetadata commentAndMetadata = parse4( |
- "parseCommentAndMetadata", |
- r''' |
+ createParser(r''' |
/// 1 |
/// 2 |
void'''); |
+ CommentAndMetadata commentAndMetadata = parser.parseCommentAndMetadata(); |
+ expectNotNullIfNoErrors(commentAndMetadata); |
+ listener.assertNoErrors(); |
expect(commentAndMetadata.comment, isNotNull); |
expect(commentAndMetadata.metadata, isNull); |
} |
@@ -6299,79 +6889,98 @@ void'''); |
} |
void test_parseCompilationUnit_abstractAsPrefix_parameterized() { |
- CompilationUnit unit = parse4("parseCompilationUnit", |
- "abstract<dynamic> _abstract = new abstract.A();"); |
+ createParser('abstract<dynamic> _abstract = new abstract.A();'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(1)); |
} |
void test_parseCompilationUnit_builtIn_asFunctionName() { |
- parse4("parseCompilationUnit", "abstract(x) => 0;"); |
- parse4("parseCompilationUnit", "as(x) => 0;"); |
- parse4("parseCompilationUnit", "dynamic(x) => 0;"); |
- parse4("parseCompilationUnit", "export(x) => 0;"); |
- parse4("parseCompilationUnit", "external(x) => 0;"); |
- parse4("parseCompilationUnit", "factory(x) => 0;"); |
- parse4("parseCompilationUnit", "get(x) => 0;"); |
- parse4("parseCompilationUnit", "implements(x) => 0;"); |
- parse4("parseCompilationUnit", "import(x) => 0;"); |
- parse4("parseCompilationUnit", "library(x) => 0;"); |
- parse4("parseCompilationUnit", "operator(x) => 0;"); |
- parse4("parseCompilationUnit", "part(x) => 0;"); |
- parse4("parseCompilationUnit", "set(x) => 0;"); |
- parse4("parseCompilationUnit", "static(x) => 0;"); |
- parse4("parseCompilationUnit", "typedef(x) => 0;"); |
+ ParserTestCase.parseCompilationUnit('abstract(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('as(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('dynamic(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('export(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('external(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('factory(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('get(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('implements(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('import(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('library(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('operator(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('part(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('set(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('static(x) => 0;'); |
+ ParserTestCase.parseCompilationUnit('typedef(x) => 0;'); |
} |
void test_parseCompilationUnit_directives_multiple() { |
- CompilationUnit unit = |
- parse4("parseCompilationUnit", "library l;\npart 'a.dart';"); |
+ createParser("library l;\npart 'a.dart';"); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(2)); |
expect(unit.declarations, hasLength(0)); |
} |
void test_parseCompilationUnit_directives_single() { |
- CompilationUnit unit = parse4("parseCompilationUnit", "library l;"); |
+ createParser('library l;'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(1)); |
expect(unit.declarations, hasLength(0)); |
} |
void test_parseCompilationUnit_empty() { |
- CompilationUnit unit = parse4("parseCompilationUnit", ""); |
+ createParser(''); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(0)); |
} |
void test_parseCompilationUnit_exportAsPrefix() { |
- CompilationUnit unit = |
- parse4("parseCompilationUnit", "export.A _export = new export.A();"); |
+ createParser('export.A _export = new export.A();'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(1)); |
} |
void test_parseCompilationUnit_exportAsPrefix_parameterized() { |
- CompilationUnit unit = parse4( |
- "parseCompilationUnit", "export<dynamic> _export = new export.A();"); |
+ createParser('export<dynamic> _export = new export.A();'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(1)); |
} |
void test_parseCompilationUnit_operatorAsPrefix_parameterized() { |
- CompilationUnit unit = parse4("parseCompilationUnit", |
- "operator<dynamic> _operator = new operator.A();"); |
+ createParser('operator<dynamic> _operator = new operator.A();'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(1)); |
} |
void test_parseCompilationUnit_script() { |
- CompilationUnit unit = parse4("parseCompilationUnit", "#! /bin/dart"); |
+ createParser('#! /bin/dart'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNotNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(0)); |
@@ -6379,21 +6988,29 @@ void'''); |
void test_parseCompilationUnit_skipFunctionBody_withInterpolation() { |
ParserTestCase.parseFunctionBodies = false; |
- CompilationUnit unit = parse4("parseCompilationUnit", "f() { '\${n}'; }"); |
+ createParser('f() { "\${n}"; }'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.declarations, hasLength(1)); |
} |
void test_parseCompilationUnit_topLevelDeclaration() { |
- CompilationUnit unit = parse4("parseCompilationUnit", "class A {}"); |
+ createParser('class A {}'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(1)); |
} |
void test_parseCompilationUnit_typedefAsPrefix() { |
- CompilationUnit unit = |
- parse4("parseCompilationUnit", "typedef.A _typedef = new typedef.A();"); |
+ createParser('typedef.A _typedef = new typedef.A();'); |
+ CompilationUnit unit = parser.parseCompilationUnit2(); |
+ expectNotNullIfNoErrors(unit); |
+ listener.assertNoErrors(); |
expect(unit.scriptTag, isNull); |
expect(unit.directives, hasLength(0)); |
expect(unit.declarations, hasLength(1)); |
@@ -6665,8 +7282,10 @@ void'''); |
} |
void test_parseConditionalExpression() { |
- ConditionalExpression expression = |
- parse4("parseConditionalExpression", "x ? y : z"); |
+ createParser('x ? y : z'); |
+ ConditionalExpression expression = parser.parseConditionalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.condition, isNotNull); |
expect(expression.question, isNotNull); |
expect(expression.thenExpression, isNotNull); |
@@ -6675,8 +7294,10 @@ void'''); |
} |
void test_parseConfiguration_noOperator_dottedIdentifier() { |
- Configuration configuration = |
- parse4('parseConfiguration', "if (a.b) 'c.dart'"); |
+ createParser("if (a.b) 'c.dart'"); |
+ Configuration configuration = parser.parseConfiguration(); |
+ expectNotNullIfNoErrors(configuration); |
+ listener.assertNoErrors(); |
expect(configuration.ifKeyword, isNotNull); |
expect(configuration.leftParenthesis, isNotNull); |
_expectDottedName(configuration.name, ["a", "b"]); |
@@ -6687,8 +7308,10 @@ void'''); |
} |
void test_parseConfiguration_noOperator_simpleIdentifier() { |
- Configuration configuration = |
- parse4('parseConfiguration', "if (a) 'b.dart'"); |
+ createParser("if (a) 'b.dart'"); |
+ Configuration configuration = parser.parseConfiguration(); |
+ expectNotNullIfNoErrors(configuration); |
+ listener.assertNoErrors(); |
expect(configuration.ifKeyword, isNotNull); |
expect(configuration.leftParenthesis, isNotNull); |
_expectDottedName(configuration.name, ["a"]); |
@@ -6699,8 +7322,10 @@ void'''); |
} |
void test_parseConfiguration_operator_dottedIdentifier() { |
- Configuration configuration = |
- parse4('parseConfiguration', "if (a.b == 'c') 'd.dart'"); |
+ createParser("if (a.b == 'c') 'd.dart'"); |
+ Configuration configuration = parser.parseConfiguration(); |
+ expectNotNullIfNoErrors(configuration); |
+ listener.assertNoErrors(); |
expect(configuration.ifKeyword, isNotNull); |
expect(configuration.leftParenthesis, isNotNull); |
_expectDottedName(configuration.name, ["a", "b"]); |
@@ -6711,8 +7336,10 @@ void'''); |
} |
void test_parseConfiguration_operator_simpleIdentifier() { |
- Configuration configuration = |
- parse4('parseConfiguration', "if (a == 'b') 'c.dart'"); |
+ createParser("if (a == 'b') 'c.dart'"); |
+ Configuration configuration = parser.parseConfiguration(); |
+ expectNotNullIfNoErrors(configuration); |
+ listener.assertNoErrors(); |
expect(configuration.ifKeyword, isNotNull); |
expect(configuration.leftParenthesis, isNotNull); |
_expectDottedName(configuration.name, ["a"]); |
@@ -6723,19 +7350,28 @@ void'''); |
} |
void test_parseConstExpression_instanceCreation() { |
- InstanceCreationExpression expression = |
- parse4("parseConstExpression", "const A()"); |
- expect(expression.keyword, isNotNull); |
- ConstructorName name = expression.constructorName; |
+ createParser('const A()'); |
+ Expression expression = parser.parseConstExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<InstanceCreationExpression>()); |
+ InstanceCreationExpression instanceCreation = expression; |
+ expect(instanceCreation.keyword, isNotNull); |
+ ConstructorName name = instanceCreation.constructorName; |
expect(name, isNotNull); |
expect(name.type, isNotNull); |
expect(name.period, isNull); |
expect(name.name, isNull); |
- expect(expression.argumentList, isNotNull); |
+ expect(instanceCreation.argumentList, isNotNull); |
} |
void test_parseConstExpression_listLiteral_typed() { |
- ListLiteral literal = parse4("parseConstExpression", "const <A> []"); |
+ createParser('const <A> []'); |
+ Expression expression = parser.parseConstExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ListLiteral>()); |
+ ListLiteral literal = expression; |
expect(literal.constKeyword, isNotNull); |
expect(literal.typeArguments, isNotNull); |
expect(literal.leftBracket, isNotNull); |
@@ -6745,7 +7381,12 @@ void'''); |
void test_parseConstExpression_listLiteral_typed_genericComment() { |
enableGenericMethodComments = true; |
- ListLiteral literal = parse4("parseConstExpression", "const /*<A>*/ []"); |
+ createParser('const /*<A>*/ []'); |
+ Expression expression = parser.parseConstExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ListLiteral>()); |
+ ListLiteral literal = expression; |
expect(literal.constKeyword, isNotNull); |
expect(literal.typeArguments, isNotNull); |
expect(literal.leftBracket, isNotNull); |
@@ -6754,7 +7395,12 @@ void'''); |
} |
void test_parseConstExpression_listLiteral_untyped() { |
- ListLiteral literal = parse4("parseConstExpression", "const []"); |
+ createParser('const []'); |
+ Expression expression = parser.parseConstExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ListLiteral>()); |
+ ListLiteral literal = expression; |
expect(literal.constKeyword, isNotNull); |
expect(literal.typeArguments, isNull); |
expect(literal.leftBracket, isNotNull); |
@@ -6763,7 +7409,12 @@ void'''); |
} |
void test_parseConstExpression_mapLiteral_typed() { |
- MapLiteral literal = parse4("parseConstExpression", "const <A, B> {}"); |
+ createParser('const <A, B> {}'); |
+ Expression expression = parser.parseConstExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MapLiteral>()); |
+ MapLiteral literal = expression; |
expect(literal.leftBracket, isNotNull); |
expect(literal.entries, hasLength(0)); |
expect(literal.rightBracket, isNotNull); |
@@ -6772,7 +7423,12 @@ void'''); |
void test_parseConstExpression_mapLiteral_typed_genericComment() { |
enableGenericMethodComments = true; |
- MapLiteral literal = parse4("parseConstExpression", "const /*<A, B>*/ {}"); |
+ createParser('const /*<A, B>*/ {}'); |
+ Expression expression = parser.parseConstExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MapLiteral>()); |
+ MapLiteral literal = expression; |
expect(literal.leftBracket, isNotNull); |
expect(literal.entries, hasLength(0)); |
expect(literal.rightBracket, isNotNull); |
@@ -6780,7 +7436,12 @@ void'''); |
} |
void test_parseConstExpression_mapLiteral_untyped() { |
- MapLiteral literal = parse4("parseConstExpression", "const {}"); |
+ createParser('const {}'); |
+ Expression expression = parser.parseConstExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MapLiteral>()); |
+ MapLiteral literal = expression; |
expect(literal.leftBracket, isNotNull); |
expect(literal.entries, hasLength(0)); |
expect(literal.rightBracket, isNotNull); |
@@ -6828,7 +7489,7 @@ void'''); |
void test_parseConstructorFieldInitializer_qualified() { |
ConstructorFieldInitializer invocation = |
- parse2("parseConstructorFieldInitializer", [true], "this.a = b"); |
+ parse("parseConstructorFieldInitializer", [true], "this.a = b"); |
expect(invocation.equals, isNotNull); |
expect(invocation.expression, isNotNull); |
expect(invocation.fieldName, isNotNull); |
@@ -6838,7 +7499,7 @@ void'''); |
void test_parseConstructorFieldInitializer_unqualified() { |
ConstructorFieldInitializer invocation = |
- parse2("parseConstructorFieldInitializer", [false], "a = b"); |
+ parse("parseConstructorFieldInitializer", [false], "a = b"); |
expect(invocation.equals, isNotNull); |
expect(invocation.expression, isNotNull); |
expect(invocation.fieldName, isNotNull); |
@@ -6847,44 +7508,60 @@ void'''); |
} |
void test_parseConstructorName_named_noPrefix() { |
- ConstructorName name = parse4("parseConstructorName", "A.n;"); |
+ createParser('A.n;'); |
+ ConstructorName name = parser.parseConstructorName(); |
+ expectNotNullIfNoErrors(name); |
+ listener.assertNoErrors(); |
expect(name.type, isNotNull); |
expect(name.period, isNull); |
expect(name.name, isNull); |
} |
void test_parseConstructorName_named_prefixed() { |
- ConstructorName name = parse4("parseConstructorName", "p.A.n;"); |
+ createParser('p.A.n;'); |
+ ConstructorName name = parser.parseConstructorName(); |
+ expectNotNullIfNoErrors(name); |
+ listener.assertNoErrors(); |
expect(name.type, isNotNull); |
expect(name.period, isNotNull); |
expect(name.name, isNotNull); |
} |
void test_parseConstructorName_unnamed_noPrefix() { |
- ConstructorName name = parse4("parseConstructorName", "A;"); |
+ createParser('A;'); |
+ ConstructorName name = parser.parseConstructorName(); |
+ expectNotNullIfNoErrors(name); |
+ listener.assertNoErrors(); |
expect(name.type, isNotNull); |
expect(name.period, isNull); |
expect(name.name, isNull); |
} |
void test_parseConstructorName_unnamed_prefixed() { |
- ConstructorName name = parse4("parseConstructorName", "p.A;"); |
+ createParser('p.A;'); |
+ ConstructorName name = parser.parseConstructorName(); |
+ expectNotNullIfNoErrors(name); |
+ listener.assertNoErrors(); |
expect(name.type, isNotNull); |
expect(name.period, isNull); |
expect(name.name, isNull); |
} |
void test_parseContinueStatement_label() { |
- ContinueStatement statement = parse4("parseContinueStatement", |
- "continue foo;", [ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]); |
+ createParser('continue foo;'); |
+ ContinueStatement statement = parser.parseContinueStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]); |
expect(statement.continueKeyword, isNotNull); |
expect(statement.label, isNotNull); |
expect(statement.semicolon, isNotNull); |
} |
void test_parseContinueStatement_noLabel() { |
- ContinueStatement statement = parse4("parseContinueStatement", "continue;", |
- [ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]); |
+ createParser('continue;'); |
+ ContinueStatement statement = parser.parseContinueStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]); |
expect(statement.continueKeyword, isNotNull); |
expect(statement.label, isNull); |
expect(statement.semicolon, isNotNull); |
@@ -6980,14 +7657,22 @@ void'''); |
} |
void test_parseDocumentationComment_block() { |
- Comment comment = parse4("parseDocumentationComment", "/** */ class"); |
+ createParser('/** */ class'); |
+ Comment comment = parser |
+ .parseDocumentationComment(parser.parseDocumentationCommentTokens()); |
+ expectNotNullIfNoErrors(comment); |
+ listener.assertNoErrors(); |
expect(comment.isBlock, isFalse); |
expect(comment.isDocumentation, isTrue); |
expect(comment.isEndOfLine, isFalse); |
} |
void test_parseDocumentationComment_block_withReference() { |
- Comment comment = parse4("parseDocumentationComment", "/** [a] */ class"); |
+ createParser('/** [a] */ class'); |
+ Comment comment = parser |
+ .parseDocumentationComment(parser.parseDocumentationCommentTokens()); |
+ expectNotNullIfNoErrors(comment); |
+ listener.assertNoErrors(); |
expect(comment.isBlock, isFalse); |
expect(comment.isDocumentation, isTrue); |
expect(comment.isEndOfLine, isFalse); |
@@ -6999,14 +7684,21 @@ void'''); |
} |
void test_parseDocumentationComment_endOfLine() { |
- Comment comment = parse4("parseDocumentationComment", "/// \n/// \n class"); |
+ createParser('/// \n/// \n class'); |
+ Comment comment = parser |
+ .parseDocumentationComment(parser.parseDocumentationCommentTokens()); |
+ expectNotNullIfNoErrors(comment); |
+ listener.assertNoErrors(); |
expect(comment.isBlock, isFalse); |
expect(comment.isDocumentation, isTrue); |
expect(comment.isEndOfLine, isFalse); |
} |
void test_parseDoStatement() { |
- DoStatement statement = parse4("parseDoStatement", "do {} while (x);"); |
+ createParser('do {} while (x);'); |
+ DoStatement statement = parser.parseDoStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.doKeyword, isNotNull); |
expect(statement.body, isNotNull); |
expect(statement.whileKeyword, isNotNull); |
@@ -7017,17 +7709,26 @@ void'''); |
} |
void test_parseDottedName_multiple() { |
- DottedName name = parse4("parseDottedName", "a.b.c"); |
+ createParser('a.b.c'); |
+ DottedName name = parser.parseDottedName(); |
+ expectNotNullIfNoErrors(name); |
+ listener.assertNoErrors(); |
_expectDottedName(name, ["a", "b", "c"]); |
} |
void test_parseDottedName_single() { |
- DottedName name = parse4("parseDottedName", "a"); |
+ createParser('a'); |
+ DottedName name = parser.parseDottedName(); |
+ expectNotNullIfNoErrors(name); |
+ listener.assertNoErrors(); |
_expectDottedName(name, ["a"]); |
} |
void test_parseEmptyStatement() { |
- EmptyStatement statement = parse4("parseEmptyStatement", ";"); |
+ createParser(';'); |
+ EmptyStatement statement = parser.parseEmptyStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.semicolon, isNotNull); |
} |
@@ -7567,397 +8268,488 @@ void'''); |
} |
void test_parseFormalParameterList_empty() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "()"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNull); |
- expect(parameterList.parameters, hasLength(0)); |
- expect(parameterList.rightDelimiter, isNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('()'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNull); |
+ expect(list.parameters, hasLength(0)); |
+ expect(list.rightDelimiter, isNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_named_multiple() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "({A a : 1, B b, C c : 3})"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(3)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('({A a : 1, B b, C c : 3})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(3)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_named_single() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "({A a})"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(1)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('({A a})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(1)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_named_trailing_comma() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(A a, {B b,})"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(2)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(A a, {B b,})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(2)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_normal_multiple() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(A a, B b, C c)"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNull); |
- expect(parameterList.parameters, hasLength(3)); |
- expect(parameterList.rightDelimiter, isNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(A a, B b, C c)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNull); |
+ expect(list.parameters, hasLength(3)); |
+ expect(list.rightDelimiter, isNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_normal_named() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(A a, {B b})"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(2)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(A a, {B b})'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(2)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_normal_positional() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(A a, [B b])"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(2)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(A a, [B b])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(2)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_normal_single() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(A a)"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNull); |
- expect(parameterList.parameters, hasLength(1)); |
- expect(parameterList.rightDelimiter, isNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(A a)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNull); |
+ expect(list.parameters, hasLength(1)); |
+ expect(list.rightDelimiter, isNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_normal_single_trailing_comma() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(A a,)"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNull); |
- expect(parameterList.parameters, hasLength(1)); |
- expect(parameterList.rightDelimiter, isNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(A a,)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNull); |
+ expect(list.parameters, hasLength(1)); |
+ expect(list.rightDelimiter, isNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_positional_multiple() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "([A a = null, B b, C c = null])"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(3)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('([A a = null, B b, C c = null])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(3)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_positional_single() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "([A a = null])"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(1)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('([A a = null])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(1)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_positional_trailing_comma() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(A a, [B b,])"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNotNull); |
- expect(parameterList.parameters, hasLength(2)); |
- expect(parameterList.rightDelimiter, isNotNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(A a, [B b,])'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNotNull); |
+ expect(list.parameters, hasLength(2)); |
+ expect(list.rightDelimiter, isNotNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_prefixedType() { |
- FormalParameterList parameterList = |
- parse4("parseFormalParameterList", "(io.File f)"); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNull); |
- expect(parameterList.parameters, hasLength(1)); |
- expect(parameterList.parameters[0].toSource(), 'io.File f'); |
- expect(parameterList.rightDelimiter, isNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ createParser('(io.File f)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertNoErrors(); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNull); |
+ expect(list.parameters, hasLength(1)); |
+ expect(list.parameters[0].toSource(), 'io.File f'); |
+ expect(list.rightDelimiter, isNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_prefixedType_partial() { |
- FormalParameterList parameterList = parse4( |
- "parseFormalParameterList", "(io.)", [ |
+ createParser('(io.)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ |
ParserErrorCode.MISSING_IDENTIFIER, |
ParserErrorCode.MISSING_IDENTIFIER |
]); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNull); |
- expect(parameterList.parameters, hasLength(1)); |
- expect(parameterList.parameters[0].toSource(), 'io. '); |
- expect(parameterList.rightDelimiter, isNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNull); |
+ expect(list.parameters, hasLength(1)); |
+ expect(list.parameters[0].toSource(), 'io. '); |
+ expect(list.rightDelimiter, isNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseFormalParameterList_prefixedType_partial2() { |
- FormalParameterList parameterList = parse4( |
- "parseFormalParameterList", "(io.,a)", [ |
+ createParser('(io.,a)'); |
+ FormalParameterList list = parser.parseFormalParameterList(); |
+ expectNotNullIfNoErrors(list); |
+ listener.assertErrorsWithCodes([ |
ParserErrorCode.MISSING_IDENTIFIER, |
ParserErrorCode.MISSING_IDENTIFIER |
]); |
- expect(parameterList.leftParenthesis, isNotNull); |
- expect(parameterList.leftDelimiter, isNull); |
- expect(parameterList.parameters, hasLength(2)); |
- expect(parameterList.parameters[0].toSource(), 'io. '); |
- expect(parameterList.parameters[1].toSource(), 'a'); |
- expect(parameterList.rightDelimiter, isNull); |
- expect(parameterList.rightParenthesis, isNotNull); |
+ expect(list.leftParenthesis, isNotNull); |
+ expect(list.leftDelimiter, isNull); |
+ expect(list.parameters, hasLength(2)); |
+ expect(list.parameters[0].toSource(), 'io. '); |
+ expect(list.parameters[1].toSource(), 'a'); |
+ expect(list.rightDelimiter, isNull); |
+ expect(list.rightParenthesis, isNotNull); |
} |
void test_parseForStatement_each_await() { |
- ForEachStatement statement = |
- parse4("parseForStatement", "await for (element in list) {}"); |
- expect(statement.awaitKeyword, isNotNull); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.loopVariable, isNull); |
- expect(statement.identifier, isNotNull); |
- expect(statement.inKeyword, isNotNull); |
- expect(statement.iterable, isNotNull); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('await for (element in list) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForEachStatement>()); |
+ ForEachStatement forStatement = statement; |
+ expect(forStatement.awaitKeyword, isNotNull); |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.loopVariable, isNull); |
+ expect(forStatement.identifier, isNotNull); |
+ expect(forStatement.inKeyword, isNotNull); |
+ expect(forStatement.iterable, isNotNull); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_each_identifier() { |
- ForEachStatement statement = |
- parse4("parseForStatement", "for (element in list) {}"); |
- expect(statement.awaitKeyword, isNull); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.loopVariable, isNull); |
- expect(statement.identifier, isNotNull); |
- expect(statement.inKeyword, isNotNull); |
- expect(statement.iterable, isNotNull); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (element in list) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForEachStatement>()); |
+ ForEachStatement forStatement = statement; |
+ expect(forStatement.awaitKeyword, isNull); |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.loopVariable, isNull); |
+ expect(forStatement.identifier, isNotNull); |
+ expect(forStatement.inKeyword, isNotNull); |
+ expect(forStatement.iterable, isNotNull); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_each_noType_metadata() { |
- ForEachStatement statement = |
- parse4("parseForStatement", "for (@A var element in list) {}"); |
- expect(statement.awaitKeyword, isNull); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.loopVariable, isNotNull); |
- expect(statement.loopVariable.metadata, hasLength(1)); |
- expect(statement.identifier, isNull); |
- expect(statement.inKeyword, isNotNull); |
- expect(statement.iterable, isNotNull); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (@A var element in list) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForEachStatement>()); |
+ ForEachStatement forStatement = statement; |
+ expect(forStatement.awaitKeyword, isNull); |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.loopVariable, isNotNull); |
+ expect(forStatement.loopVariable.metadata, hasLength(1)); |
+ expect(forStatement.identifier, isNull); |
+ expect(forStatement.inKeyword, isNotNull); |
+ expect(forStatement.iterable, isNotNull); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_each_type() { |
- ForEachStatement statement = |
- parse4("parseForStatement", "for (A element in list) {}"); |
- expect(statement.awaitKeyword, isNull); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.loopVariable, isNotNull); |
- expect(statement.identifier, isNull); |
- expect(statement.inKeyword, isNotNull); |
- expect(statement.iterable, isNotNull); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (A element in list) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForEachStatement>()); |
+ ForEachStatement forStatement = statement; |
+ expect(forStatement.awaitKeyword, isNull); |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.loopVariable, isNotNull); |
+ expect(forStatement.identifier, isNull); |
+ expect(forStatement.inKeyword, isNotNull); |
+ expect(forStatement.iterable, isNotNull); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_each_var() { |
- ForEachStatement statement = |
- parse4("parseForStatement", "for (var element in list) {}"); |
- expect(statement.awaitKeyword, isNull); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.loopVariable, isNotNull); |
- expect(statement.identifier, isNull); |
- expect(statement.inKeyword, isNotNull); |
- expect(statement.iterable, isNotNull); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (var element in list) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForEachStatement>()); |
+ ForEachStatement forStatement = statement; |
+ expect(forStatement.awaitKeyword, isNull); |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.loopVariable, isNotNull); |
+ expect(forStatement.identifier, isNull); |
+ expect(forStatement.inKeyword, isNotNull); |
+ expect(forStatement.iterable, isNotNull); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_c() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (; i < count;) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.variables, isNull); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNotNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(0)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (; i < count;) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.variables, isNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNotNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(0)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_cu() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (; i < count; i++) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.variables, isNull); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNotNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(1)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (; i < count; i++) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.variables, isNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNotNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(1)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_ecu() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (i--; i < count; i++) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.variables, isNull); |
- expect(statement.initialization, isNotNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNotNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(1)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (i--; i < count; i++) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.variables, isNull); |
+ expect(forStatement.initialization, isNotNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNotNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(1)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_i() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (var i = 0;;) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- VariableDeclarationList variables = statement.variables; |
+ createParser('for (var i = 0;;) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ VariableDeclarationList variables = forStatement.variables; |
expect(variables, isNotNull); |
expect(variables.metadata, hasLength(0)); |
expect(variables.variables, hasLength(1)); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(0)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(0)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_i_withMetadata() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (@A var i = 0;;) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- VariableDeclarationList variables = statement.variables; |
+ createParser('for (@A var i = 0;;) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ VariableDeclarationList variables = forStatement.variables; |
expect(variables, isNotNull); |
expect(variables.metadata, hasLength(1)); |
expect(variables.variables, hasLength(1)); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(0)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(0)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_ic() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (var i = 0; i < count;) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- VariableDeclarationList variables = statement.variables; |
+ createParser('for (var i = 0; i < count;) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ VariableDeclarationList variables = forStatement.variables; |
expect(variables, isNotNull); |
expect(variables.variables, hasLength(1)); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNotNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(0)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNotNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(0)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_icu() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (var i = 0; i < count; i++) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- VariableDeclarationList variables = statement.variables; |
+ createParser('for (var i = 0; i < count; i++) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ VariableDeclarationList variables = forStatement.variables; |
expect(variables, isNotNull); |
expect(variables.variables, hasLength(1)); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNotNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(1)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNotNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(1)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_iicuu() { |
- ForStatement statement = parse4( |
- "parseForStatement", "for (int i = 0, j = count; i < j; i++, j--) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- VariableDeclarationList variables = statement.variables; |
+ createParser('for (int i = 0, j = count; i < j; i++, j--) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ VariableDeclarationList variables = forStatement.variables; |
expect(variables, isNotNull); |
expect(variables.variables, hasLength(2)); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNotNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(2)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNotNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(2)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_iu() { |
- ForStatement statement = |
- parse4("parseForStatement", "for (var i = 0;; i++) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- VariableDeclarationList variables = statement.variables; |
+ createParser('for (var i = 0;; i++) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ VariableDeclarationList variables = forStatement.variables; |
expect(variables, isNotNull); |
expect(variables.variables, hasLength(1)); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(1)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(1)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseForStatement_loop_u() { |
- ForStatement statement = parse4("parseForStatement", "for (;; i++) {}"); |
- expect(statement.forKeyword, isNotNull); |
- expect(statement.leftParenthesis, isNotNull); |
- expect(statement.variables, isNull); |
- expect(statement.initialization, isNull); |
- expect(statement.leftSeparator, isNotNull); |
- expect(statement.condition, isNull); |
- expect(statement.rightSeparator, isNotNull); |
- expect(statement.updaters, hasLength(1)); |
- expect(statement.rightParenthesis, isNotNull); |
- expect(statement.body, isNotNull); |
+ createParser('for (;; i++) {}'); |
+ Statement statement = parser.parseForStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<ForStatement>()); |
+ ForStatement forStatement = statement; |
+ expect(forStatement.forKeyword, isNotNull); |
+ expect(forStatement.leftParenthesis, isNotNull); |
+ expect(forStatement.variables, isNull); |
+ expect(forStatement.initialization, isNull); |
+ expect(forStatement.leftSeparator, isNotNull); |
+ expect(forStatement.condition, isNull); |
+ expect(forStatement.rightSeparator, isNotNull); |
+ expect(forStatement.updaters, hasLength(1)); |
+ expect(forStatement.rightParenthesis, isNotNull); |
+ expect(forStatement.body, isNotNull); |
} |
void test_parseFunctionBody_block() { |
@@ -8056,10 +8848,11 @@ void'''); |
void test_parseFunctionBody_skip_block_invalid() { |
ParserTestCase.parseFunctionBodies = false; |
- FunctionBody functionBody = parse3("parseFunctionBody", |
- <Object>[false, null, false], "{", [ParserErrorCode.EXPECTED_TOKEN]); |
- EngineTestCase.assertInstanceOf( |
- (obj) => obj is EmptyFunctionBody, EmptyFunctionBody, functionBody); |
+ createParser('{'); |
+ FunctionBody functionBody = parser.parseFunctionBody(false, null, false); |
+ expectNotNullIfNoErrors(functionBody); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); |
+ expect(functionBody, new isInstanceOf<EmptyFunctionBody>()); |
} |
void test_parseFunctionBody_skip_blocks() { |
@@ -8272,7 +9065,10 @@ void'''); |
} |
void test_parseIfStatement_else_block() { |
- IfStatement statement = parse4("parseIfStatement", "if (x) {} else {}"); |
+ createParser('if (x) {} else {}'); |
+ IfStatement statement = parser.parseIfStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.ifKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -8283,8 +9079,10 @@ void'''); |
} |
void test_parseIfStatement_else_statement() { |
- IfStatement statement = |
- parse4("parseIfStatement", "if (x) f(x); else f(y);"); |
+ createParser('if (x) f(x); else f(y);'); |
+ IfStatement statement = parser.parseIfStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.ifKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -8295,7 +9093,10 @@ void'''); |
} |
void test_parseIfStatement_noElse_block() { |
- IfStatement statement = parse4("parseIfStatement", "if (x) {}"); |
+ createParser('if (x) {}'); |
+ IfStatement statement = parser.parseIfStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.ifKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -8306,7 +9107,10 @@ void'''); |
} |
void test_parseIfStatement_noElse_statement() { |
- IfStatement statement = parse4("parseIfStatement", "if (x) f(x);"); |
+ createParser('if (x) f(x);'); |
+ IfStatement statement = parser.parseIfStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.ifKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -9480,140 +10284,242 @@ void'''); |
} |
void test_parsePrimaryExpression_const() { |
- InstanceCreationExpression expression = |
- parse4("parsePrimaryExpression", "const A()"); |
+ createParser('const A()'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression, isNotNull); |
} |
void test_parsePrimaryExpression_double() { |
String doubleLiteral = "3.2e4"; |
- DoubleLiteral literal = parse4("parsePrimaryExpression", doubleLiteral); |
+ createParser(doubleLiteral); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<DoubleLiteral>()); |
+ DoubleLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, double.parse(doubleLiteral)); |
} |
void test_parsePrimaryExpression_false() { |
- BooleanLiteral literal = parse4("parsePrimaryExpression", "false"); |
+ createParser('false'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BooleanLiteral>()); |
+ BooleanLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, isFalse); |
} |
void test_parsePrimaryExpression_function_arguments() { |
- FunctionExpression expression = |
- parse4("parsePrimaryExpression", "(int i) => i + 1"); |
- expect(expression.parameters, isNotNull); |
- expect(expression.body, isNotNull); |
+ createParser('(int i) => i + 1'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpression>()); |
+ FunctionExpression functionExpression = expression; |
+ expect(functionExpression.parameters, isNotNull); |
+ expect(functionExpression.body, isNotNull); |
} |
void test_parsePrimaryExpression_function_noArguments() { |
- FunctionExpression expression = |
- parse4("parsePrimaryExpression", "() => 42"); |
- expect(expression.parameters, isNotNull); |
- expect(expression.body, isNotNull); |
+ createParser('() => 42'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<FunctionExpression>()); |
+ FunctionExpression functionExpression = expression; |
+ expect(functionExpression.parameters, isNotNull); |
+ expect(functionExpression.body, isNotNull); |
} |
void test_parsePrimaryExpression_hex() { |
String hexLiteral = "3F"; |
- IntegerLiteral literal = parse4("parsePrimaryExpression", "0x$hexLiteral"); |
+ createParser('0x$hexLiteral'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<IntegerLiteral>()); |
+ IntegerLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, int.parse(hexLiteral, radix: 16)); |
} |
void test_parsePrimaryExpression_identifier() { |
- SimpleIdentifier identifier = parse4("parsePrimaryExpression", "a"); |
+ createParser('a'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleIdentifier>()); |
+ SimpleIdentifier identifier = expression; |
expect(identifier, isNotNull); |
} |
void test_parsePrimaryExpression_int() { |
String intLiteral = "472"; |
- IntegerLiteral literal = parse4("parsePrimaryExpression", intLiteral); |
+ createParser(intLiteral); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<IntegerLiteral>()); |
+ IntegerLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, int.parse(intLiteral)); |
} |
void test_parsePrimaryExpression_listLiteral() { |
- ListLiteral literal = parse4("parsePrimaryExpression", "[ ]"); |
+ createParser('[ ]'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ListLiteral>()); |
+ ListLiteral literal = expression; |
expect(literal, isNotNull); |
} |
void test_parsePrimaryExpression_listLiteral_index() { |
- ListLiteral literal = parse4("parsePrimaryExpression", "[]"); |
+ createParser('[]'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ListLiteral>()); |
+ ListLiteral literal = expression; |
expect(literal, isNotNull); |
} |
void test_parsePrimaryExpression_listLiteral_typed() { |
- ListLiteral literal = parse4("parsePrimaryExpression", "<A>[ ]"); |
+ createParser('<A>[ ]'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ListLiteral>()); |
+ ListLiteral literal = expression; |
expect(literal.typeArguments, isNotNull); |
expect(literal.typeArguments.arguments, hasLength(1)); |
} |
void test_parsePrimaryExpression_listLiteral_typed_genericComment() { |
enableGenericMethodComments = true; |
- ListLiteral literal = parse4("parsePrimaryExpression", "/*<A>*/[ ]"); |
+ createParser('/*<A>*/[ ]'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ListLiteral>()); |
+ ListLiteral literal = expression; |
expect(literal.typeArguments, isNotNull); |
expect(literal.typeArguments.arguments, hasLength(1)); |
} |
void test_parsePrimaryExpression_mapLiteral() { |
- MapLiteral literal = parse4("parsePrimaryExpression", "{}"); |
+ createParser('{}'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MapLiteral>()); |
+ MapLiteral literal = expression; |
+ expect(literal.typeArguments, isNull); |
expect(literal, isNotNull); |
} |
void test_parsePrimaryExpression_mapLiteral_typed() { |
- MapLiteral literal = parse4("parsePrimaryExpression", "<A, B>{}"); |
+ createParser('<A, B>{}'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MapLiteral>()); |
+ MapLiteral literal = expression; |
expect(literal.typeArguments, isNotNull); |
expect(literal.typeArguments.arguments, hasLength(2)); |
} |
void test_parsePrimaryExpression_mapLiteral_typed_genericComment() { |
enableGenericMethodComments = true; |
- MapLiteral literal = parse4("parsePrimaryExpression", "/*<A, B>*/{}"); |
+ createParser('/*<A, B>*/{}'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<MapLiteral>()); |
+ MapLiteral literal = expression; |
expect(literal.typeArguments, isNotNull); |
expect(literal.typeArguments.arguments, hasLength(2)); |
} |
void test_parsePrimaryExpression_new() { |
- InstanceCreationExpression expression = |
- parse4("parsePrimaryExpression", "new A()"); |
- expect(expression, isNotNull); |
+ createParser('new A()'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<InstanceCreationExpression>()); |
+ InstanceCreationExpression creation = expression; |
+ expect(creation, isNotNull); |
} |
void test_parsePrimaryExpression_null() { |
- NullLiteral literal = parse4("parsePrimaryExpression", "null"); |
+ createParser('null'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<NullLiteral>()); |
+ NullLiteral literal = expression; |
expect(literal.literal, isNotNull); |
} |
void test_parsePrimaryExpression_parenthesized() { |
- ParenthesizedExpression expression = |
- parse4("parsePrimaryExpression", "(x)"); |
- expect(expression, isNotNull); |
+ createParser('(x)'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ParenthesizedExpression>()); |
+ ParenthesizedExpression parens = expression; |
+ expect(parens, isNotNull); |
} |
void test_parsePrimaryExpression_string() { |
- SimpleStringLiteral literal = |
- parse4("parsePrimaryExpression", "\"string\""); |
+ createParser('"string"'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.isMultiline, isFalse); |
expect(literal.isRaw, isFalse); |
expect(literal.value, "string"); |
} |
void test_parsePrimaryExpression_string_multiline() { |
- SimpleStringLiteral literal = |
- parse4("parsePrimaryExpression", "'''string'''"); |
+ createParser("'''string'''"); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.isMultiline, isTrue); |
expect(literal.isRaw, isFalse); |
expect(literal.value, "string"); |
} |
void test_parsePrimaryExpression_string_raw() { |
- SimpleStringLiteral literal = parse4("parsePrimaryExpression", "r'string'"); |
+ createParser("r'string'"); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.isMultiline, isFalse); |
expect(literal.isRaw, isTrue); |
expect(literal.value, "string"); |
} |
void test_parsePrimaryExpression_super() { |
- PropertyAccess propertyAccess = parse4("parsePrimaryExpression", "super.x"); |
+ createParser('super.x'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<PropertyAccess>()); |
+ PropertyAccess propertyAccess = expression; |
expect(propertyAccess.target is SuperExpression, isTrue); |
expect(propertyAccess.operator, isNotNull); |
expect(propertyAccess.operator.type, TokenType.PERIOD); |
@@ -9621,12 +10527,22 @@ void'''); |
} |
void test_parsePrimaryExpression_this() { |
- ThisExpression expression = parse4("parsePrimaryExpression", "this"); |
- expect(expression.thisKeyword, isNotNull); |
+ createParser('this'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ThisExpression>()); |
+ ThisExpression thisExpression = expression; |
+ expect(thisExpression.thisKeyword, isNotNull); |
} |
void test_parsePrimaryExpression_true() { |
- BooleanLiteral literal = parse4("parsePrimaryExpression", "true"); |
+ createParser('true'); |
+ Expression expression = parser.parsePrimaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BooleanLiteral>()); |
+ BooleanLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, isTrue); |
} |
@@ -9637,7 +10553,7 @@ void'''); |
void test_parseRedirectingConstructorInvocation_named() { |
RedirectingConstructorInvocation invocation = |
- parse2("parseRedirectingConstructorInvocation", [true], "this.a()"); |
+ parse("parseRedirectingConstructorInvocation", [true], "this.a()"); |
expect(invocation.argumentList, isNotNull); |
expect(invocation.constructorName, isNotNull); |
expect(invocation.thisKeyword, isNotNull); |
@@ -9646,7 +10562,7 @@ void'''); |
void test_parseRedirectingConstructorInvocation_unnamed() { |
RedirectingConstructorInvocation invocation = |
- parse2("parseRedirectingConstructorInvocation", [false], "this()"); |
+ parse("parseRedirectingConstructorInvocation", [false], "this()"); |
expect(invocation.argumentList, isNotNull); |
expect(invocation.constructorName, isNull); |
expect(invocation.thisKeyword, isNotNull); |
@@ -9654,72 +10570,111 @@ void'''); |
} |
void test_parseRelationalExpression_as() { |
- AsExpression expression = parse4("parseRelationalExpression", "x as Y"); |
- expect(expression.expression, isNotNull); |
- expect(expression.asOperator, isNotNull); |
- expect(expression.type, isNotNull); |
+ createParser('x as Y'); |
+ Expression expression = parser.parseRelationalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<AsExpression>()); |
+ AsExpression asExpression = expression; |
+ expect(asExpression.expression, isNotNull); |
+ expect(asExpression.asOperator, isNotNull); |
+ expect(asExpression.type, isNotNull); |
} |
void test_parseRelationalExpression_is() { |
- IsExpression expression = parse4("parseRelationalExpression", "x is y"); |
- expect(expression.expression, isNotNull); |
- expect(expression.isOperator, isNotNull); |
- expect(expression.notOperator, isNull); |
- expect(expression.type, isNotNull); |
+ createParser('x is y'); |
+ Expression expression = parser.parseRelationalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<IsExpression>()); |
+ IsExpression isExpression = expression; |
+ expect(isExpression.expression, isNotNull); |
+ expect(isExpression.isOperator, isNotNull); |
+ expect(isExpression.notOperator, isNull); |
+ expect(isExpression.type, isNotNull); |
} |
void test_parseRelationalExpression_isNot() { |
- IsExpression expression = parse4("parseRelationalExpression", "x is! y"); |
- expect(expression.expression, isNotNull); |
- expect(expression.isOperator, isNotNull); |
- expect(expression.notOperator, isNotNull); |
- expect(expression.type, isNotNull); |
+ createParser('x is! y'); |
+ Expression expression = parser.parseRelationalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<IsExpression>()); |
+ IsExpression isExpression = expression; |
+ expect(isExpression.expression, isNotNull); |
+ expect(isExpression.isOperator, isNotNull); |
+ expect(isExpression.notOperator, isNotNull); |
+ expect(isExpression.type, isNotNull); |
} |
void test_parseRelationalExpression_normal() { |
- BinaryExpression expression = parse4("parseRelationalExpression", "x < y"); |
- expect(expression.leftOperand, isNotNull); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.LT); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('x < y'); |
+ Expression expression = parser.parseRelationalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, isNotNull); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.LT); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseRelationalExpression_super() { |
- BinaryExpression expression = |
- parse4("parseRelationalExpression", "super < y"); |
- expect(expression.leftOperand, isNotNull); |
- expect(expression.operator, isNotNull); |
- expect(expression.operator.type, TokenType.LT); |
- expect(expression.rightOperand, isNotNull); |
+ createParser('super < y'); |
+ Expression expression = parser.parseRelationalExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<BinaryExpression>()); |
+ BinaryExpression binaryExpression = expression; |
+ expect(binaryExpression.leftOperand, isNotNull); |
+ expect(binaryExpression.operator, isNotNull); |
+ expect(binaryExpression.operator.type, TokenType.LT); |
+ expect(binaryExpression.rightOperand, isNotNull); |
} |
void test_parseRethrowExpression() { |
- RethrowExpression expression = parse4("parseRethrowExpression", "rethrow;"); |
+ createParser('rethrow;'); |
+ RethrowExpression expression = parser.parseRethrowExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.rethrowKeyword, isNotNull); |
} |
void test_parseReturnStatement_noValue() { |
- ReturnStatement statement = parse4("parseReturnStatement", "return;"); |
+ createParser('return;'); |
+ ReturnStatement statement = parser.parseReturnStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.returnKeyword, isNotNull); |
expect(statement.expression, isNull); |
expect(statement.semicolon, isNotNull); |
} |
void test_parseReturnStatement_value() { |
- ReturnStatement statement = parse4("parseReturnStatement", "return x;"); |
+ createParser('return x;'); |
+ ReturnStatement statement = parser.parseReturnStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.returnKeyword, isNotNull); |
expect(statement.expression, isNotNull); |
expect(statement.semicolon, isNotNull); |
} |
void test_parseReturnType_nonVoid() { |
- TypeName typeName = parse4("parseReturnType", "A<B>"); |
+ createParser('A<B>'); |
+ TypeName typeName = parser.parseReturnType(); |
+ expectNotNullIfNoErrors(typeName); |
+ listener.assertNoErrors(); |
expect(typeName.name, isNotNull); |
expect(typeName.typeArguments, isNotNull); |
} |
void test_parseReturnType_void() { |
- TypeName typeName = parse4("parseReturnType", "void"); |
+ createParser('void'); |
+ TypeName typeName = parser.parseReturnType(); |
+ expectNotNullIfNoErrors(typeName); |
+ listener.assertNoErrors(); |
expect(typeName.name, isNotNull); |
expect(typeName.typeArguments, isNull); |
} |
@@ -9764,7 +10719,10 @@ void'''); |
} |
void test_parseShiftExpression_normal() { |
- BinaryExpression expression = parse4("parseShiftExpression", "x << y"); |
+ createParser('x << y'); |
+ BinaryExpression expression = parser.parseShiftExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.leftOperand, isNotNull); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.LT_LT); |
@@ -9772,7 +10730,10 @@ void'''); |
} |
void test_parseShiftExpression_super() { |
- BinaryExpression expression = parse4("parseShiftExpression", "super << y"); |
+ createParser('super << y'); |
+ BinaryExpression expression = parser.parseShiftExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.leftOperand, isNotNull); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.LT_LT); |
@@ -9785,22 +10746,32 @@ void'''); |
void test_parseSimpleIdentifier_builtInIdentifier() { |
String lexeme = "as"; |
- SimpleIdentifier identifier = parse4("parseSimpleIdentifier", lexeme); |
+ createParser(lexeme); |
+ SimpleIdentifier identifier = parser.parseSimpleIdentifier(); |
+ expectNotNullIfNoErrors(identifier); |
+ listener.assertNoErrors(); |
expect(identifier.token, isNotNull); |
expect(identifier.name, lexeme); |
} |
void test_parseSimpleIdentifier_normalIdentifier() { |
String lexeme = "foo"; |
- SimpleIdentifier identifier = parse4("parseSimpleIdentifier", lexeme); |
+ createParser(lexeme); |
+ SimpleIdentifier identifier = parser.parseSimpleIdentifier(); |
+ expectNotNullIfNoErrors(identifier); |
+ listener.assertNoErrors(); |
expect(identifier.token, isNotNull); |
expect(identifier.name, lexeme); |
} |
void test_parseStatement_emptyTypeArgumentList() { |
- VariableDeclarationStatement statement = parse4( |
- "parseStatement", "C<> c;", [ParserErrorCode.EXPECTED_TYPE_NAME]); |
- VariableDeclarationList variables = statement.variables; |
+ createParser('C<> c;'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TYPE_NAME]); |
+ expect(statement, new isInstanceOf<VariableDeclarationStatement>()); |
+ VariableDeclarationStatement declaration = statement; |
+ VariableDeclarationList variables = declaration.variables; |
TypeName type = variables.type; |
TypeArgumentList argumentList = type.typeArguments; |
expect(argumentList.leftBracket, isNotNull); |
@@ -9810,50 +10781,79 @@ void'''); |
} |
void test_parseStatement_functionDeclaration_noReturnType() { |
- FunctionDeclarationStatement statement = |
- parse4("parseStatement", "f(a, b) {};"); |
- expect(statement.functionDeclaration, isNotNull); |
+ createParser('f(a, b) {};'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<FunctionDeclarationStatement>()); |
+ FunctionDeclarationStatement declaration = statement; |
+ expect(declaration.functionDeclaration, isNotNull); |
} |
void |
test_parseStatement_functionDeclaration_noReturnType_typeParameterComments() { |
enableGenericMethodComments = true; |
- FunctionDeclarationStatement statement = |
- parse4("parseStatement", "f/*<E>*/(a, b) {};"); |
- expect(statement.functionDeclaration, isNotNull); |
- expect(statement.functionDeclaration.functionExpression.typeParameters, |
+ createParser('f/*<E>*/(a, b) {};'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<FunctionDeclarationStatement>()); |
+ FunctionDeclarationStatement declaration = statement; |
+ expect(declaration.functionDeclaration, isNotNull); |
+ expect(declaration.functionDeclaration.functionExpression.typeParameters, |
isNotNull); |
} |
void test_parseStatement_functionDeclaration_returnType() { |
// TODO(brianwilkerson) Implement more tests for this method. |
- FunctionDeclarationStatement statement = |
- parse4("parseStatement", "int f(a, b) {};", []); |
- expect(statement.functionDeclaration, isNotNull); |
+ createParser('int f(a, b) {};'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<FunctionDeclarationStatement>()); |
+ FunctionDeclarationStatement declaration = statement; |
+ expect(declaration.functionDeclaration, isNotNull); |
} |
void test_parseStatement_functionDeclaration_returnType_typeParameters() { |
enableGenericMethods = true; |
- FunctionDeclarationStatement statement = |
- parse4("parseStatement", "int f<E>(a, b) {};"); |
- expect(statement.functionDeclaration, isNotNull); |
+ createParser('int f<E>(a, b) {};'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<FunctionDeclarationStatement>()); |
+ FunctionDeclarationStatement declaration = statement; |
+ expect(declaration.functionDeclaration, isNotNull); |
} |
void test_parseStatement_mulipleLabels() { |
- LabeledStatement statement = parse4("parseStatement", "l: m: return x;"); |
- expect(statement.labels, hasLength(2)); |
- expect(statement.statement, isNotNull); |
+ createParser('l: m: return x;'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<LabeledStatement>()); |
+ LabeledStatement labeledStatement = statement; |
+ expect(labeledStatement.labels, hasLength(2)); |
+ expect(labeledStatement.statement, isNotNull); |
} |
void test_parseStatement_noLabels() { |
- parse4("parseStatement", "return x;"); |
+ createParser('return x;'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
} |
void test_parseStatement_singleLabel() { |
- LabeledStatement statement = parse4("parseStatement", "l: return x;"); |
- expect(statement.labels, hasLength(1)); |
- expect(statement.labels[0].label.inDeclarationContext(), isTrue); |
- expect(statement.statement, isNotNull); |
+ createParser('l: return x;'); |
+ Statement statement = parser.parseStatement2(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
+ expect(statement, new isInstanceOf<LabeledStatement>()); |
+ LabeledStatement labeledStatement = statement; |
+ expect(labeledStatement.labels, hasLength(1)); |
+ expect(labeledStatement.labels[0].label.inDeclarationContext(), isTrue); |
+ expect(labeledStatement.statement, isNotNull); |
} |
void test_parseStatements_multiple() { |
@@ -9868,7 +10868,12 @@ void'''); |
} |
void test_parseStringLiteral_adjacent() { |
- AdjacentStrings literal = parse4("parseStringLiteral", "'a' 'b'"); |
+ createParser("'a' 'b'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<AdjacentStrings>()); |
+ AdjacentStrings literal = expression; |
NodeList<StringLiteral> strings = literal.strings; |
expect(strings, hasLength(2)); |
StringLiteral firstString = strings[0]; |
@@ -9878,9 +10883,12 @@ void'''); |
} |
void test_parseStringLiteral_endsWithInterpolation() { |
- StringLiteral literal = parse4('parseStringLiteral', r"'x$y'"); |
- expect(literal, new isInstanceOf<StringInterpolation>()); |
- StringInterpolation interpolation = literal; |
+ createParser(r"'x$y'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<StringInterpolation>()); |
+ StringInterpolation interpolation = expression; |
expect(interpolation.elements, hasLength(3)); |
expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); |
InterpolationString element0 = interpolation.elements[0]; |
@@ -9895,8 +10903,12 @@ void'''); |
} |
void test_parseStringLiteral_interpolated() { |
- StringInterpolation literal = |
- parse4("parseStringLiteral", "'a \${b} c \$this d'"); |
+ createParser("'a \${b} c \$this d'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<StringInterpolation>()); |
+ StringInterpolation literal = expression; |
NodeList<InterpolationElement> elements = literal.elements; |
expect(elements, hasLength(5)); |
expect(elements[0] is InterpolationString, isTrue); |
@@ -9907,16 +10919,23 @@ void'''); |
} |
void test_parseStringLiteral_multiline_encodedSpace() { |
- SimpleStringLiteral literal = |
- parse4("parseStringLiteral", "'''\\x20\na'''"); |
+ createParser("'''\\x20\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, " \na"); |
} |
void test_parseStringLiteral_multiline_endsWithInterpolation() { |
- StringLiteral literal = parse4('parseStringLiteral', r"'''x$y'''"); |
- expect(literal, new isInstanceOf<StringInterpolation>()); |
- StringInterpolation interpolation = literal; |
+ createParser(r"'''x$y'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<StringInterpolation>()); |
+ StringInterpolation interpolation = expression; |
expect(interpolation.elements, hasLength(3)); |
expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); |
InterpolationString element0 = interpolation.elements[0]; |
@@ -9931,60 +10950,100 @@ void'''); |
} |
void test_parseStringLiteral_multiline_escapedBackslash() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "'''\\\\\na'''"); |
+ createParser("'''\\\\\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "\\\na"); |
} |
void test_parseStringLiteral_multiline_escapedBackslash_raw() { |
- SimpleStringLiteral literal = |
- parse4("parseStringLiteral", "r'''\\\\\na'''"); |
+ createParser("r'''\\\\\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "\\\\\na"); |
} |
void test_parseStringLiteral_multiline_escapedEolMarker() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "'''\\\na'''"); |
+ createParser("'''\\\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "a"); |
} |
void test_parseStringLiteral_multiline_escapedEolMarker_raw() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "r'''\\\na'''"); |
+ createParser("r'''\\\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "a"); |
} |
void test_parseStringLiteral_multiline_escapedSpaceAndEolMarker() { |
- SimpleStringLiteral literal = |
- parse4("parseStringLiteral", "'''\\ \\\na'''"); |
+ createParser("'''\\ \\\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "a"); |
} |
void test_parseStringLiteral_multiline_escapedSpaceAndEolMarker_raw() { |
- SimpleStringLiteral literal = |
- parse4("parseStringLiteral", "r'''\\ \\\na'''"); |
+ createParser("r'''\\ \\\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "a"); |
} |
void test_parseStringLiteral_multiline_escapedTab() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "'''\\t\na'''"); |
+ createParser("'''\\t\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "\t\na"); |
} |
void test_parseStringLiteral_multiline_escapedTab_raw() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "r'''\\t\na'''"); |
+ createParser("r'''\\t\na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "\\t\na"); |
} |
void test_parseStringLiteral_multiline_quoteAfterInterpolation() { |
- StringLiteral literal = parse4('parseStringLiteral', r"""'''$x'y'''"""); |
- expect(literal, new isInstanceOf<StringInterpolation>()); |
- StringInterpolation interpolation = literal; |
+ createParser(r"""'''$x'y'''"""); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<StringInterpolation>()); |
+ StringInterpolation interpolation = expression; |
expect(interpolation.elements, hasLength(3)); |
expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); |
InterpolationString element0 = interpolation.elements[0]; |
@@ -9999,9 +11058,12 @@ void'''); |
} |
void test_parseStringLiteral_multiline_startsWithInterpolation() { |
- StringLiteral literal = parse4('parseStringLiteral', r"'''${x}y'''"); |
- expect(literal, new isInstanceOf<StringInterpolation>()); |
- StringInterpolation interpolation = literal; |
+ createParser(r"'''${x}y'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<StringInterpolation>()); |
+ StringInterpolation interpolation = expression; |
expect(interpolation.elements, hasLength(3)); |
expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); |
InterpolationString element0 = interpolation.elements[0]; |
@@ -10016,27 +11078,45 @@ void'''); |
} |
void test_parseStringLiteral_multiline_twoSpaces() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "''' \na'''"); |
+ createParser("''' \na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "a"); |
} |
void test_parseStringLiteral_multiline_twoSpaces_raw() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "r''' \na'''"); |
+ createParser("r''' \na'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "a"); |
} |
void test_parseStringLiteral_multiline_untrimmed() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "''' a\nb'''"); |
+ createParser("''' a\nb'''"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, " a\nb"); |
} |
void test_parseStringLiteral_quoteAfterInterpolation() { |
- StringLiteral literal = parse4('parseStringLiteral', r"""'$x"'"""); |
- expect(literal, new isInstanceOf<StringInterpolation>()); |
- StringInterpolation interpolation = literal; |
+ createParser(r"""'$x"'"""); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<StringInterpolation>()); |
+ StringInterpolation interpolation = expression; |
expect(interpolation.elements, hasLength(3)); |
expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); |
InterpolationString element0 = interpolation.elements[0]; |
@@ -10051,15 +11131,23 @@ void'''); |
} |
void test_parseStringLiteral_single() { |
- SimpleStringLiteral literal = parse4("parseStringLiteral", "'a'"); |
+ createParser("'a'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<SimpleStringLiteral>()); |
+ SimpleStringLiteral literal = expression; |
expect(literal.literal, isNotNull); |
expect(literal.value, "a"); |
} |
void test_parseStringLiteral_startsWithInterpolation() { |
- StringLiteral literal = parse4('parseStringLiteral', r"'${x}y'"); |
- expect(literal, new isInstanceOf<StringInterpolation>()); |
- StringInterpolation interpolation = literal; |
+ createParser(r"'${x}y'"); |
+ Expression expression = parser.parseStringLiteral(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<StringInterpolation>()); |
+ StringInterpolation interpolation = expression; |
expect(interpolation.elements, hasLength(3)); |
expect(interpolation.elements[0], new isInstanceOf<InterpolationString>()); |
InterpolationString element0 = interpolation.elements[0]; |
@@ -10074,8 +11162,11 @@ void'''); |
} |
void test_parseSuperConstructorInvocation_named() { |
+ createParser('super.a()'); |
SuperConstructorInvocation invocation = |
- parse4("parseSuperConstructorInvocation", "super.a()"); |
+ parser.parseSuperConstructorInvocation(); |
+ expectNotNullIfNoErrors(invocation); |
+ listener.assertNoErrors(); |
expect(invocation.argumentList, isNotNull); |
expect(invocation.constructorName, isNotNull); |
expect(invocation.superKeyword, isNotNull); |
@@ -10083,8 +11174,11 @@ void'''); |
} |
void test_parseSuperConstructorInvocation_unnamed() { |
+ createParser('super()'); |
SuperConstructorInvocation invocation = |
- parse4("parseSuperConstructorInvocation", "super()"); |
+ parser.parseSuperConstructorInvocation(); |
+ expectNotNullIfNoErrors(invocation); |
+ listener.assertNoErrors(); |
expect(invocation.argumentList, isNotNull); |
expect(invocation.constructorName, isNull); |
expect(invocation.superKeyword, isNotNull); |
@@ -10092,8 +11186,10 @@ void'''); |
} |
void test_parseSwitchStatement_case() { |
- SwitchStatement statement = |
- parse4("parseSwitchStatement", "switch (a) {case 1: return 'I';}"); |
+ createParser('switch (a) {case 1: return "I";}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.switchKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.expression, isNotNull); |
@@ -10104,7 +11200,10 @@ void'''); |
} |
void test_parseSwitchStatement_empty() { |
- SwitchStatement statement = parse4("parseSwitchStatement", "switch (a) {}"); |
+ createParser('switch (a) {}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.switchKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.expression, isNotNull); |
@@ -10115,8 +11214,10 @@ void'''); |
} |
void test_parseSwitchStatement_labeledCase() { |
- SwitchStatement statement = |
- parse4("parseSwitchStatement", "switch (a) {l1: l2: l3: case(1):}"); |
+ createParser('switch (a) {l1: l2: l3: case(1):}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.switchKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.expression, isNotNull); |
@@ -10134,8 +11235,10 @@ void'''); |
} |
void test_parseSwitchStatement_labeledDefault() { |
- SwitchStatement statement = |
- parse4("parseSwitchStatement", "switch (a) {l1: l2: l3: default:}"); |
+ createParser('switch (a) {l1: l2: l3: default:}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.switchKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.expression, isNotNull); |
@@ -10153,8 +11256,10 @@ void'''); |
} |
void test_parseSwitchStatement_labeledStatementInCase() { |
- SwitchStatement statement = parse4( |
- "parseSwitchStatement", "switch (a) {case 0: f(); l1: g(); break;}"); |
+ createParser('switch (a) {case 0: f(); l1: g(); break;}'); |
+ SwitchStatement statement = parser.parseSwitchStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.switchKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.expression, isNotNull); |
@@ -10166,8 +11271,10 @@ void'''); |
} |
void test_parseSymbolLiteral_builtInIdentifier() { |
- SymbolLiteral literal = |
- parse4("parseSymbolLiteral", "#dynamic.static.abstract"); |
+ createParser('#dynamic.static.abstract'); |
+ SymbolLiteral literal = parser.parseSymbolLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertNoErrors(); |
expect(literal.poundSign, isNotNull); |
List<Token> components = literal.components; |
expect(components, hasLength(3)); |
@@ -10177,7 +11284,10 @@ void'''); |
} |
void test_parseSymbolLiteral_multiple() { |
- SymbolLiteral literal = parse4("parseSymbolLiteral", "#a.b.c"); |
+ createParser('#a.b.c'); |
+ SymbolLiteral literal = parser.parseSymbolLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertNoErrors(); |
expect(literal.poundSign, isNotNull); |
List<Token> components = literal.components; |
expect(components, hasLength(3)); |
@@ -10187,7 +11297,10 @@ void'''); |
} |
void test_parseSymbolLiteral_operator() { |
- SymbolLiteral literal = parse4("parseSymbolLiteral", "#=="); |
+ createParser('#=='); |
+ SymbolLiteral literal = parser.parseSymbolLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertNoErrors(); |
expect(literal.poundSign, isNotNull); |
List<Token> components = literal.components; |
expect(components, hasLength(1)); |
@@ -10195,7 +11308,10 @@ void'''); |
} |
void test_parseSymbolLiteral_single() { |
- SymbolLiteral literal = parse4("parseSymbolLiteral", "#a"); |
+ createParser('#a'); |
+ SymbolLiteral literal = parser.parseSymbolLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertNoErrors(); |
expect(literal.poundSign, isNotNull); |
List<Token> components = literal.components; |
expect(components, hasLength(1)); |
@@ -10203,7 +11319,10 @@ void'''); |
} |
void test_parseSymbolLiteral_void() { |
- SymbolLiteral literal = parse4("parseSymbolLiteral", "#void"); |
+ createParser('#void'); |
+ SymbolLiteral literal = parser.parseSymbolLiteral(); |
+ expectNotNullIfNoErrors(literal); |
+ listener.assertNoErrors(); |
expect(literal.poundSign, isNotNull); |
List<Token> components = literal.components; |
expect(components, hasLength(1)); |
@@ -10211,20 +11330,32 @@ void'''); |
} |
void test_parseThrowExpression() { |
- ThrowExpression expression = parse4("parseThrowExpression", "throw x;"); |
- expect(expression.throwKeyword, isNotNull); |
- expect(expression.expression, isNotNull); |
+ createParser('throw x;'); |
+ Expression expression = parser.parseThrowExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ThrowExpression>()); |
+ ThrowExpression throwExpression = expression; |
+ expect(throwExpression.throwKeyword, isNotNull); |
+ expect(throwExpression.expression, isNotNull); |
} |
void test_parseThrowExpressionWithoutCascade() { |
- ThrowExpression expression = |
- parse4("parseThrowExpressionWithoutCascade", "throw x;"); |
- expect(expression.throwKeyword, isNotNull); |
- expect(expression.expression, isNotNull); |
+ createParser('throw x;'); |
+ Expression expression = parser.parseThrowExpressionWithoutCascade(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
+ expect(expression, new isInstanceOf<ThrowExpression>()); |
+ ThrowExpression throwExpression = expression; |
+ expect(throwExpression.throwKeyword, isNotNull); |
+ expect(throwExpression.expression, isNotNull); |
} |
void test_parseTryStatement_catch() { |
- TryStatement statement = parse4("parseTryStatement", "try {} catch (e) {}"); |
+ createParser('try {} catch (e) {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.tryKeyword, isNotNull); |
expect(statement.body, isNotNull); |
NodeList<CatchClause> catchClauses = statement.catchClauses; |
@@ -10242,8 +11373,10 @@ void'''); |
} |
void test_parseTryStatement_catch_finally() { |
- TryStatement statement = |
- parse4("parseTryStatement", "try {} catch (e, s) {} finally {}"); |
+ createParser('try {} catch (e, s) {} finally {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.tryKeyword, isNotNull); |
expect(statement.body, isNotNull); |
NodeList<CatchClause> catchClauses = statement.catchClauses; |
@@ -10261,7 +11394,10 @@ void'''); |
} |
void test_parseTryStatement_finally() { |
- TryStatement statement = parse4("parseTryStatement", "try {} finally {}"); |
+ createParser('try {} finally {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.tryKeyword, isNotNull); |
expect(statement.body, isNotNull); |
expect(statement.catchClauses, hasLength(0)); |
@@ -10270,8 +11406,10 @@ void'''); |
} |
void test_parseTryStatement_multiple() { |
- TryStatement statement = parse4("parseTryStatement", |
- "try {} on NPE catch (e) {} on Error {} catch (e) {}"); |
+ createParser('try {} on NPE catch (e) {} on Error {} catch (e) {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.tryKeyword, isNotNull); |
expect(statement.body, isNotNull); |
expect(statement.catchClauses, hasLength(3)); |
@@ -10280,7 +11418,10 @@ void'''); |
} |
void test_parseTryStatement_on() { |
- TryStatement statement = parse4("parseTryStatement", "try {} on Error {}"); |
+ createParser('try {} on Error {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.tryKeyword, isNotNull); |
expect(statement.body, isNotNull); |
NodeList<CatchClause> catchClauses = statement.catchClauses; |
@@ -10298,8 +11439,10 @@ void'''); |
} |
void test_parseTryStatement_on_catch() { |
- TryStatement statement = |
- parse4("parseTryStatement", "try {} on Error catch (e, s) {}"); |
+ createParser('try {} on Error catch (e, s) {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.tryKeyword, isNotNull); |
expect(statement.body, isNotNull); |
NodeList<CatchClause> catchClauses = statement.catchClauses; |
@@ -10317,8 +11460,10 @@ void'''); |
} |
void test_parseTryStatement_on_catch_finally() { |
- TryStatement statement = parse4( |
- "parseTryStatement", "try {} on Error catch (e, s) {} finally {}"); |
+ createParser('try {} on Error catch (e, s) {} finally {}'); |
+ TryStatement statement = parser.parseTryStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.tryKeyword, isNotNull); |
expect(statement.body, isNotNull); |
NodeList<CatchClause> catchClauses = statement.catchClauses; |
@@ -10402,23 +11547,30 @@ void'''); |
} |
void test_parseTypeArgumentList_empty() { |
- TypeArgumentList argumentList = parse4( |
- "parseTypeArgumentList", "<>", [ParserErrorCode.EXPECTED_TYPE_NAME]); |
+ createParser('<>'); |
+ TypeArgumentList argumentList = parser.parseTypeArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TYPE_NAME]); |
expect(argumentList.leftBracket, isNotNull); |
expect(argumentList.arguments, hasLength(1)); |
expect(argumentList.rightBracket, isNotNull); |
} |
void test_parseTypeArgumentList_multiple() { |
- TypeArgumentList argumentList = |
- parse4("parseTypeArgumentList", "<int, int, int>"); |
+ createParser('<int, int, int>'); |
+ TypeArgumentList argumentList = parser.parseTypeArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
expect(argumentList.leftBracket, isNotNull); |
expect(argumentList.arguments, hasLength(3)); |
expect(argumentList.rightBracket, isNotNull); |
} |
void test_parseTypeArgumentList_nested() { |
- TypeArgumentList argumentList = parse4("parseTypeArgumentList", "<A<B>>"); |
+ createParser('<A<B>>'); |
+ TypeArgumentList argumentList = parser.parseTypeArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
expect(argumentList.leftBracket, isNotNull); |
expect(argumentList.arguments, hasLength(1)); |
TypeName argument = argumentList.arguments[0]; |
@@ -10430,8 +11582,10 @@ void'''); |
} |
void test_parseTypeArgumentList_nested_withComment_double() { |
- TypeArgumentList argumentList = |
- parse4("parseTypeArgumentList", "<A<B /* 0 */ >>"); |
+ createParser('<A<B /* 0 */ >>'); |
+ TypeArgumentList argumentList = parser.parseTypeArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
expect(argumentList.leftBracket, isNotNull); |
expect(argumentList.rightBracket, isNotNull); |
expect(argumentList.arguments, hasLength(1)); |
@@ -10448,8 +11602,10 @@ void'''); |
} |
void test_parseTypeArgumentList_nested_withComment_tripple() { |
- TypeArgumentList argumentList = |
- parse4("parseTypeArgumentList", "<A<B<C /* 0 */ >>>"); |
+ createParser('<A<B<C /* 0 */ >>>'); |
+ TypeArgumentList argumentList = parser.parseTypeArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
expect(argumentList.leftBracket, isNotNull); |
expect(argumentList.rightBracket, isNotNull); |
expect(argumentList.arguments, hasLength(1)); |
@@ -10475,14 +11631,20 @@ void'''); |
} |
void test_parseTypeArgumentList_single() { |
- TypeArgumentList argumentList = parse4("parseTypeArgumentList", "<int>"); |
+ createParser('<int>'); |
+ TypeArgumentList argumentList = parser.parseTypeArgumentList(); |
+ expectNotNullIfNoErrors(argumentList); |
+ listener.assertNoErrors(); |
expect(argumentList.leftBracket, isNotNull); |
expect(argumentList.arguments, hasLength(1)); |
expect(argumentList.rightBracket, isNotNull); |
} |
void test_parseTypeName_parameterized() { |
- TypeName typeName = parse4("parseTypeName", "List<int>"); |
+ createParser('List<int>'); |
+ TypeName typeName = parser.parseTypeName(false); |
+ expectNotNullIfNoErrors(typeName); |
+ listener.assertNoErrors(); |
expect(typeName.name, isNotNull); |
expect(typeName.typeArguments, isNotNull); |
expect(typeName.question, isNull); |
@@ -10490,14 +11652,20 @@ void'''); |
void test_parseTypeName_parameterized_nullable() { |
enableNnbd = true; |
- TypeName typeName = parse4("parseTypeName", "List<int>?"); |
+ createParser('List<int>?'); |
+ TypeName typeName = parser.parseTypeName(false); |
+ expectNotNullIfNoErrors(typeName); |
+ listener.assertNoErrors(); |
expect(typeName.name, isNotNull); |
expect(typeName.typeArguments, isNotNull); |
expect(typeName.question, isNotNull); |
} |
void test_parseTypeName_simple() { |
- TypeName typeName = parse4("parseTypeName", "int"); |
+ createParser('int'); |
+ TypeName typeName = parser.parseTypeName(false); |
+ expectNotNullIfNoErrors(typeName); |
+ listener.assertNoErrors(); |
expect(typeName.name, isNotNull); |
expect(typeName.typeArguments, isNull); |
expect(typeName.question, isNull); |
@@ -10505,65 +11673,90 @@ void'''); |
void test_parseTypeName_simple_nullable() { |
enableNnbd = true; |
- TypeName typeName = parse4("parseTypeName", "String?"); |
+ createParser('String?'); |
+ TypeName typeName = parser.parseTypeName(false); |
+ expectNotNullIfNoErrors(typeName); |
+ listener.assertNoErrors(); |
expect(typeName.name, isNotNull); |
expect(typeName.typeArguments, isNull); |
expect(typeName.question, isNotNull); |
} |
void test_parseTypeParameter_bounded() { |
- TypeParameter parameter = parse4("parseTypeParameter", "A extends B"); |
+ createParser('A extends B'); |
+ TypeParameter parameter = parser.parseTypeParameter(); |
+ expectNotNullIfNoErrors(parameter); |
+ listener.assertNoErrors(); |
expect(parameter.bound, isNotNull); |
expect(parameter.extendsKeyword, isNotNull); |
expect(parameter.name, isNotNull); |
} |
void test_parseTypeParameter_simple() { |
- TypeParameter parameter = parse4("parseTypeParameter", "A"); |
+ createParser('A'); |
+ TypeParameter parameter = parser.parseTypeParameter(); |
+ expectNotNullIfNoErrors(parameter); |
+ listener.assertNoErrors(); |
expect(parameter.bound, isNull); |
expect(parameter.extendsKeyword, isNull); |
expect(parameter.name, isNotNull); |
} |
void test_parseTypeParameterList_multiple() { |
- TypeParameterList parameterList = |
- parse4("parseTypeParameterList", "<A, B extends C, D>"); |
+ createParser('<A, B extends C, D>'); |
+ TypeParameterList parameterList = parser.parseTypeParameterList(); |
+ expectNotNullIfNoErrors(parameterList); |
+ listener.assertNoErrors(); |
expect(parameterList.leftBracket, isNotNull); |
expect(parameterList.rightBracket, isNotNull); |
expect(parameterList.typeParameters, hasLength(3)); |
} |
void test_parseTypeParameterList_parameterizedWithTrailingEquals() { |
- TypeParameterList parameterList = |
- parse4("parseTypeParameterList", "<A extends B<E>>="); |
+ createParser('<A extends B<E>>='); |
+ TypeParameterList parameterList = parser.parseTypeParameterList(); |
+ expectNotNullIfNoErrors(parameterList); |
+ listener.assertNoErrors(); |
expect(parameterList.leftBracket, isNotNull); |
expect(parameterList.rightBracket, isNotNull); |
expect(parameterList.typeParameters, hasLength(1)); |
} |
void test_parseTypeParameterList_single() { |
- TypeParameterList parameterList = parse4("parseTypeParameterList", "<A>"); |
+ createParser('<<A>'); |
+ TypeParameterList parameterList = parser.parseTypeParameterList(); |
+ expectNotNullIfNoErrors(parameterList); |
+ listener.assertNoErrors(); |
expect(parameterList.leftBracket, isNotNull); |
expect(parameterList.rightBracket, isNotNull); |
expect(parameterList.typeParameters, hasLength(1)); |
} |
void test_parseTypeParameterList_withTrailingEquals() { |
- TypeParameterList parameterList = parse4("parseTypeParameterList", "<A>="); |
+ createParser('<A>='); |
+ TypeParameterList parameterList = parser.parseTypeParameterList(); |
+ expectNotNullIfNoErrors(parameterList); |
+ listener.assertNoErrors(); |
expect(parameterList.leftBracket, isNotNull); |
expect(parameterList.rightBracket, isNotNull); |
expect(parameterList.typeParameters, hasLength(1)); |
} |
void test_parseUnaryExpression_decrement_normal() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "--x"); |
+ createParser('--x'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.MINUS_MINUS); |
expect(expression.operand, isNotNull); |
} |
void test_parseUnaryExpression_decrement_super() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "--super"); |
+ createParser('--super'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.MINUS); |
Expression innerExpression = expression.operand; |
@@ -10576,7 +11769,10 @@ void'''); |
} |
void test_parseUnaryExpression_decrement_super_propertyAccess() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "--super.x"); |
+ createParser('--super.x'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.MINUS_MINUS); |
expect(expression.operand, isNotNull); |
@@ -10586,8 +11782,10 @@ void'''); |
} |
void test_parseUnaryExpression_decrement_super_withComment() { |
- PrefixExpression expression = |
- parse4("parseUnaryExpression", "/* 0 */ --super"); |
+ createParser('/* 0 */ --super'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.MINUS); |
expect(expression.operator.precedingComments, isNotNull); |
@@ -10601,14 +11799,20 @@ void'''); |
} |
void test_parseUnaryExpression_increment_normal() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "++x"); |
+ createParser('++x'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.PLUS_PLUS); |
expect(expression.operand, isNotNull); |
} |
void test_parseUnaryExpression_increment_super_index() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "++super[0]"); |
+ createParser('++super[0]'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.PLUS_PLUS); |
expect(expression.operand, isNotNull); |
@@ -10618,7 +11822,10 @@ void'''); |
} |
void test_parseUnaryExpression_increment_super_propertyAccess() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "++super.x"); |
+ createParser('++super.x'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.PLUS_PLUS); |
expect(expression.operand, isNotNull); |
@@ -10628,97 +11835,124 @@ void'''); |
} |
void test_parseUnaryExpression_minus_normal() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "-x"); |
+ createParser('-x'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.MINUS); |
expect(expression.operand, isNotNull); |
} |
void test_parseUnaryExpression_minus_super() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "-super"); |
+ createParser('-super'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.MINUS); |
expect(expression.operand, isNotNull); |
} |
void test_parseUnaryExpression_not_normal() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "!x"); |
+ createParser('!x'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.BANG); |
expect(expression.operand, isNotNull); |
} |
void test_parseUnaryExpression_not_super() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "!super"); |
+ createParser('!super'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.BANG); |
expect(expression.operand, isNotNull); |
} |
void test_parseUnaryExpression_tilda_normal() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "~x"); |
+ createParser('~x'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.TILDE); |
expect(expression.operand, isNotNull); |
} |
void test_parseUnaryExpression_tilda_super() { |
- PrefixExpression expression = parse4("parseUnaryExpression", "~super"); |
+ createParser('~super'); |
+ PrefixExpression expression = parser.parseUnaryExpression(); |
+ expectNotNullIfNoErrors(expression); |
+ listener.assertNoErrors(); |
expect(expression.operator, isNotNull); |
expect(expression.operator.type, TokenType.TILDE); |
expect(expression.operand, isNotNull); |
} |
void test_parseVariableDeclaration_equals() { |
- VariableDeclaration declaration = |
- parse4("parseVariableDeclaration", "a = b"); |
+ createParser('a = b'); |
+ VariableDeclaration declaration = parser.parseVariableDeclaration(); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertNoErrors(); |
expect(declaration.name, isNotNull); |
expect(declaration.equals, isNotNull); |
expect(declaration.initializer, isNotNull); |
} |
void test_parseVariableDeclaration_noEquals() { |
- VariableDeclaration declaration = parse4("parseVariableDeclaration", "a"); |
+ createParser('a'); |
+ VariableDeclaration declaration = parser.parseVariableDeclaration(); |
+ expectNotNullIfNoErrors(declaration); |
+ listener.assertNoErrors(); |
expect(declaration.name, isNotNull); |
expect(declaration.equals, isNull); |
expect(declaration.initializer, isNull); |
} |
void test_parseVariableDeclarationListAfterMetadata_const_noType() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "const a"); |
+ createParser('const a'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNotNull); |
expect(declarationList.type, isNull); |
expect(declarationList.variables, hasLength(1)); |
} |
void test_parseVariableDeclarationListAfterMetadata_const_type() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "const A a"); |
+ createParser('const A a'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNotNull); |
expect(declarationList.type, isNotNull); |
expect(declarationList.variables, hasLength(1)); |
} |
void test_parseVariableDeclarationListAfterMetadata_final_noType() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "final a"); |
+ createParser('final a'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNotNull); |
expect(declarationList.type, isNull); |
expect(declarationList.variables, hasLength(1)); |
} |
void test_parseVariableDeclarationListAfterMetadata_final_type() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "final A a"); |
+ createParser('final A a'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNotNull); |
expect(declarationList.type, isNotNull); |
expect(declarationList.variables, hasLength(1)); |
@@ -10726,49 +11960,54 @@ void'''); |
void test_parseVariableDeclarationListAfterMetadata_final_typeComment() { |
enableGenericMethodComments = true; |
- VariableDeclarationList decl = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "final/*=T*/ x"); |
- expect(decl.type.name.name, 'T'); |
- expect(decl.isFinal, true); |
+ createParser('final/*=T*/ x'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
+ expect(declarationList.type.name.name, 'T'); |
+ expect(declarationList.isFinal, true); |
} |
void test_parseVariableDeclarationListAfterMetadata_type_multiple() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "A a, b, c"); |
+ createParser('A a, b, c'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNull); |
expect(declarationList.type, isNotNull); |
expect(declarationList.variables, hasLength(3)); |
} |
void test_parseVariableDeclarationListAfterMetadata_type_single() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "A a"); |
+ createParser('A a'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNull); |
expect(declarationList.type, isNotNull); |
expect(declarationList.variables, hasLength(1)); |
} |
void test_parseVariableDeclarationListAfterMetadata_var_multiple() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "var a, b, c"); |
+ createParser('var a, b, c'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNotNull); |
expect(declarationList.type, isNull); |
expect(declarationList.variables, hasLength(3)); |
} |
void test_parseVariableDeclarationListAfterMetadata_var_single() { |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "var a"); |
+ createParser('var a'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNotNull); |
expect(declarationList.type, isNull); |
expect(declarationList.variables, hasLength(1)); |
@@ -10776,20 +12015,23 @@ void'''); |
void test_parseVariableDeclarationListAfterMetadata_var_typeComment() { |
enableGenericMethodComments = true; |
- VariableDeclarationList decl = parse( |
- "parseVariableDeclarationListAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "var/*=T*/ x"); |
- expect(decl.type.name.name, 'T'); |
- expect(decl.keyword, isNull); |
+ createParser('var/*=T*/ x'); |
+ VariableDeclarationList declarationList = parser |
+ .parseVariableDeclarationListAfterMetadata(emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
+ expect(declarationList.type.name.name, 'T'); |
+ expect(declarationList.keyword, isNull); |
} |
void test_parseVariableDeclarationListAfterType_type() { |
TypeName type = new TypeName(new SimpleIdentifier(null), null); |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterType", |
- <Object>[emptyCommentAndMetadata(), null, type], |
- "a"); |
+ createParser('a'); |
+ VariableDeclarationList declarationList = |
+ parser.parseVariableDeclarationListAfterType( |
+ emptyCommentAndMetadata(), null, type); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, isNull); |
expect(declarationList.type, type); |
expect(declarationList.variables, hasLength(1)); |
@@ -10797,20 +12039,24 @@ void'''); |
void test_parseVariableDeclarationListAfterType_var() { |
Token keyword = TokenFactory.tokenFromKeyword(Keyword.VAR); |
- VariableDeclarationList declarationList = parse( |
- "parseVariableDeclarationListAfterType", |
- <Object>[emptyCommentAndMetadata(), keyword, null], |
- "a, b, c"); |
+ createParser('a, b, c'); |
+ VariableDeclarationList declarationList = |
+ parser.parseVariableDeclarationListAfterType( |
+ emptyCommentAndMetadata(), keyword, null); |
+ expectNotNullIfNoErrors(declarationList); |
+ listener.assertNoErrors(); |
expect(declarationList.keyword, keyword); |
expect(declarationList.type, isNull); |
expect(declarationList.variables, hasLength(3)); |
} |
void test_parseVariableDeclarationStatementAfterMetadata_multiple() { |
- VariableDeclarationStatement statement = parse( |
- "parseVariableDeclarationStatementAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "var x, y, z;"); |
+ createParser('var x, y, z;'); |
+ VariableDeclarationStatement statement = |
+ parser.parseVariableDeclarationStatementAfterMetadata( |
+ emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.semicolon, isNotNull); |
VariableDeclarationList variableList = statement.variables; |
expect(variableList, isNotNull); |
@@ -10818,10 +12064,12 @@ void'''); |
} |
void test_parseVariableDeclarationStatementAfterMetadata_single() { |
- VariableDeclarationStatement statement = parse( |
- "parseVariableDeclarationStatementAfterMetadata", |
- <Object>[emptyCommentAndMetadata()], |
- "var x;"); |
+ createParser('var x;'); |
+ VariableDeclarationStatement statement = |
+ parser.parseVariableDeclarationStatementAfterMetadata( |
+ emptyCommentAndMetadata()); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.semicolon, isNotNull); |
VariableDeclarationList variableList = statement.variables; |
expect(variableList, isNotNull); |
@@ -10829,7 +12077,10 @@ void'''); |
} |
void test_parseWhileStatement() { |
- WhileStatement statement = parse4("parseWhileStatement", "while (x) {}"); |
+ createParser('while (x) {}'); |
+ WhileStatement statement = parser.parseWhileStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.whileKeyword, isNotNull); |
expect(statement.leftParenthesis, isNotNull); |
expect(statement.condition, isNotNull); |
@@ -10838,19 +12089,28 @@ void'''); |
} |
void test_parseWithClause_multiple() { |
- WithClause clause = parse4("parseWithClause", "with A, B, C"); |
+ createParser('with A, B, C'); |
+ WithClause clause = parser.parseWithClause(); |
+ expectNotNullIfNoErrors(clause); |
+ listener.assertNoErrors(); |
expect(clause.withKeyword, isNotNull); |
expect(clause.mixinTypes, hasLength(3)); |
} |
void test_parseWithClause_single() { |
- WithClause clause = parse4("parseWithClause", "with M"); |
+ createParser('with M'); |
+ WithClause clause = parser.parseWithClause(); |
+ expectNotNullIfNoErrors(clause); |
+ listener.assertNoErrors(); |
expect(clause.withKeyword, isNotNull); |
expect(clause.mixinTypes, hasLength(1)); |
} |
void test_parseYieldStatement_each() { |
- YieldStatement statement = parse4("parseYieldStatement", "yield* x;"); |
+ createParser('yield* x;'); |
+ YieldStatement statement = parser.parseYieldStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.yieldKeyword, isNotNull); |
expect(statement.star, isNotNull); |
expect(statement.expression, isNotNull); |
@@ -10858,7 +12118,10 @@ void'''); |
} |
void test_parseYieldStatement_normal() { |
- YieldStatement statement = parse4("parseYieldStatement", "yield x;"); |
+ createParser('yield x;'); |
+ YieldStatement statement = parser.parseYieldStatement(); |
+ expectNotNullIfNoErrors(statement); |
+ listener.assertNoErrors(); |
expect(statement.yieldKeyword, isNotNull); |
expect(statement.star, isNull); |
expect(statement.expression, isNotNull); |
@@ -10866,109 +12129,128 @@ void'''); |
} |
void test_skipPrefixedIdentifier_invalid() { |
- Token following = _skip("skipPrefixedIdentifier", "+"); |
+ createParser('+'); |
+ Token following = parser.skipPrefixedIdentifier(parser.currentToken); |
expect(following, isNull); |
} |
void test_skipPrefixedIdentifier_notPrefixed() { |
- Token following = _skip("skipPrefixedIdentifier", "a +"); |
+ createParser('a +'); |
+ Token following = parser.skipPrefixedIdentifier(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipPrefixedIdentifier_prefixed() { |
- Token following = _skip("skipPrefixedIdentifier", "a.b +"); |
+ createParser('a.b +'); |
+ Token following = parser.skipPrefixedIdentifier(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipReturnType_invalid() { |
- Token following = _skip("skipReturnType", "+"); |
+ createParser('+'); |
+ Token following = parser.skipReturnType(parser.currentToken); |
expect(following, isNull); |
} |
void test_skipReturnType_type() { |
- Token following = _skip("skipReturnType", "C +"); |
+ createParser('C +'); |
+ Token following = parser.skipReturnType(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipReturnType_void() { |
- Token following = _skip("skipReturnType", "void +"); |
+ createParser('void +'); |
+ Token following = parser.skipReturnType(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipSimpleIdentifier_identifier() { |
- Token following = _skip("skipSimpleIdentifier", "i +"); |
+ createParser('i +'); |
+ Token following = parser.skipSimpleIdentifier(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipSimpleIdentifier_invalid() { |
- Token following = _skip("skipSimpleIdentifier", "9 +"); |
+ createParser('9 +'); |
+ Token following = parser.skipSimpleIdentifier(parser.currentToken); |
expect(following, isNull); |
} |
void test_skipSimpleIdentifier_pseudoKeyword() { |
- Token following = _skip("skipSimpleIdentifier", "as +"); |
+ createParser('as +'); |
+ Token following = parser.skipSimpleIdentifier(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipStringLiteral_adjacent() { |
- Token following = _skip("skipStringLiteral", "'a' 'b' +"); |
+ createParser("'a' 'b' +"); |
+ Token following = parser.skipStringLiteral(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipStringLiteral_interpolated() { |
- Token following = _skip("skipStringLiteral", "'a\${b}c' +"); |
+ createParser("'a\${b}c' +"); |
+ Token following = parser.skipStringLiteral(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipStringLiteral_invalid() { |
- Token following = _skip("skipStringLiteral", "a"); |
+ createParser('a'); |
+ Token following = parser.skipStringLiteral(parser.currentToken); |
expect(following, isNull); |
} |
void test_skipStringLiteral_single() { |
- Token following = _skip("skipStringLiteral", "'a' +"); |
+ createParser("'a' +"); |
+ Token following = parser.skipStringLiteral(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipTypeArgumentList_invalid() { |
- Token following = _skip("skipTypeArgumentList", "+"); |
+ createParser('+'); |
+ Token following = parser.skipTypeArgumentList(parser.currentToken); |
expect(following, isNull); |
} |
void test_skipTypeArgumentList_multiple() { |
- Token following = _skip("skipTypeArgumentList", "<E, F, G> +"); |
+ createParser('<E, F, G> +'); |
+ Token following = parser.skipTypeArgumentList(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipTypeArgumentList_single() { |
- Token following = _skip("skipTypeArgumentList", "<E> +"); |
+ createParser('<E> +'); |
+ Token following = parser.skipTypeArgumentList(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipTypeName_invalid() { |
- Token following = _skip("skipTypeName", "+"); |
+ createParser('+'); |
+ Token following = parser.skipTypeName(parser.currentToken); |
expect(following, isNull); |
} |
void test_skipTypeName_parameterized() { |
- Token following = _skip("skipTypeName", "C<E<F<G>>> +"); |
+ createParser('C<E<F<G>>> +'); |
+ Token following = parser.skipTypeName(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
void test_skipTypeName_simple() { |
- Token following = _skip("skipTypeName", "C +"); |
+ createParser('C +'); |
+ Token following = parser.skipTypeName(parser.currentToken); |
expect(following, isNotNull); |
expect(following.type, TokenType.PLUS); |
} |
@@ -10983,38 +12265,10 @@ void'''); |
* @throws Exception if the method could not be invoked or throws an exception |
*/ |
String _computeStringValue(String lexeme, bool first, bool last) { |
- AnalysisErrorListener listener = |
- new AnalysisErrorListener_SimpleParserTest_computeStringValue(); |
- Parser parser = new Parser(null, listener); |
- return invokeParserMethodImpl( |
- parser, "computeStringValue", <Object>[lexeme, first, last], null) |
- as String; |
- } |
- |
- /** |
- * Invoke the method [Parser.createSyntheticIdentifier] with the parser set to the token |
- * stream produced by scanning the given source. |
- * |
- * @param source the source to be scanned to produce the token stream being tested |
- * @return the result of invoking the method |
- * @throws Exception if the method could not be invoked or throws an exception |
- */ |
- SimpleIdentifier _createSyntheticIdentifier() { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- return invokeParserMethod2("createSyntheticIdentifier", "", listener); |
- } |
- |
- /** |
- * Invoke the method [Parser.createSyntheticIdentifier] with the parser set to the token |
- * stream produced by scanning the given source. |
- * |
- * @param source the source to be scanned to produce the token stream being tested |
- * @return the result of invoking the method |
- * @throws Exception if the method could not be invoked or throws an exception |
- */ |
- SimpleStringLiteral _createSyntheticStringLiteral() { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- return invokeParserMethod2("createSyntheticStringLiteral", "", listener); |
+ createParser(''); |
+ String value = parser.computeStringValue(lexeme, first, last); |
+ listener.assertNoErrors(); |
+ return value; |
} |
void _expectDottedName(DottedName name, List<String> expectedComponents) { |
@@ -11037,9 +12291,10 @@ void'''); |
* @throws Exception if the method could not be invoked or throws an exception |
*/ |
bool _isFunctionDeclaration(String source) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- return invokeParserMethod2("isFunctionDeclaration", source, listener) |
- as bool; |
+ createParser(source); |
+ bool result = parser.isFunctionDeclaration(); |
+ expectNotNullIfNoErrors(result); |
+ return result; |
} |
/** |
@@ -11051,20 +12306,8 @@ void'''); |
* @throws Exception if the method could not be invoked or throws an exception |
*/ |
bool _isFunctionExpression(String source) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- // |
- // Scan the source. |
- // |
- Scanner scanner = |
- new Scanner(null, new CharSequenceReader(source), listener); |
- Token tokenStream = scanner.tokenize(); |
- // |
- // Parse the source. |
- // |
- Parser parser = new Parser(null, listener); |
- return invokeParserMethodImpl( |
- parser, "isFunctionExpression", <Object>[tokenStream], tokenStream) |
- as bool; |
+ createParser(source); |
+ return parser.isFunctionExpression(parser.currentToken); |
} |
/** |
@@ -11076,9 +12319,10 @@ void'''); |
* @throws Exception if the method could not be invoked or throws an exception |
*/ |
bool _isInitializedVariableDeclaration(String source) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- return invokeParserMethod2( |
- "isInitializedVariableDeclaration", source, listener) as bool; |
+ createParser(source); |
+ bool result = parser.isInitializedVariableDeclaration(); |
+ expectNotNullIfNoErrors(result); |
+ return result; |
} |
/** |
@@ -11090,8 +12334,10 @@ void'''); |
* @throws Exception if the method could not be invoked or throws an exception |
*/ |
bool _isSwitchMember(String source) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- return invokeParserMethod2("isSwitchMember", source, listener) as bool; |
+ createParser(source); |
+ bool result = parser.isSwitchMember(); |
+ expectNotNullIfNoErrors(result); |
+ return result; |
} |
/** |
@@ -11105,42 +12351,11 @@ void'''); |
*/ |
CompilationUnit _parseDirectives(String source, |
[List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- Scanner scanner = |
- new Scanner(null, new CharSequenceReader(source), listener); |
- listener.setLineInfo(new TestSource(), scanner.lineStarts); |
- Token token = scanner.tokenize(); |
- Parser parser = new Parser(null, listener); |
- CompilationUnit unit = parser.parseDirectives(token); |
+ createParser(source); |
+ CompilationUnit unit = parser.parseDirectives2(); |
expect(unit, isNotNull); |
expect(unit.declarations, hasLength(0)); |
listener.assertErrorsWithCodes(errorCodes); |
return unit; |
} |
- |
- /** |
- * Invoke a "skip" method in [Parser]. The method is assumed to take a token as it's |
- * parameter and is given the first token in the scanned source. |
- * |
- * @param methodName the name of the method that should be invoked |
- * @param source the source to be processed by the method |
- * @return the result of invoking the method |
- * @throws Exception if the method could not be invoked or throws an exception |
- * @throws AssertionFailedError if the result is `null` |
- */ |
- Token _skip(String methodName, String source) { |
- GatheringErrorListener listener = new GatheringErrorListener(); |
- // |
- // Scan the source. |
- // |
- Scanner scanner = |
- new Scanner(null, new CharSequenceReader(source), listener); |
- Token tokenStream = scanner.tokenize(); |
- // |
- // Parse the source. |
- // |
- Parser parser = new Parser(null, listener); |
- return invokeParserMethodImpl( |
- parser, methodName, <Object>[tokenStream], tokenStream) as Token; |
- } |
} |