| 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 library analyzer.test.generated.parser_test; | 5 library analyzer.test.generated.parser_test; |
| 6 | 6 |
| 7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
| 8 import 'package:analyzer/dart/ast/token.dart'; | 8 import 'package:analyzer/dart/ast/token.dart'; |
| 9 import 'package:analyzer/dart/ast/visitor.dart'; | 9 import 'package:analyzer/dart/ast/visitor.dart'; |
| 10 import 'package:analyzer/error/error.dart'; | 10 import 'package:analyzer/error/error.dart'; |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 339 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 340 BinaryExpression, expression.condition); | 340 BinaryExpression, expression.condition); |
| 341 } | 341 } |
| 342 | 342 |
| 343 void test_conditionalExpression_precedence_logicalOrExpression() { | 343 void test_conditionalExpression_precedence_logicalOrExpression() { |
| 344 ConditionalExpression expression = parseExpression("a | b ? y : z"); | 344 ConditionalExpression expression = parseExpression("a | b ? y : z"); |
| 345 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 345 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 346 BinaryExpression, expression.condition); | 346 BinaryExpression, expression.condition); |
| 347 } | 347 } |
| 348 | 348 |
| 349 void test_conditionalExpression_precedence_nullableType() { |
| 350 enableNnbd = true; |
| 351 Expression expression = parseExpression('x is String ? (x + y) : z'); |
| 352 expect(expression, isNotNull); |
| 353 expect(expression, new isInstanceOf<ConditionalExpression>()); |
| 354 ConditionalExpression conditional = expression; |
| 355 Expression condition = conditional.condition; |
| 356 expect(condition, new isInstanceOf<IsExpression>()); |
| 357 Expression thenExpression = conditional.thenExpression; |
| 358 expect(thenExpression, new isInstanceOf<ParenthesizedExpression>()); |
| 359 Expression elseExpression = conditional.elseExpression; |
| 360 expect(elseExpression, new isInstanceOf<SimpleIdentifier>()); |
| 361 } |
| 362 |
| 349 void test_constructor_initializer_withParenthesizedExpression() { | 363 void test_constructor_initializer_withParenthesizedExpression() { |
| 350 CompilationUnit unit = ParserTestCase.parseCompilationUnit(r''' | 364 CompilationUnit unit = ParserTestCase.parseCompilationUnit(r''' |
| 351 class C { | 365 class C { |
| 352 C() : | 366 C() : |
| 353 this.a = (b == null ? c : d) { | 367 this.a = (b == null ? c : d) { |
| 354 } | 368 } |
| 355 }'''); | 369 }'''); |
| 356 NodeList<CompilationUnitMember> declarations = unit.declarations; | 370 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 357 expect(declarations, hasLength(1)); | 371 expect(declarations, hasLength(1)); |
| 358 } | 372 } |
| (...skipping 29 matching lines...) Expand all Loading... |
| 388 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 402 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 389 BinaryExpression, expression.leftOperand); | 403 BinaryExpression, expression.leftOperand); |
| 390 } | 404 } |
| 391 | 405 |
| 392 void test_ifNullExpression_precedence_logicalOr_left() { | 406 void test_ifNullExpression_precedence_logicalOr_left() { |
| 393 BinaryExpression expression = parseExpression('x || y ?? z'); | 407 BinaryExpression expression = parseExpression('x || y ?? z'); |
| 394 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 408 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 395 BinaryExpression, expression.leftOperand); | 409 BinaryExpression, expression.leftOperand); |
| 396 } | 410 } |
| 397 | 411 |
| 398 void test_ifNullExpression_precendce_logicalOr_right() { | 412 void test_ifNullExpression_precedence_logicalOr_right() { |
| 399 BinaryExpression expression = parseExpression('x ?? y || z'); | 413 BinaryExpression expression = parseExpression('x ?? y || z'); |
| 400 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 414 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 401 BinaryExpression, expression.rightOperand); | 415 BinaryExpression, expression.rightOperand); |
| 402 } | 416 } |
| 403 | 417 |
| 404 void test_logicalAndExpression() { | 418 void test_logicalAndExpression() { |
| 405 BinaryExpression expression = parseExpression("x && y && z"); | 419 BinaryExpression expression = parseExpression("x && y && z"); |
| 406 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 420 expect(expression.leftOperand, new isInstanceOf<BinaryExpression>()); |
| 407 BinaryExpression, expression.leftOperand); | |
| 408 } | 421 } |
| 409 | 422 |
| 410 void test_logicalAndExpression_precedence_bitwiseOr_left() { | 423 void test_logicalAndExpression_precedence_bitwiseOr_left() { |
| 411 BinaryExpression expression = parseExpression("x | y < z"); | 424 BinaryExpression expression = parseExpression("x | y < z"); |
| 412 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 425 expect(expression.leftOperand, new isInstanceOf<BinaryExpression>()); |
| 413 BinaryExpression, expression.leftOperand); | |
| 414 } | 426 } |
| 415 | 427 |
| 416 void test_logicalAndExpression_precedence_bitwiseOr_right() { | 428 void test_logicalAndExpression_precedence_bitwiseOr_right() { |
| 417 BinaryExpression expression = parseExpression("x < y | z"); | 429 BinaryExpression expression = parseExpression("x < y | z"); |
| 418 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 430 expect(expression.rightOperand, new isInstanceOf<BinaryExpression>()); |
| 419 BinaryExpression, expression.rightOperand); | 431 } |
| 432 |
| 433 void test_logicalAndExpression_precedence_nullableType() { |
| 434 enableNnbd = true; |
| 435 BinaryExpression expression = parseExpression("x is C? && y is D"); |
| 436 expect(expression.leftOperand, new isInstanceOf<IsExpression>()); |
| 437 expect(expression.rightOperand, new isInstanceOf<IsExpression>()); |
| 420 } | 438 } |
| 421 | 439 |
| 422 void test_logicalOrExpression() { | 440 void test_logicalOrExpression() { |
| 423 BinaryExpression expression = parseExpression("x || y || z"); | 441 BinaryExpression expression = parseExpression("x || y || z"); |
| 424 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 442 expect(expression.leftOperand, new isInstanceOf<BinaryExpression>()); |
| 425 BinaryExpression, expression.leftOperand); | |
| 426 } | 443 } |
| 427 | 444 |
| 428 void test_logicalOrExpression_precedence_logicalAnd_left() { | 445 void test_logicalOrExpression_precedence_logicalAnd_left() { |
| 429 BinaryExpression expression = parseExpression("x && y || z"); | 446 BinaryExpression expression = parseExpression("x && y || z"); |
| 430 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 447 expect(expression.leftOperand, new isInstanceOf<BinaryExpression>()); |
| 431 BinaryExpression, expression.leftOperand); | |
| 432 } | 448 } |
| 433 | 449 |
| 434 void test_logicalOrExpression_precedence_logicalAnd_right() { | 450 void test_logicalOrExpression_precedence_logicalAnd_right() { |
| 435 BinaryExpression expression = parseExpression("x || y && z"); | 451 BinaryExpression expression = parseExpression("x || y && z"); |
| 436 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, | 452 EngineTestCase.assertInstanceOf((obj) => obj is BinaryExpression, |
| 437 BinaryExpression, expression.rightOperand); | 453 BinaryExpression, expression.rightOperand); |
| 438 } | 454 } |
| 439 | 455 |
| 456 void test_logicalOrExpression_precedence_nullableType() { |
| 457 enableNnbd = true; |
| 458 BinaryExpression expression = parseExpression("a is X? || (b ? c : d)"); |
| 459 expect(expression.leftOperand, new isInstanceOf<IsExpression>()); |
| 460 expect( |
| 461 expression.rightOperand, new isInstanceOf<ParenthesizedExpression>()); |
| 462 expect((expression.rightOperand as ParenthesizedExpression).expression, |
| 463 new isInstanceOf<ConditionalExpression>()); |
| 464 } |
| 465 |
| 440 void test_multipleLabels_statement() { | 466 void test_multipleLabels_statement() { |
| 441 LabeledStatement statement = | 467 LabeledStatement statement = |
| 442 ParserTestCase.parseStatement("a: b: c: return x;"); | 468 ParserTestCase.parseStatement("a: b: c: return x;"); |
| 443 expect(statement.labels, hasLength(3)); | 469 expect(statement.labels, hasLength(3)); |
| 444 EngineTestCase.assertInstanceOf( | 470 EngineTestCase.assertInstanceOf( |
| 445 (obj) => obj is ReturnStatement, ReturnStatement, statement.statement); | 471 (obj) => obj is ReturnStatement, ReturnStatement, statement.statement); |
| 446 } | 472 } |
| 447 | 473 |
| 448 void test_multiplicativeExpression_normal() { | 474 void test_multiplicativeExpression_normal() { |
| 449 BinaryExpression expression = parseExpression("x * y / z"); | 475 BinaryExpression expression = parseExpression("x * y / z"); |
| (...skipping 1961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2411 */ | 2437 */ |
| 2412 bool enableGenericMethodComments = false; | 2438 bool enableGenericMethodComments = false; |
| 2413 | 2439 |
| 2414 /** | 2440 /** |
| 2415 * A flag indicating whether lazy assignment operators should be enabled for | 2441 * A flag indicating whether lazy assignment operators should be enabled for |
| 2416 * the test. | 2442 * the test. |
| 2417 */ | 2443 */ |
| 2418 bool enableLazyAssignmentOperators = false; | 2444 bool enableLazyAssignmentOperators = false; |
| 2419 | 2445 |
| 2420 /** | 2446 /** |
| 2447 * A flag indicating whether the parser is to parse the non-nullable modifier |
| 2448 * in type names. |
| 2449 */ |
| 2450 bool enableNnbd = false; |
| 2451 |
| 2452 /** |
| 2421 * Return a CommentAndMetadata object with the given values that can be used f
or testing. | 2453 * Return a CommentAndMetadata object with the given values that can be used f
or testing. |
| 2422 * | 2454 * |
| 2423 * @param comment the comment to be wrapped in the object | 2455 * @param comment the comment to be wrapped in the object |
| 2424 * @param annotations the annotations to be wrapped in the object | 2456 * @param annotations the annotations to be wrapped in the object |
| 2425 * @return a CommentAndMetadata object that can be used for testing | 2457 * @return a CommentAndMetadata object that can be used for testing |
| 2426 */ | 2458 */ |
| 2427 CommentAndMetadata commentAndMetadata(Comment comment, | 2459 CommentAndMetadata commentAndMetadata(Comment comment, |
| 2428 [List<Annotation> annotations]) { | 2460 [List<Annotation> annotations]) { |
| 2429 return new CommentAndMetadata(comment, annotations); | 2461 return new CommentAndMetadata(comment, annotations); |
| 2430 } | 2462 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2466 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 2498 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
| 2467 // | 2499 // |
| 2468 // Parse the source. | 2500 // Parse the source. |
| 2469 // | 2501 // |
| 2470 Parser parser = createParser(listener); | 2502 Parser parser = createParser(listener); |
| 2471 parser.enableAssertInitializer = enableAssertInitializer; | 2503 parser.enableAssertInitializer = enableAssertInitializer; |
| 2472 parser.parseAsync = parseAsync; | 2504 parser.parseAsync = parseAsync; |
| 2473 parser.parseGenericMethods = enableGenericMethods; | 2505 parser.parseGenericMethods = enableGenericMethods; |
| 2474 parser.parseGenericMethodComments = enableGenericMethodComments; | 2506 parser.parseGenericMethodComments = enableGenericMethodComments; |
| 2475 parser.parseFunctionBodies = parseFunctionBodies; | 2507 parser.parseFunctionBodies = parseFunctionBodies; |
| 2508 parser.enableNnbd = enableNnbd; |
| 2476 Object result = | 2509 Object result = |
| 2477 invokeParserMethodImpl(parser, methodName, objects, tokenStream); | 2510 invokeParserMethodImpl(parser, methodName, objects, tokenStream); |
| 2478 // | 2511 // |
| 2479 // Partially test the results. | 2512 // Partially test the results. |
| 2480 // | 2513 // |
| 2481 if (!listener.hasErrors) { | 2514 if (!listener.hasErrors) { |
| 2482 expect(result, isNotNull); | 2515 expect(result, isNotNull); |
| 2483 } | 2516 } |
| 2484 return result; | 2517 return result; |
| 2485 } | 2518 } |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2596 Scanner scanner = | 2629 Scanner scanner = |
| 2597 new Scanner(null, new CharSequenceReader(source), listener); | 2630 new Scanner(null, new CharSequenceReader(source), listener); |
| 2598 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 2631 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
| 2599 Token token = scanner.tokenize(); | 2632 Token token = scanner.tokenize(); |
| 2600 Parser parser = createParser(listener); | 2633 Parser parser = createParser(listener); |
| 2601 parser.enableAssertInitializer = enableAssertInitializer; | 2634 parser.enableAssertInitializer = enableAssertInitializer; |
| 2602 parser.parseAsync = parseAsync; | 2635 parser.parseAsync = parseAsync; |
| 2603 parser.parseFunctionBodies = parseFunctionBodies; | 2636 parser.parseFunctionBodies = parseFunctionBodies; |
| 2604 parser.parseGenericMethods = enableGenericMethods; | 2637 parser.parseGenericMethods = enableGenericMethods; |
| 2605 parser.parseGenericMethodComments = enableGenericMethodComments; | 2638 parser.parseGenericMethodComments = enableGenericMethodComments; |
| 2639 parser.enableNnbd = enableNnbd; |
| 2606 CompilationUnit unit = parser.parseCompilationUnit(token); | 2640 CompilationUnit unit = parser.parseCompilationUnit(token); |
| 2607 expect(unit, isNotNull); | 2641 expect(unit, isNotNull); |
| 2608 listener.assertErrorsWithCodes(errorCodes); | 2642 listener.assertErrorsWithCodes(errorCodes); |
| 2609 return unit; | 2643 return unit; |
| 2610 } | 2644 } |
| 2611 | 2645 |
| 2612 /** | 2646 /** |
| 2613 * Parse the given source as an expression. | 2647 * Parse the given source as an expression. |
| 2614 * | 2648 * |
| 2615 * @param source the source to be parsed | 2649 * @param source the source to be parsed |
| 2616 * @param errorCodes the error codes of the errors that are expected to be fou
nd | 2650 * @param errorCodes the error codes of the errors that are expected to be fou
nd |
| 2617 * @return the expression that was parsed | 2651 * @return the expression that was parsed |
| 2618 * @throws Exception if the source could not be parsed, if the compilation err
ors in the source do | 2652 * @throws Exception if the source could not be parsed, if the compilation err
ors in the source do |
| 2619 * not match those that are expected, or if the result would have be
en `null` | 2653 * not match those that are expected, or if the result would have be
en `null` |
| 2620 */ | 2654 */ |
| 2621 Expression parseExpression(String source, | 2655 Expression parseExpression(String source, |
| 2622 [List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { | 2656 [List<ErrorCode> errorCodes = ErrorCode.EMPTY_LIST]) { |
| 2623 GatheringErrorListener listener = new GatheringErrorListener(); | 2657 GatheringErrorListener listener = new GatheringErrorListener(); |
| 2624 Scanner scanner = | 2658 Scanner scanner = |
| 2625 new Scanner(null, new CharSequenceReader(source), listener); | 2659 new Scanner(null, new CharSequenceReader(source), listener); |
| 2626 scanner.scanGenericMethodComments = enableGenericMethodComments; | 2660 scanner.scanGenericMethodComments = enableGenericMethodComments; |
| 2627 listener.setLineInfo(new TestSource(), scanner.lineStarts); | 2661 listener.setLineInfo(new TestSource(), scanner.lineStarts); |
| 2628 Token token = scanner.tokenize(); | 2662 Token token = scanner.tokenize(); |
| 2629 Parser parser = createParser(listener); | 2663 Parser parser = createParser(listener); |
| 2630 parser.parseGenericMethods = enableGenericMethods; | 2664 parser.parseGenericMethods = enableGenericMethods; |
| 2631 parser.parseGenericMethodComments = enableGenericMethodComments; | 2665 parser.parseGenericMethodComments = enableGenericMethodComments; |
| 2666 parser.enableNnbd = enableNnbd; |
| 2632 Expression expression = parser.parseExpression(token); | 2667 Expression expression = parser.parseExpression(token); |
| 2633 expect(expression, isNotNull); | 2668 expect(expression, isNotNull); |
| 2634 listener.assertErrorsWithCodes(errorCodes); | 2669 listener.assertErrorsWithCodes(errorCodes); |
| 2635 return expression; | 2670 return expression; |
| 2636 } | 2671 } |
| 2637 | 2672 |
| 2638 @override | 2673 @override |
| 2639 void setUp() { | 2674 void setUp() { |
| 2640 super.setUp(); | 2675 super.setUp(); |
| 2641 parseFunctionBodies = true; | 2676 parseFunctionBodies = true; |
| (...skipping 6447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9089 | 9124 |
| 9090 void test_parseNormalFormalParameter_function_noType() { | 9125 void test_parseNormalFormalParameter_function_noType() { |
| 9091 FunctionTypedFormalParameter parameter = | 9126 FunctionTypedFormalParameter parameter = |
| 9092 parse4("parseNormalFormalParameter", "a())"); | 9127 parse4("parseNormalFormalParameter", "a())"); |
| 9093 expect(parameter.returnType, isNull); | 9128 expect(parameter.returnType, isNull); |
| 9094 expect(parameter.identifier, isNotNull); | 9129 expect(parameter.identifier, isNotNull); |
| 9095 expect(parameter.typeParameters, isNull); | 9130 expect(parameter.typeParameters, isNull); |
| 9096 expect(parameter.parameters, isNotNull); | 9131 expect(parameter.parameters, isNotNull); |
| 9097 } | 9132 } |
| 9098 | 9133 |
| 9134 void test_parseNormalFormalParameter_function_noType_nullable() { |
| 9135 enableNnbd = true; |
| 9136 FunctionTypedFormalParameter parameter = |
| 9137 parse4("parseNormalFormalParameter", "a()?)"); |
| 9138 expect(parameter.returnType, isNull); |
| 9139 expect(parameter.identifier, isNotNull); |
| 9140 expect(parameter.typeParameters, isNull); |
| 9141 expect(parameter.parameters, isNotNull); |
| 9142 expect(parameter.question, isNotNull); |
| 9143 } |
| 9144 |
| 9099 void test_parseNormalFormalParameter_function_noType_typeParameterComments() { | 9145 void test_parseNormalFormalParameter_function_noType_typeParameterComments() { |
| 9100 enableGenericMethodComments = true; | 9146 enableGenericMethodComments = true; |
| 9101 FunctionTypedFormalParameter parameter = | 9147 FunctionTypedFormalParameter parameter = |
| 9102 parse4("parseNormalFormalParameter", "a/*<E>*/())"); | 9148 parse4("parseNormalFormalParameter", "a/*<E>*/())"); |
| 9103 expect(parameter.returnType, isNull); | 9149 expect(parameter.returnType, isNull); |
| 9104 expect(parameter.identifier, isNotNull); | 9150 expect(parameter.identifier, isNotNull); |
| 9105 expect(parameter.typeParameters, isNotNull); | 9151 expect(parameter.typeParameters, isNotNull); |
| 9106 expect(parameter.parameters, isNotNull); | 9152 expect(parameter.parameters, isNotNull); |
| 9107 } | 9153 } |
| 9108 | 9154 |
| 9109 void test_parseNormalFormalParameter_function_noType_typeParameters() { | 9155 void test_parseNormalFormalParameter_function_noType_typeParameters() { |
| 9110 enableGenericMethods = true; | 9156 enableGenericMethods = true; |
| 9111 FunctionTypedFormalParameter parameter = | 9157 FunctionTypedFormalParameter parameter = |
| 9112 parse4("parseNormalFormalParameter", "a<E>())"); | 9158 parse4("parseNormalFormalParameter", "a<E>())"); |
| 9113 expect(parameter.returnType, isNull); | 9159 expect(parameter.returnType, isNull); |
| 9114 expect(parameter.identifier, isNotNull); | 9160 expect(parameter.identifier, isNotNull); |
| 9115 expect(parameter.typeParameters, isNotNull); | 9161 expect(parameter.typeParameters, isNotNull); |
| 9116 expect(parameter.parameters, isNotNull); | 9162 expect(parameter.parameters, isNotNull); |
| 9163 expect(parameter.question, isNull); |
| 9164 expect(parameter.question, isNull); |
| 9165 } |
| 9166 |
| 9167 void |
| 9168 test_parseNormalFormalParameter_function_noType_typeParameters_nullable()
{ |
| 9169 enableGenericMethods = true; |
| 9170 enableNnbd = true; |
| 9171 FunctionTypedFormalParameter parameter = |
| 9172 parse4("parseNormalFormalParameter", "a<E>()?)"); |
| 9173 expect(parameter.returnType, isNull); |
| 9174 expect(parameter.identifier, isNotNull); |
| 9175 expect(parameter.typeParameters, isNotNull); |
| 9176 expect(parameter.parameters, isNotNull); |
| 9177 expect(parameter.question, isNotNull); |
| 9117 } | 9178 } |
| 9118 | 9179 |
| 9119 void test_parseNormalFormalParameter_function_type() { | 9180 void test_parseNormalFormalParameter_function_type() { |
| 9120 FunctionTypedFormalParameter parameter = | 9181 FunctionTypedFormalParameter parameter = |
| 9121 parse4("parseNormalFormalParameter", "A a())"); | 9182 parse4("parseNormalFormalParameter", "A a())"); |
| 9122 expect(parameter.returnType, isNotNull); | 9183 expect(parameter.returnType, isNotNull); |
| 9123 expect(parameter.identifier, isNotNull); | 9184 expect(parameter.identifier, isNotNull); |
| 9124 expect(parameter.typeParameters, isNull); | 9185 expect(parameter.typeParameters, isNull); |
| 9125 expect(parameter.parameters, isNotNull); | 9186 expect(parameter.parameters, isNotNull); |
| 9187 expect(parameter.question, isNull); |
| 9188 } |
| 9189 |
| 9190 void test_parseNormalFormalParameter_function_type_nullable() { |
| 9191 enableNnbd = true; |
| 9192 FunctionTypedFormalParameter parameter = |
| 9193 parse4("parseNormalFormalParameter", "A a()?)"); |
| 9194 expect(parameter.returnType, isNotNull); |
| 9195 expect(parameter.identifier, isNotNull); |
| 9196 expect(parameter.typeParameters, isNull); |
| 9197 expect(parameter.parameters, isNotNull); |
| 9198 expect(parameter.question, isNotNull); |
| 9126 } | 9199 } |
| 9127 | 9200 |
| 9128 void test_parseNormalFormalParameter_function_type_typeParameterComments() { | 9201 void test_parseNormalFormalParameter_function_type_typeParameterComments() { |
| 9129 enableGenericMethodComments = true; | 9202 enableGenericMethodComments = true; |
| 9130 FunctionTypedFormalParameter parameter = | 9203 FunctionTypedFormalParameter parameter = |
| 9131 parse4("parseNormalFormalParameter", "A a/*<E>*/())"); | 9204 parse4("parseNormalFormalParameter", "A a/*<E>*/())"); |
| 9132 expect(parameter.returnType, isNotNull); | 9205 expect(parameter.returnType, isNotNull); |
| 9133 expect(parameter.identifier, isNotNull); | 9206 expect(parameter.identifier, isNotNull); |
| 9134 expect(parameter.typeParameters, isNotNull); | 9207 expect(parameter.typeParameters, isNotNull); |
| 9135 expect(parameter.parameters, isNotNull); | 9208 expect(parameter.parameters, isNotNull); |
| 9209 expect(parameter.question, isNull); |
| 9136 } | 9210 } |
| 9137 | 9211 |
| 9138 void test_parseNormalFormalParameter_function_type_typeParameters() { | 9212 void test_parseNormalFormalParameter_function_type_typeParameters() { |
| 9139 enableGenericMethods = true; | 9213 enableGenericMethods = true; |
| 9140 FunctionTypedFormalParameter parameter = | 9214 FunctionTypedFormalParameter parameter = |
| 9141 parse4("parseNormalFormalParameter", "A a<E>())"); | 9215 parse4("parseNormalFormalParameter", "A a<E>())"); |
| 9142 expect(parameter.returnType, isNotNull); | 9216 expect(parameter.returnType, isNotNull); |
| 9143 expect(parameter.identifier, isNotNull); | 9217 expect(parameter.identifier, isNotNull); |
| 9144 expect(parameter.typeParameters, isNotNull); | 9218 expect(parameter.typeParameters, isNotNull); |
| 9145 expect(parameter.parameters, isNotNull); | 9219 expect(parameter.parameters, isNotNull); |
| 9220 expect(parameter.question, isNull); |
| 9221 } |
| 9222 |
| 9223 void test_parseNormalFormalParameter_function_type_typeParameters_nullable() { |
| 9224 enableGenericMethods = true; |
| 9225 enableNnbd = true; |
| 9226 FunctionTypedFormalParameter parameter = |
| 9227 parse4("parseNormalFormalParameter", "A a<E>()?)"); |
| 9228 expect(parameter.returnType, isNotNull); |
| 9229 expect(parameter.identifier, isNotNull); |
| 9230 expect(parameter.typeParameters, isNotNull); |
| 9231 expect(parameter.parameters, isNotNull); |
| 9232 expect(parameter.question, isNotNull); |
| 9146 } | 9233 } |
| 9147 | 9234 |
| 9148 void test_parseNormalFormalParameter_function_void() { | 9235 void test_parseNormalFormalParameter_function_void() { |
| 9149 FunctionTypedFormalParameter parameter = | 9236 FunctionTypedFormalParameter parameter = |
| 9150 parse4("parseNormalFormalParameter", "void a())"); | 9237 parse4("parseNormalFormalParameter", "void a())"); |
| 9151 expect(parameter.returnType, isNotNull); | 9238 expect(parameter.returnType, isNotNull); |
| 9152 expect(parameter.identifier, isNotNull); | 9239 expect(parameter.identifier, isNotNull); |
| 9153 expect(parameter.typeParameters, isNull); | 9240 expect(parameter.typeParameters, isNull); |
| 9154 expect(parameter.parameters, isNotNull); | 9241 expect(parameter.parameters, isNotNull); |
| 9242 expect(parameter.question, isNull); |
| 9243 } |
| 9244 |
| 9245 void test_parseNormalFormalParameter_function_void_nullable() { |
| 9246 enableNnbd = true; |
| 9247 FunctionTypedFormalParameter parameter = |
| 9248 parse4("parseNormalFormalParameter", "void a()?)"); |
| 9249 expect(parameter.returnType, isNotNull); |
| 9250 expect(parameter.identifier, isNotNull); |
| 9251 expect(parameter.typeParameters, isNull); |
| 9252 expect(parameter.parameters, isNotNull); |
| 9253 expect(parameter.question, isNotNull); |
| 9155 } | 9254 } |
| 9156 | 9255 |
| 9157 void test_parseNormalFormalParameter_function_void_typeParameterComments() { | 9256 void test_parseNormalFormalParameter_function_void_typeParameterComments() { |
| 9158 enableGenericMethodComments = true; | 9257 enableGenericMethodComments = true; |
| 9159 FunctionTypedFormalParameter parameter = | 9258 FunctionTypedFormalParameter parameter = |
| 9160 parse4("parseNormalFormalParameter", "void a/*<E>*/())"); | 9259 parse4("parseNormalFormalParameter", "void a/*<E>*/())"); |
| 9161 expect(parameter.returnType, isNotNull); | 9260 expect(parameter.returnType, isNotNull); |
| 9162 expect(parameter.identifier, isNotNull); | 9261 expect(parameter.identifier, isNotNull); |
| 9163 expect(parameter.typeParameters, isNotNull); | 9262 expect(parameter.typeParameters, isNotNull); |
| 9164 expect(parameter.parameters, isNotNull); | 9263 expect(parameter.parameters, isNotNull); |
| 9264 expect(parameter.question, isNull); |
| 9165 } | 9265 } |
| 9166 | 9266 |
| 9167 void test_parseNormalFormalParameter_function_void_typeParameters() { | 9267 void test_parseNormalFormalParameter_function_void_typeParameters() { |
| 9168 enableGenericMethods = true; | 9268 enableGenericMethods = true; |
| 9169 FunctionTypedFormalParameter parameter = | 9269 FunctionTypedFormalParameter parameter = |
| 9170 parse4("parseNormalFormalParameter", "void a<E>())"); | 9270 parse4("parseNormalFormalParameter", "void a<E>())"); |
| 9171 expect(parameter.returnType, isNotNull); | 9271 expect(parameter.returnType, isNotNull); |
| 9172 expect(parameter.identifier, isNotNull); | 9272 expect(parameter.identifier, isNotNull); |
| 9173 expect(parameter.typeParameters, isNotNull); | 9273 expect(parameter.typeParameters, isNotNull); |
| 9174 expect(parameter.parameters, isNotNull); | 9274 expect(parameter.parameters, isNotNull); |
| 9275 expect(parameter.question, isNull); |
| 9276 } |
| 9277 |
| 9278 void test_parseNormalFormalParameter_function_void_typeParameters_nullable() { |
| 9279 enableGenericMethods = true; |
| 9280 enableNnbd = true; |
| 9281 FunctionTypedFormalParameter parameter = |
| 9282 parse4("parseNormalFormalParameter", "void a<E>()?)"); |
| 9283 expect(parameter.returnType, isNotNull); |
| 9284 expect(parameter.identifier, isNotNull); |
| 9285 expect(parameter.typeParameters, isNotNull); |
| 9286 expect(parameter.parameters, isNotNull); |
| 9287 expect(parameter.question, isNotNull); |
| 9175 } | 9288 } |
| 9176 | 9289 |
| 9177 void test_parseNormalFormalParameter_simple_const_noType() { | 9290 void test_parseNormalFormalParameter_simple_const_noType() { |
| 9178 SimpleFormalParameter parameter = | 9291 SimpleFormalParameter parameter = |
| 9179 parse4("parseNormalFormalParameter", "const a)"); | 9292 parse4("parseNormalFormalParameter", "const a)"); |
| 9180 expect(parameter.keyword, isNotNull); | 9293 expect(parameter.keyword, isNotNull); |
| 9181 expect(parameter.type, isNull); | 9294 expect(parameter.type, isNull); |
| 9182 expect(parameter.identifier, isNotNull); | 9295 expect(parameter.identifier, isNotNull); |
| 9183 } | 9296 } |
| 9184 | 9297 |
| (...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10365 TypeArgumentList argumentList = parse4("parseTypeArgumentList", "<int>"); | 10478 TypeArgumentList argumentList = parse4("parseTypeArgumentList", "<int>"); |
| 10366 expect(argumentList.leftBracket, isNotNull); | 10479 expect(argumentList.leftBracket, isNotNull); |
| 10367 expect(argumentList.arguments, hasLength(1)); | 10480 expect(argumentList.arguments, hasLength(1)); |
| 10368 expect(argumentList.rightBracket, isNotNull); | 10481 expect(argumentList.rightBracket, isNotNull); |
| 10369 } | 10482 } |
| 10370 | 10483 |
| 10371 void test_parseTypeName_parameterized() { | 10484 void test_parseTypeName_parameterized() { |
| 10372 TypeName typeName = parse4("parseTypeName", "List<int>"); | 10485 TypeName typeName = parse4("parseTypeName", "List<int>"); |
| 10373 expect(typeName.name, isNotNull); | 10486 expect(typeName.name, isNotNull); |
| 10374 expect(typeName.typeArguments, isNotNull); | 10487 expect(typeName.typeArguments, isNotNull); |
| 10488 expect(typeName.question, isNull); |
| 10489 } |
| 10490 |
| 10491 void test_parseTypeName_parameterized_nullable() { |
| 10492 enableNnbd = true; |
| 10493 TypeName typeName = parse4("parseTypeName", "List<int>?"); |
| 10494 expect(typeName.name, isNotNull); |
| 10495 expect(typeName.typeArguments, isNotNull); |
| 10496 expect(typeName.question, isNotNull); |
| 10375 } | 10497 } |
| 10376 | 10498 |
| 10377 void test_parseTypeName_simple() { | 10499 void test_parseTypeName_simple() { |
| 10378 TypeName typeName = parse4("parseTypeName", "int"); | 10500 TypeName typeName = parse4("parseTypeName", "int"); |
| 10379 expect(typeName.name, isNotNull); | 10501 expect(typeName.name, isNotNull); |
| 10380 expect(typeName.typeArguments, isNull); | 10502 expect(typeName.typeArguments, isNull); |
| 10503 expect(typeName.question, isNull); |
| 10504 } |
| 10505 |
| 10506 void test_parseTypeName_simple_nullable() { |
| 10507 enableNnbd = true; |
| 10508 TypeName typeName = parse4("parseTypeName", "String?"); |
| 10509 expect(typeName.name, isNotNull); |
| 10510 expect(typeName.typeArguments, isNull); |
| 10511 expect(typeName.question, isNotNull); |
| 10381 } | 10512 } |
| 10382 | 10513 |
| 10383 void test_parseTypeParameter_bounded() { | 10514 void test_parseTypeParameter_bounded() { |
| 10384 TypeParameter parameter = parse4("parseTypeParameter", "A extends B"); | 10515 TypeParameter parameter = parse4("parseTypeParameter", "A extends B"); |
| 10385 expect(parameter.bound, isNotNull); | 10516 expect(parameter.bound, isNotNull); |
| 10386 expect(parameter.extendsKeyword, isNotNull); | 10517 expect(parameter.extendsKeyword, isNotNull); |
| 10387 expect(parameter.name, isNotNull); | 10518 expect(parameter.name, isNotNull); |
| 10388 } | 10519 } |
| 10389 | 10520 |
| 10390 void test_parseTypeParameter_simple() { | 10521 void test_parseTypeParameter_simple() { |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11006 new Scanner(null, new CharSequenceReader(source), listener); | 11137 new Scanner(null, new CharSequenceReader(source), listener); |
| 11007 Token tokenStream = scanner.tokenize(); | 11138 Token tokenStream = scanner.tokenize(); |
| 11008 // | 11139 // |
| 11009 // Parse the source. | 11140 // Parse the source. |
| 11010 // | 11141 // |
| 11011 Parser parser = new Parser(null, listener); | 11142 Parser parser = new Parser(null, listener); |
| 11012 return invokeParserMethodImpl( | 11143 return invokeParserMethodImpl( |
| 11013 parser, methodName, <Object>[tokenStream], tokenStream) as Token; | 11144 parser, methodName, <Object>[tokenStream], tokenStream) as Token; |
| 11014 } | 11145 } |
| 11015 } | 11146 } |
| OLD | NEW |