| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:analyzer/dart/ast/ast.dart'; | 5 import 'package:analyzer/dart/ast/ast.dart'; |
| 6 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; | 6 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
| 7 import 'package:analyzer/dart/ast/token.dart'; | 7 import 'package:analyzer/dart/ast/token.dart'; |
| 8 import 'package:analyzer/dart/ast/visitor.dart'; | 8 import 'package:analyzer/dart/ast/visitor.dart'; |
| 9 import 'package:analyzer/error/error.dart'; | 9 import 'package:analyzer/error/error.dart'; |
| 10 import 'package:analyzer/error/listener.dart'; | 10 import 'package:analyzer/error/listener.dart'; |
| (...skipping 2046 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2057 } | 2057 } |
| 2058 } | 2058 } |
| 2059 | 2059 |
| 2060 /** | 2060 /** |
| 2061 * The class `ErrorParserTest` defines parser tests that test the parsing | 2061 * The class `ErrorParserTest` defines parser tests that test the parsing |
| 2062 * of code to ensure that errors are correctly reported, | 2062 * of code to ensure that errors are correctly reported, |
| 2063 * and in some cases, not reported. | 2063 * and in some cases, not reported. |
| 2064 */ | 2064 */ |
| 2065 @reflectiveTest | 2065 @reflectiveTest |
| 2066 class ErrorParserTest extends ParserTestCase with ErrorParserTestMixin { | 2066 class ErrorParserTest extends ParserTestCase with ErrorParserTestMixin { |
| 2067 void test_missingIdentifier_number() { |
| 2068 createParser('1'); |
| 2069 SimpleIdentifier expression = parser.parseSimpleIdentifier(); |
| 2070 expectNotNullIfNoErrors(expression); |
| 2071 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
| 2072 expect(expression.isSynthetic, isTrue); |
| 2073 } |
| 2074 |
| 2067 void test_nullableTypeInExtends() { | 2075 void test_nullableTypeInExtends() { |
| 2068 enableNnbd = true; | 2076 enableNnbd = true; |
| 2069 createParser('extends B?'); | 2077 createParser('extends B?'); |
| 2070 ExtendsClause clause = parser.parseExtendsClause(); | 2078 ExtendsClause clause = parser.parseExtendsClause(); |
| 2071 expectNotNullIfNoErrors(clause); | 2079 expectNotNullIfNoErrors(clause); |
| 2072 listener.assertErrorsWithCodes([ParserErrorCode.NULLABLE_TYPE_IN_EXTENDS]); | 2080 listener.assertErrorsWithCodes([ParserErrorCode.NULLABLE_TYPE_IN_EXTENDS]); |
| 2073 } | 2081 } |
| 2074 | 2082 |
| 2075 void test_nullableTypeInImplements() { | 2083 void test_nullableTypeInImplements() { |
| 2076 enableNnbd = true; | 2084 enableNnbd = true; |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2510 } | 2518 } |
| 2511 | 2519 |
| 2512 void test_duplicatedModifier_var() { | 2520 void test_duplicatedModifier_var() { |
| 2513 createParser('var var m;'); | 2521 createParser('var var m;'); |
| 2514 ClassMember member = parser.parseClassMember('C'); | 2522 ClassMember member = parser.parseClassMember('C'); |
| 2515 expectNotNullIfNoErrors(member); | 2523 expectNotNullIfNoErrors(member); |
| 2516 listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); | 2524 listener.assertErrorsWithCodes([ParserErrorCode.DUPLICATED_MODIFIER]); |
| 2517 } | 2525 } |
| 2518 | 2526 |
| 2519 void test_duplicateLabelInSwitchStatement() { | 2527 void test_duplicateLabelInSwitchStatement() { |
| 2520 createParser('switch (e) {l1: case 0: break; l1: case 1: break;}'); | 2528 SwitchStatement statement = |
| 2521 SwitchStatement statement = parser.parseSwitchStatement(); | 2529 parseStatement('switch (e) {l1: case 0: break; l1: case 1: break;}'); |
| 2522 expectNotNullIfNoErrors(statement); | 2530 expectNotNullIfNoErrors(statement); |
| 2523 listener.assertErrorsWithCodes( | 2531 listener.assertErrorsWithCodes( |
| 2524 [ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT]); | 2532 [ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT]); |
| 2525 } | 2533 } |
| 2526 | 2534 |
| 2527 void test_emptyEnumBody() { | 2535 void test_emptyEnumBody() { |
| 2528 createParser('enum E {}'); | 2536 createParser('enum E {}'); |
| 2529 EnumDeclaration declaration = parseFullCompilationUnitMember(); | 2537 EnumDeclaration declaration = parseFullCompilationUnitMember(); |
| 2530 expectNotNullIfNoErrors(declaration); | 2538 expectNotNullIfNoErrors(declaration); |
| 2531 listener.assertErrorsWithCodes([ParserErrorCode.EMPTY_ENUM_BODY]); | 2539 listener.assertErrorsWithCodes([ParserErrorCode.EMPTY_ENUM_BODY]); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2550 parseExpression( | 2558 parseExpression( |
| 2551 "1 == 2 != 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); | 2559 "1 == 2 != 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); |
| 2552 } | 2560 } |
| 2553 | 2561 |
| 2554 void test_equalityCannotBeEqualityOperand_neq_eq() { | 2562 void test_equalityCannotBeEqualityOperand_neq_eq() { |
| 2555 parseExpression( | 2563 parseExpression( |
| 2556 "1 != 2 == 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); | 2564 "1 != 2 == 3", [ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND]); |
| 2557 } | 2565 } |
| 2558 | 2566 |
| 2559 void test_expectedCaseOrDefault() { | 2567 void test_expectedCaseOrDefault() { |
| 2560 createParser('switch (e) {break;}'); | 2568 SwitchStatement statement = parseStatement('switch (e) {break;}'); |
| 2561 SwitchStatement statement = parser.parseSwitchStatement(); | |
| 2562 expectNotNullIfNoErrors(statement); | 2569 expectNotNullIfNoErrors(statement); |
| 2563 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CASE_OR_DEFAULT]); | 2570 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CASE_OR_DEFAULT]); |
| 2564 } | 2571 } |
| 2565 | 2572 |
| 2566 void test_expectedClassMember_inClass_afterType() { | 2573 void test_expectedClassMember_inClass_afterType() { |
| 2567 createParser('heart 2 heart'); | 2574 createParser('heart 2 heart'); |
| 2568 ClassMember member = parser.parseClassMember('C'); | 2575 ClassMember member = parser.parseClassMember('C'); |
| 2569 expectNotNullIfNoErrors(member); | 2576 expectNotNullIfNoErrors(member); |
| 2570 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CLASS_MEMBER]); | 2577 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_CLASS_MEMBER]); |
| 2571 } | 2578 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2607 | 2614 |
| 2608 void test_expectedExecutable_topLevel_eof() { | 2615 void test_expectedExecutable_topLevel_eof() { |
| 2609 createParser('x'); | 2616 createParser('x'); |
| 2610 CompilationUnitMember member = parseFullCompilationUnitMember(); | 2617 CompilationUnitMember member = parseFullCompilationUnitMember(); |
| 2611 expectNotNullIfNoErrors(member); | 2618 expectNotNullIfNoErrors(member); |
| 2612 listener.assertErrors( | 2619 listener.assertErrors( |
| 2613 [new AnalysisError(null, 0, 1, ParserErrorCode.EXPECTED_EXECUTABLE)]); | 2620 [new AnalysisError(null, 0, 1, ParserErrorCode.EXPECTED_EXECUTABLE)]); |
| 2614 } | 2621 } |
| 2615 | 2622 |
| 2616 void test_expectedInterpolationIdentifier() { | 2623 void test_expectedInterpolationIdentifier() { |
| 2617 createParser("'\$x\$'"); | 2624 StringLiteral literal = parseExpression("'\$x\$'", [ |
| 2618 StringLiteral literal = parser.parseStringLiteral(); | |
| 2619 expectNotNullIfNoErrors(literal); | |
| 2620 listener.assertErrorsWithCodes([ | |
| 2621 fe.Scanner.useFasta | 2625 fe.Scanner.useFasta |
| 2622 ? ScannerErrorCode.MISSING_IDENTIFIER | 2626 ? ScannerErrorCode.MISSING_IDENTIFIER |
| 2623 : ParserErrorCode.MISSING_IDENTIFIER | 2627 : ParserErrorCode.MISSING_IDENTIFIER |
| 2624 ]); | 2628 ]); |
| 2629 expectNotNullIfNoErrors(literal); |
| 2625 } | 2630 } |
| 2626 | 2631 |
| 2627 void test_expectedInterpolationIdentifier_emptyString() { | 2632 void test_expectedInterpolationIdentifier_emptyString() { |
| 2628 // The scanner inserts an empty string token between the two $'s; we need to | 2633 // The scanner inserts an empty string token between the two $'s; we need to |
| 2629 // make sure that the MISSING_IDENTIFIER error that is generated has a | 2634 // make sure that the MISSING_IDENTIFIER error that is generated has a |
| 2630 // nonzero width so that it will show up in the editor UI. | 2635 // nonzero width so that it will show up in the editor UI. |
| 2631 createParser("'\$\$foo'"); | 2636 StringLiteral literal = parseExpression( |
| 2632 StringLiteral literal = parser.parseStringLiteral(); | 2637 "'\$\$foo'", |
| 2638 fe.Scanner.useFasta |
| 2639 ? [ScannerErrorCode.MISSING_IDENTIFIER] |
| 2640 : [ParserErrorCode.MISSING_IDENTIFIER]); |
| 2633 expectNotNullIfNoErrors(literal); | 2641 expectNotNullIfNoErrors(literal); |
| 2634 listener.assertErrors(fe.Scanner.useFasta | |
| 2635 ? [new AnalysisError(null, 2, 1, ScannerErrorCode.MISSING_IDENTIFIER)] | |
| 2636 : [new AnalysisError(null, 2, 1, ParserErrorCode.MISSING_IDENTIFIER)]); | |
| 2637 } | 2642 } |
| 2638 | 2643 |
| 2639 @failingTest | 2644 @failingTest |
| 2640 void test_expectedListOrMapLiteral() { | 2645 void test_expectedListOrMapLiteral() { |
| 2641 // It isn't clear that this test can ever pass. The parser is currently | 2646 // It isn't clear that this test can ever pass. The parser is currently |
| 2642 // create a synthetic list literal in this case, but isSynthetic() isn't | 2647 // create a synthetic list literal in this case, but isSynthetic() isn't |
| 2643 // overridden for ListLiteral. The problem is that the synthetic list | 2648 // overridden for ListLiteral. The problem is that the synthetic list |
| 2644 // literals that are being created are not always zero length (because they | 2649 // literals that are being created are not always zero length (because they |
| 2645 // could have type parameters), which violates the contract of | 2650 // could have type parameters), which violates the contract of |
| 2646 // isSynthetic(). | 2651 // isSynthetic(). |
| 2647 TypedLiteral literal = parseListOrMapLiteral(null, '1'); | 2652 TypedLiteral literal = parseListOrMapLiteral(null, '1'); |
| 2648 expectNotNullIfNoErrors(literal); | 2653 expectNotNullIfNoErrors(literal); |
| 2649 listener | 2654 listener |
| 2650 .assertErrorsWithCodes([ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL]); | 2655 .assertErrorsWithCodes([ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL]); |
| 2651 expect(literal.isSynthetic, isTrue); | 2656 expect(literal.isSynthetic, isTrue); |
| 2652 } | 2657 } |
| 2653 | 2658 |
| 2654 void test_expectedStringLiteral() { | 2659 void test_expectedStringLiteral() { |
| 2655 createParser('1'); | 2660 StringLiteral literal = parseStringLiteral('1'); |
| 2656 StringLiteral literal = parser.parseStringLiteral(); | |
| 2657 expectNotNullIfNoErrors(literal); | 2661 expectNotNullIfNoErrors(literal); |
| 2658 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_STRING_LITERAL]); | 2662 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_STRING_LITERAL]); |
| 2659 expect(literal.isSynthetic, isTrue); | 2663 expect(literal.isSynthetic, isTrue); |
| 2660 } | 2664 } |
| 2661 | 2665 |
| 2662 void test_expectedToken_commaMissingInArgumentList() { | 2666 void test_expectedToken_commaMissingInArgumentList() { |
| 2663 createParser('(x, y z)'); | 2667 createParser('(x, y z)'); |
| 2664 ArgumentList list = parser.parseArgumentList(); | 2668 ArgumentList list = parser.parseArgumentList(); |
| 2665 expectNotNullIfNoErrors(list); | 2669 expectNotNullIfNoErrors(list); |
| 2666 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); | 2670 listener.assertErrorsWithCodes([ParserErrorCode.EXPECTED_TOKEN]); |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3096 parseCompilationUnit("class A extends B implements C with D {}", | 3100 parseCompilationUnit("class A extends B implements C with D {}", |
| 3097 [ParserErrorCode.IMPLEMENTS_BEFORE_WITH]); | 3101 [ParserErrorCode.IMPLEMENTS_BEFORE_WITH]); |
| 3098 } | 3102 } |
| 3099 | 3103 |
| 3100 void test_importDirectiveAfterPartDirective() { | 3104 void test_importDirectiveAfterPartDirective() { |
| 3101 parseCompilationUnit("part 'a.dart'; import 'b.dart';", | 3105 parseCompilationUnit("part 'a.dart'; import 'b.dart';", |
| 3102 [ParserErrorCode.IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE]); | 3106 [ParserErrorCode.IMPORT_DIRECTIVE_AFTER_PART_DIRECTIVE]); |
| 3103 } | 3107 } |
| 3104 | 3108 |
| 3105 void test_initializedVariableInForEach() { | 3109 void test_initializedVariableInForEach() { |
| 3106 createParser('for (int a = 0 in foo) {}'); | 3110 Statement statement = parseStatement('for (int a = 0 in foo) {}'); |
| 3107 Statement statement = parser.parseForStatement(); | |
| 3108 expectNotNullIfNoErrors(statement); | 3111 expectNotNullIfNoErrors(statement); |
| 3109 listener.assertErrorsWithCodes( | 3112 listener.assertErrorsWithCodes( |
| 3110 [ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH]); | 3113 [ParserErrorCode.INITIALIZED_VARIABLE_IN_FOR_EACH]); |
| 3111 } | 3114 } |
| 3112 | 3115 |
| 3113 void test_invalidAwaitInFor() { | 3116 void test_invalidAwaitInFor() { |
| 3114 createParser('await for (; ;) {}'); | 3117 Statement statement = parseStatement('await for (; ;) {}'); |
| 3115 Statement statement = parser.parseForStatement(); | |
| 3116 expectNotNullIfNoErrors(statement); | 3118 expectNotNullIfNoErrors(statement); |
| 3117 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_AWAIT_IN_FOR]); | 3119 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_AWAIT_IN_FOR]); |
| 3118 } | 3120 } |
| 3119 | 3121 |
| 3120 void test_invalidCodePoint() { | 3122 void test_invalidCodePoint() { |
| 3121 createParser("'\\u{110000}'"); | 3123 StringLiteral literal = |
| 3122 StringLiteral literal = parser.parseStringLiteral(); | 3124 parseExpression("'\\u{110000}'", [ParserErrorCode.INVALID_CODE_POINT]); |
| 3123 expectNotNullIfNoErrors(literal); | 3125 expectNotNullIfNoErrors(literal); |
| 3124 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_CODE_POINT]); | |
| 3125 } | 3126 } |
| 3126 | 3127 |
| 3127 @failingTest | 3128 @failingTest |
| 3128 void test_invalidCommentReference__new_nonIdentifier() { | 3129 void test_invalidCommentReference__new_nonIdentifier() { |
| 3129 // This test fails because the method parseCommentReference returns null. | 3130 // This test fails because the method parseCommentReference returns null. |
| 3130 createParser(''); | 3131 createParser(''); |
| 3131 CommentReference reference = parser.parseCommentReference('new 42', 0); | 3132 CommentReference reference = parser.parseCommentReference('new 42', 0); |
| 3132 expectNotNullIfNoErrors(reference); | 3133 expectNotNullIfNoErrors(reference); |
| 3133 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_COMMENT_REFERENCE]); | 3134 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_COMMENT_REFERENCE]); |
| 3134 } | 3135 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 3159 } | 3160 } |
| 3160 | 3161 |
| 3161 void test_invalidConstructorName_with() { | 3162 void test_invalidConstructorName_with() { |
| 3162 createParser("C.with();"); | 3163 createParser("C.with();"); |
| 3163 ClassMember member = parser.parseClassMember('C'); | 3164 ClassMember member = parser.parseClassMember('C'); |
| 3164 expectNotNullIfNoErrors(member); | 3165 expectNotNullIfNoErrors(member); |
| 3165 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_CONSTRUCTOR_NAME]); | 3166 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_CONSTRUCTOR_NAME]); |
| 3166 } | 3167 } |
| 3167 | 3168 |
| 3168 void test_invalidHexEscape_invalidDigit() { | 3169 void test_invalidHexEscape_invalidDigit() { |
| 3169 createParser("'\\x0 a'"); | 3170 StringLiteral literal = |
| 3170 StringLiteral literal = parser.parseStringLiteral(); | 3171 parseExpression("'\\x0 a'", [ParserErrorCode.INVALID_HEX_ESCAPE]); |
| 3171 expectNotNullIfNoErrors(literal); | 3172 expectNotNullIfNoErrors(literal); |
| 3172 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_HEX_ESCAPE]); | |
| 3173 } | 3173 } |
| 3174 | 3174 |
| 3175 void test_invalidHexEscape_tooFewDigits() { | 3175 void test_invalidHexEscape_tooFewDigits() { |
| 3176 createParser("'\\x0'"); | 3176 StringLiteral literal = |
| 3177 StringLiteral literal = parser.parseStringLiteral(); | 3177 parseExpression("'\\x0'", [ParserErrorCode.INVALID_HEX_ESCAPE]); |
| 3178 expectNotNullIfNoErrors(literal); | 3178 expectNotNullIfNoErrors(literal); |
| 3179 listener.assertErrorsWithCodes([ParserErrorCode.INVALID_HEX_ESCAPE]); | |
| 3180 } | 3179 } |
| 3181 | 3180 |
| 3182 void test_invalidInterpolationIdentifier_startWithDigit() { | 3181 void test_invalidInterpolationIdentifier_startWithDigit() { |
| 3183 createParser("'\$1'"); | 3182 StringLiteral literal = parseExpression("'\$1'", [ |
| 3184 StringLiteral literal = parser.parseStringLiteral(); | |
| 3185 expectNotNullIfNoErrors(literal); | |
| 3186 listener.assertErrorsWithCodes([ | |
| 3187 fe.Scanner.useFasta | 3183 fe.Scanner.useFasta |
| 3188 ? ScannerErrorCode.MISSING_IDENTIFIER | 3184 ? ScannerErrorCode.MISSING_IDENTIFIER |
| 3189 : ParserErrorCode.MISSING_IDENTIFIER | 3185 : ParserErrorCode.MISSING_IDENTIFIER |
| 3190 ]); | 3186 ]); |
| 3187 expectNotNullIfNoErrors(literal); |
| 3191 } | 3188 } |
| 3192 | 3189 |
| 3193 void test_invalidLiteralInConfiguration() { | 3190 void test_invalidLiteralInConfiguration() { |
| 3194 createParser("if (a == 'x \$y z') 'a.dart'"); | 3191 createParser("if (a == 'x \$y z') 'a.dart'"); |
| 3195 Configuration configuration = parser.parseConfiguration(); | 3192 Configuration configuration = parser.parseConfiguration(); |
| 3196 expectNotNullIfNoErrors(configuration); | 3193 expectNotNullIfNoErrors(configuration); |
| 3197 listener.assertErrorsWithCodes( | 3194 listener.assertErrorsWithCodes( |
| 3198 [ParserErrorCode.INVALID_LITERAL_IN_CONFIGURATION]); | 3195 [ParserErrorCode.INVALID_LITERAL_IN_CONFIGURATION]); |
| 3199 } | 3196 } |
| 3200 | 3197 |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3431 | 3428 |
| 3432 void test_missingAssignableSelector_prefix_plusPlus_literal() { | 3429 void test_missingAssignableSelector_prefix_plusPlus_literal() { |
| 3433 parseExpression("++0", [ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR]); | 3430 parseExpression("++0", [ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR]); |
| 3434 } | 3431 } |
| 3435 | 3432 |
| 3436 void test_missingAssignableSelector_selector() { | 3433 void test_missingAssignableSelector_selector() { |
| 3437 parseExpression("x(y)(z).a++"); | 3434 parseExpression("x(y)(z).a++"); |
| 3438 } | 3435 } |
| 3439 | 3436 |
| 3440 void test_missingAssignableSelector_superPrimaryExpression() { | 3437 void test_missingAssignableSelector_superPrimaryExpression() { |
| 3441 createParser('super'); | 3438 Expression expression = |
| 3442 Expression expression = parser.parsePrimaryExpression(); | 3439 parseExpression('super', [ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR]); |
| 3443 expectNotNullIfNoErrors(expression); | 3440 expectNotNullIfNoErrors(expression); |
| 3444 listener | |
| 3445 .assertErrorsWithCodes([ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR]); | |
| 3446 expect(expression, new isInstanceOf<SuperExpression>()); | 3441 expect(expression, new isInstanceOf<SuperExpression>()); |
| 3447 SuperExpression superExpression = expression; | 3442 SuperExpression superExpression = expression; |
| 3448 expect(superExpression.superKeyword, isNotNull); | 3443 expect(superExpression.superKeyword, isNotNull); |
| 3449 } | 3444 } |
| 3450 | 3445 |
| 3451 void test_missingAssignableSelector_superPropertyAccessAssigned() { | 3446 void test_missingAssignableSelector_superPropertyAccessAssigned() { |
| 3452 parseExpression("super.x = x;"); | 3447 parseExpression("super.x = x;"); |
| 3453 } | 3448 } |
| 3454 | 3449 |
| 3455 void test_missingCatchOrFinally() { | 3450 void test_missingCatchOrFinally() { |
| 3456 createParser('try {}'); | 3451 TryStatement statement = parseStatement('try {}'); |
| 3457 TryStatement statement = parser.parseTryStatement(); | |
| 3458 expectNotNullIfNoErrors(statement); | 3452 expectNotNullIfNoErrors(statement); |
| 3459 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_CATCH_OR_FINALLY]); | 3453 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_CATCH_OR_FINALLY]); |
| 3460 expect(statement, isNotNull); | 3454 expect(statement, isNotNull); |
| 3461 } | 3455 } |
| 3462 | 3456 |
| 3463 void test_missingClassBody() { | 3457 void test_missingClassBody() { |
| 3464 parseCompilationUnit( | 3458 parseCompilationUnit( |
| 3465 "class A class B {}", [ParserErrorCode.MISSING_CLASS_BODY]); | 3459 "class A class B {}", [ParserErrorCode.MISSING_CLASS_BODY]); |
| 3466 } | 3460 } |
| 3467 | 3461 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 3493 [ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE]); | 3487 [ParserErrorCode.MISSING_CONST_FINAL_VAR_OR_TYPE]); |
| 3494 } | 3488 } |
| 3495 | 3489 |
| 3496 void test_missingEnumBody() { | 3490 void test_missingEnumBody() { |
| 3497 createParser('enum E;'); | 3491 createParser('enum E;'); |
| 3498 EnumDeclaration declaration = parseFullCompilationUnitMember(); | 3492 EnumDeclaration declaration = parseFullCompilationUnitMember(); |
| 3499 expectNotNullIfNoErrors(declaration); | 3493 expectNotNullIfNoErrors(declaration); |
| 3500 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_ENUM_BODY]); | 3494 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_ENUM_BODY]); |
| 3501 } | 3495 } |
| 3502 | 3496 |
| 3503 void test_missingExpressionInThrow_withCascade() { | 3497 void test_missingExpressionInThrow() { |
| 3504 createParser('throw;'); | 3498 ThrowExpression expression = |
| 3505 ThrowExpression expression = parser.parseThrowExpression(); | 3499 (parseStatement('throw;') as ExpressionStatement).expression; |
| 3506 expectNotNullIfNoErrors(expression); | 3500 expectNotNullIfNoErrors(expression); |
| 3507 listener | 3501 listener |
| 3508 .assertErrorsWithCodes([ParserErrorCode.MISSING_EXPRESSION_IN_THROW]); | 3502 .assertErrorsWithCodes([ParserErrorCode.MISSING_EXPRESSION_IN_THROW]); |
| 3509 } | |
| 3510 | |
| 3511 void test_missingExpressionInThrow_withoutCascade() { | |
| 3512 createParser('throw;'); | |
| 3513 ThrowExpression expression = parser.parseThrowExpressionWithoutCascade(); | |
| 3514 expectNotNullIfNoErrors(expression); | |
| 3515 listener | |
| 3516 .assertErrorsWithCodes([ParserErrorCode.MISSING_EXPRESSION_IN_THROW]); | |
| 3517 } | 3503 } |
| 3518 | 3504 |
| 3519 void test_missingFunctionBody_emptyNotAllowed() { | 3505 void test_missingFunctionBody_emptyNotAllowed() { |
| 3520 createParser(';'); | 3506 createParser(';'); |
| 3521 FunctionBody functionBody = parser.parseFunctionBody( | 3507 FunctionBody functionBody = parser.parseFunctionBody( |
| 3522 false, ParserErrorCode.MISSING_FUNCTION_BODY, false); | 3508 false, ParserErrorCode.MISSING_FUNCTION_BODY, false); |
| 3523 expectNotNullIfNoErrors(functionBody); | 3509 expectNotNullIfNoErrors(functionBody); |
| 3524 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_FUNCTION_BODY]); | 3510 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_FUNCTION_BODY]); |
| 3525 } | 3511 } |
| 3526 | 3512 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3611 expectNotNullIfNoErrors(literal); | 3597 expectNotNullIfNoErrors(literal); |
| 3612 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); | 3598 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
| 3613 } | 3599 } |
| 3614 | 3600 |
| 3615 void test_missingIdentifier_inSymbol_first() { | 3601 void test_missingIdentifier_inSymbol_first() { |
| 3616 SymbolLiteral literal = parseSymbolLiteral('#'); | 3602 SymbolLiteral literal = parseSymbolLiteral('#'); |
| 3617 expectNotNullIfNoErrors(literal); | 3603 expectNotNullIfNoErrors(literal); |
| 3618 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); | 3604 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
| 3619 } | 3605 } |
| 3620 | 3606 |
| 3621 void test_missingIdentifier_number() { | |
| 3622 createParser('1'); | |
| 3623 SimpleIdentifier expression = parser.parseSimpleIdentifier(); | |
| 3624 expectNotNullIfNoErrors(expression); | |
| 3625 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); | |
| 3626 expect(expression.isSynthetic, isTrue); | |
| 3627 } | |
| 3628 | |
| 3629 void test_missingIdentifierForParameterGroup() { | 3607 void test_missingIdentifierForParameterGroup() { |
| 3630 createParser('(,)'); | 3608 createParser('(,)'); |
| 3631 FormalParameterList list = parser.parseFormalParameterList(); | 3609 FormalParameterList list = parser.parseFormalParameterList(); |
| 3632 expectNotNullIfNoErrors(list); | 3610 expectNotNullIfNoErrors(list); |
| 3633 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); | 3611 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_IDENTIFIER]); |
| 3634 } | 3612 } |
| 3635 | 3613 |
| 3636 void test_missingKeywordOperator() { | 3614 void test_missingKeywordOperator() { |
| 3637 createParser('+(x) {}'); | 3615 createParser('+(x) {}'); |
| 3638 MethodDeclaration method = parser.parseClassMember('C'); | 3616 MethodDeclaration method = parser.parseClassMember('C'); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3672 } | 3650 } |
| 3673 | 3651 |
| 3674 void test_missingMethodParameters_void_expression() { | 3652 void test_missingMethodParameters_void_expression() { |
| 3675 createParser('void m => null; }'); | 3653 createParser('void m => null; }'); |
| 3676 ClassMember member = parser.parseClassMember('C'); | 3654 ClassMember member = parser.parseClassMember('C'); |
| 3677 expectNotNullIfNoErrors(member); | 3655 expectNotNullIfNoErrors(member); |
| 3678 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_METHOD_PARAMETERS]); | 3656 listener.assertErrorsWithCodes([ParserErrorCode.MISSING_METHOD_PARAMETERS]); |
| 3679 } | 3657 } |
| 3680 | 3658 |
| 3681 void test_missingNameForNamedParameter_colon() { | 3659 void test_missingNameForNamedParameter_colon() { |
| 3682 createParser('int : 0'); | 3660 createParser('({int : 0})'); |
| 3683 FormalParameter parameter = | 3661 FormalParameter parameter = |
| 3684 parser.parseFormalParameter(ParameterKind.NAMED, inFunctionType: true); | 3662 parser.parseFormalParameterList(inFunctionType: true).parameters[0]; |
| 3685 expectNotNullIfNoErrors(parameter); | 3663 expectNotNullIfNoErrors(parameter); |
| 3686 listener.assertErrorsWithCodes([ | 3664 listener.assertErrorsWithCodes([ |
| 3687 ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, | 3665 ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, |
| 3688 ParserErrorCode.MISSING_NAME_FOR_NAMED_PARAMETER | 3666 ParserErrorCode.MISSING_NAME_FOR_NAMED_PARAMETER |
| 3689 ]); | 3667 ]); |
| 3690 expect(parameter.identifier, isNotNull); | 3668 expect(parameter.identifier, isNotNull); |
| 3691 } | 3669 } |
| 3692 | 3670 |
| 3693 void test_missingNameForNamedParameter_equals() { | 3671 void test_missingNameForNamedParameter_equals() { |
| 3694 createParser('int = 0'); | 3672 createParser('({int = 0})'); |
| 3695 FormalParameter parameter = | 3673 FormalParameter parameter = |
| 3696 parser.parseFormalParameter(ParameterKind.NAMED, inFunctionType: true); | 3674 parser.parseFormalParameterList(inFunctionType: true).parameters[0]; |
| 3697 expectNotNullIfNoErrors(parameter); | 3675 expectNotNullIfNoErrors(parameter); |
| 3698 listener.assertErrorsWithCodes([ | 3676 listener.assertErrorsWithCodes([ |
| 3699 ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, | 3677 ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, |
| 3700 ParserErrorCode.MISSING_NAME_FOR_NAMED_PARAMETER | 3678 ParserErrorCode.MISSING_NAME_FOR_NAMED_PARAMETER |
| 3701 ]); | 3679 ]); |
| 3702 expect(parameter.identifier, isNotNull); | 3680 expect(parameter.identifier, isNotNull); |
| 3703 } | 3681 } |
| 3704 | 3682 |
| 3705 void test_missingNameForNamedParameter_noDefault() { | 3683 void test_missingNameForNamedParameter_noDefault() { |
| 3706 createParser('int'); | 3684 createParser('({int})'); |
| 3707 FormalParameter parameter = | 3685 FormalParameter parameter = |
| 3708 parser.parseFormalParameter(ParameterKind.NAMED, inFunctionType: true); | 3686 parser.parseFormalParameterList(inFunctionType: true).parameters[0]; |
| 3709 expectNotNullIfNoErrors(parameter); | 3687 expectNotNullIfNoErrors(parameter); |
| 3710 listener.assertErrorsWithCodes( | 3688 listener.assertErrorsWithCodes( |
| 3711 [ParserErrorCode.MISSING_NAME_FOR_NAMED_PARAMETER]); | 3689 [ParserErrorCode.MISSING_NAME_FOR_NAMED_PARAMETER]); |
| 3712 expect(parameter.identifier, isNotNull); | 3690 expect(parameter.identifier, isNotNull); |
| 3713 } | 3691 } |
| 3714 | 3692 |
| 3715 void test_missingNameInLibraryDirective() { | 3693 void test_missingNameInLibraryDirective() { |
| 3716 CompilationUnit unit = parseCompilationUnit( | 3694 CompilationUnit unit = parseCompilationUnit( |
| 3717 "library;", [ParserErrorCode.MISSING_NAME_IN_LIBRARY_DIRECTIVE]); | 3695 "library;", [ParserErrorCode.MISSING_NAME_IN_LIBRARY_DIRECTIVE]); |
| 3718 expect(unit, isNotNull); | 3696 expect(unit, isNotNull); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3777 parseCompilationUnit( | 3755 parseCompilationUnit( |
| 3778 "typedef F<E>;", [ParserErrorCode.MISSING_TYPEDEF_PARAMETERS]); | 3756 "typedef F<E>;", [ParserErrorCode.MISSING_TYPEDEF_PARAMETERS]); |
| 3779 } | 3757 } |
| 3780 | 3758 |
| 3781 void test_missingTypedefParameters_void() { | 3759 void test_missingTypedefParameters_void() { |
| 3782 parseCompilationUnit( | 3760 parseCompilationUnit( |
| 3783 "typedef void F;", [ParserErrorCode.MISSING_TYPEDEF_PARAMETERS]); | 3761 "typedef void F;", [ParserErrorCode.MISSING_TYPEDEF_PARAMETERS]); |
| 3784 } | 3762 } |
| 3785 | 3763 |
| 3786 void test_missingVariableInForEach() { | 3764 void test_missingVariableInForEach() { |
| 3787 createParser('for (a < b in foo) {}'); | 3765 Statement statement = parseStatement('for (a < b in foo) {}'); |
| 3788 Statement statement = parser.parseForStatement(); | |
| 3789 expectNotNullIfNoErrors(statement); | 3766 expectNotNullIfNoErrors(statement); |
| 3790 listener | 3767 listener |
| 3791 .assertErrorsWithCodes([ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH]); | 3768 .assertErrorsWithCodes([ParserErrorCode.MISSING_VARIABLE_IN_FOR_EACH]); |
| 3792 } | 3769 } |
| 3793 | 3770 |
| 3794 void test_mixedParameterGroups_namedPositional() { | 3771 void test_mixedParameterGroups_namedPositional() { |
| 3795 createParser('(a, {b}, [c])'); | 3772 createParser('(a, {b}, [c])'); |
| 3796 FormalParameterList list = parser.parseFormalParameterList(); | 3773 FormalParameterList list = parser.parseFormalParameterList(); |
| 3797 expectNotNullIfNoErrors(list); | 3774 expectNotNullIfNoErrors(list); |
| 3798 listener.assertErrorsWithCodes([ParserErrorCode.MIXED_PARAMETER_GROUPS]); | 3775 listener.assertErrorsWithCodes([ParserErrorCode.MIXED_PARAMETER_GROUPS]); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3839 | 3816 |
| 3840 void test_multiplePositionalParameterGroups() { | 3817 void test_multiplePositionalParameterGroups() { |
| 3841 createParser('(a, [b], [c])'); | 3818 createParser('(a, [b], [c])'); |
| 3842 FormalParameterList list = parser.parseFormalParameterList(); | 3819 FormalParameterList list = parser.parseFormalParameterList(); |
| 3843 expectNotNullIfNoErrors(list); | 3820 expectNotNullIfNoErrors(list); |
| 3844 listener.assertErrorsWithCodes( | 3821 listener.assertErrorsWithCodes( |
| 3845 [ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS]); | 3822 [ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS]); |
| 3846 } | 3823 } |
| 3847 | 3824 |
| 3848 void test_multipleVariablesInForEach() { | 3825 void test_multipleVariablesInForEach() { |
| 3849 createParser('for (int a, b in foo) {}'); | 3826 Statement statement = parseStatement('for (int a, b in foo) {}'); |
| 3850 Statement statement = parser.parseForStatement(); | |
| 3851 expectNotNullIfNoErrors(statement); | 3827 expectNotNullIfNoErrors(statement); |
| 3852 listener.assertErrorsWithCodes( | 3828 listener.assertErrorsWithCodes( |
| 3853 [ParserErrorCode.MULTIPLE_VARIABLES_IN_FOR_EACH]); | 3829 [ParserErrorCode.MULTIPLE_VARIABLES_IN_FOR_EACH]); |
| 3854 } | 3830 } |
| 3855 | 3831 |
| 3856 void test_multipleWithClauses() { | 3832 void test_multipleWithClauses() { |
| 3857 parseCompilationUnit("class A extends B with C with D {}", | 3833 parseCompilationUnit("class A extends B with C with D {}", |
| 3858 [ParserErrorCode.MULTIPLE_WITH_CLAUSES]); | 3834 [ParserErrorCode.MULTIPLE_WITH_CLAUSES]); |
| 3859 } | 3835 } |
| 3860 | 3836 |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4114 ParserErrorCode.EXPECTED_TOKEN, | 4090 ParserErrorCode.EXPECTED_TOKEN, |
| 4115 ParserErrorCode.EXPECTED_TOKEN, | 4091 ParserErrorCode.EXPECTED_TOKEN, |
| 4116 ParserErrorCode.EXPECTED_TOKEN, | 4092 ParserErrorCode.EXPECTED_TOKEN, |
| 4117 ParserErrorCode.EXPECTED_TOKEN, | 4093 ParserErrorCode.EXPECTED_TOKEN, |
| 4118 ParserErrorCode.EXPECTED_TOKEN, | 4094 ParserErrorCode.EXPECTED_TOKEN, |
| 4119 ParserErrorCode.EXPECTED_TOKEN, | 4095 ParserErrorCode.EXPECTED_TOKEN, |
| 4120 ]); | 4096 ]); |
| 4121 } | 4097 } |
| 4122 | 4098 |
| 4123 void test_switchHasCaseAfterDefaultCase() { | 4099 void test_switchHasCaseAfterDefaultCase() { |
| 4124 createParser('switch (a) {default: return 0; case 1: return 1;}'); | 4100 SwitchStatement statement = |
| 4125 SwitchStatement statement = parser.parseSwitchStatement(); | 4101 parseStatement('switch (a) {default: return 0; case 1: return 1;}'); |
| 4126 expectNotNullIfNoErrors(statement); | 4102 expectNotNullIfNoErrors(statement); |
| 4127 listener.assertErrorsWithCodes( | 4103 listener.assertErrorsWithCodes( |
| 4128 [ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE]); | 4104 [ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE]); |
| 4129 } | 4105 } |
| 4130 | 4106 |
| 4131 void test_switchHasCaseAfterDefaultCase_repeated() { | 4107 void test_switchHasCaseAfterDefaultCase_repeated() { |
| 4132 createParser( | 4108 SwitchStatement statement = parseStatement( |
| 4133 'switch (a) {default: return 0; case 1: return 1; case 2: return 2;}'); | 4109 'switch (a) {default: return 0; case 1: return 1; case 2: return 2;}'); |
| 4134 SwitchStatement statement = parser.parseSwitchStatement(); | |
| 4135 expectNotNullIfNoErrors(statement); | 4110 expectNotNullIfNoErrors(statement); |
| 4136 listener.assertErrorsWithCodes([ | 4111 listener.assertErrorsWithCodes([ |
| 4137 ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, | 4112 ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE, |
| 4138 ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE | 4113 ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE |
| 4139 ]); | 4114 ]); |
| 4140 } | 4115 } |
| 4141 | 4116 |
| 4142 void test_switchHasMultipleDefaultCases() { | 4117 void test_switchHasMultipleDefaultCases() { |
| 4143 createParser('switch (a) {default: return 0; default: return 1;}'); | 4118 SwitchStatement statement = |
| 4144 SwitchStatement statement = parser.parseSwitchStatement(); | 4119 parseStatement('switch (a) {default: return 0; default: return 1;}'); |
| 4145 expectNotNullIfNoErrors(statement); | 4120 expectNotNullIfNoErrors(statement); |
| 4146 listener.assertErrorsWithCodes( | 4121 listener.assertErrorsWithCodes( |
| 4147 [ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES]); | 4122 [ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES]); |
| 4148 } | 4123 } |
| 4149 | 4124 |
| 4150 void test_switchHasMultipleDefaultCases_repeated() { | 4125 void test_switchHasMultipleDefaultCases_repeated() { |
| 4151 createParser( | 4126 SwitchStatement statement = parseStatement( |
| 4152 'switch (a) {default: return 0; default: return 1; default: return 2;}')
; | 4127 'switch (a) {default: return 0; default: return 1; default: return 2;}')
; |
| 4153 SwitchStatement statement = parser.parseSwitchStatement(); | |
| 4154 expectNotNullIfNoErrors(statement); | 4128 expectNotNullIfNoErrors(statement); |
| 4155 listener.assertErrorsWithCodes([ | 4129 listener.assertErrorsWithCodes([ |
| 4156 ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, | 4130 ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES, |
| 4157 ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES | 4131 ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES |
| 4158 ]); | 4132 ]); |
| 4159 } | 4133 } |
| 4160 | 4134 |
| 4161 void test_topLevel_getter() { | 4135 void test_topLevel_getter() { |
| 4162 createParser('get x => 7;'); | 4136 createParser('get x => 7;'); |
| 4163 CompilationUnitMember member = parseFullCompilationUnitMember(); | 4137 CompilationUnitMember member = parseFullCompilationUnitMember(); |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4404 ClassMember member = parser.parseClassMember('C'); | 4378 ClassMember member = parser.parseClassMember('C'); |
| 4405 expectNotNullIfNoErrors(member); | 4379 expectNotNullIfNoErrors(member); |
| 4406 listener.assertErrorsWithCodes([ParserErrorCode.VAR_RETURN_TYPE]); | 4380 listener.assertErrorsWithCodes([ParserErrorCode.VAR_RETURN_TYPE]); |
| 4407 } | 4381 } |
| 4408 | 4382 |
| 4409 void test_varTypedef() { | 4383 void test_varTypedef() { |
| 4410 parseCompilationUnit("var typedef F();", [ParserErrorCode.VAR_TYPEDEF]); | 4384 parseCompilationUnit("var typedef F();", [ParserErrorCode.VAR_TYPEDEF]); |
| 4411 } | 4385 } |
| 4412 | 4386 |
| 4413 void test_voidParameter() { | 4387 void test_voidParameter() { |
| 4414 createParser('void a)'); | 4388 NormalFormalParameter parameter = |
| 4415 NormalFormalParameter parameter = parser.parseNormalFormalParameter(); | 4389 parseFormalParameterList('(void a)').parameters[0]; |
| 4416 expectNotNullIfNoErrors(parameter); | 4390 expectNotNullIfNoErrors(parameter); |
| 4417 listener.assertNoErrors(); | 4391 listener.assertNoErrors(); |
| 4418 } | 4392 } |
| 4419 | 4393 |
| 4420 void test_voidVariable_parseClassMember_initializer() { | 4394 void test_voidVariable_parseClassMember_initializer() { |
| 4421 createParser('void x = 0;'); | 4395 createParser('void x = 0;'); |
| 4422 ClassMember member = parser.parseClassMember('C'); | 4396 ClassMember member = parser.parseClassMember('C'); |
| 4423 expectNotNullIfNoErrors(member); | 4397 expectNotNullIfNoErrors(member); |
| 4424 listener.assertNoErrors(); | 4398 listener.assertNoErrors(); |
| 4425 } | 4399 } |
| (...skipping 10992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15418 expectCommentText(typeVariable.documentationComment, '/// Doc'); | 15392 expectCommentText(typeVariable.documentationComment, '/// Doc'); |
| 15419 } | 15393 } |
| 15420 | 15394 |
| 15421 /** | 15395 /** |
| 15422 * Assert that the given [name] is in declaration context. | 15396 * Assert that the given [name] is in declaration context. |
| 15423 */ | 15397 */ |
| 15424 void _assertIsDeclarationName(SimpleIdentifier name) { | 15398 void _assertIsDeclarationName(SimpleIdentifier name) { |
| 15425 expect(name.inDeclarationContext(), isTrue); | 15399 expect(name.inDeclarationContext(), isTrue); |
| 15426 } | 15400 } |
| 15427 } | 15401 } |
| OLD | NEW |