| 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.dart.element.builder_test; | 5 library analyzer.test.dart.element.builder_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/standard_ast_factory.dart'; | 8 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
| 9 import 'package:analyzer/dart/ast/token.dart'; | 9 import 'package:analyzer/dart/ast/token.dart'; |
| 10 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 expect(parameter, isNotNull); | 440 expect(parameter, isNotNull); |
| 441 expect(parameter.name, parameterName); | 441 expect(parameter.name, parameterName); |
| 442 expect(parameter.initializer, isNull); | 442 expect(parameter.initializer, isNull); |
| 443 expect(parameter.isConst, isFalse); | 443 expect(parameter.isConst, isFalse); |
| 444 expect(parameter.isFinal, isFalse); | 444 expect(parameter.isFinal, isFalse); |
| 445 expect(parameter.isSynthetic, isFalse); | 445 expect(parameter.isSynthetic, isFalse); |
| 446 expect(parameter.parameterKind, ParameterKind.REQUIRED); | 446 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
| 447 _assertVisibleRange(parameter, 100, 110); | 447 _assertVisibleRange(parameter, 100, 110); |
| 448 } | 448 } |
| 449 | 449 |
| 450 void test_visitFunctionTypedFormalParameter_covariant() { |
| 451 ElementHolder holder = new ElementHolder(); |
| 452 ElementBuilder builder = _makeBuilder(holder); |
| 453 String parameterName = "p"; |
| 454 FunctionTypedFormalParameterImpl formalParameter = |
| 455 AstTestFactory.functionTypedFormalParameter(null, parameterName); |
| 456 formalParameter.covariantKeyword = |
| 457 TokenFactory.tokenFromKeyword(Keyword.COVARIANT); |
| 458 _useParameterInMethod(formalParameter, 100, 110); |
| 459 formalParameter.accept(builder); |
| 460 List<ParameterElement> parameters = holder.parameters; |
| 461 expect(parameters, hasLength(1)); |
| 462 ParameterElementImpl parameter = parameters[0]; |
| 463 expect(parameter, isNotNull); |
| 464 expect(parameter.name, parameterName); |
| 465 expect(parameter.initializer, isNull); |
| 466 expect(parameter.isConst, isFalse); |
| 467 expect(parameter.isExplicitlyCovariant, isTrue); |
| 468 expect(parameter.isFinal, isFalse); |
| 469 expect(parameter.isSynthetic, isFalse); |
| 470 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
| 471 _assertVisibleRange(parameter, 100, 110); |
| 472 } |
| 473 |
| 450 void test_visitFunctionTypedFormalParameter_withTypeParameters() { | 474 void test_visitFunctionTypedFormalParameter_withTypeParameters() { |
| 451 ElementHolder holder = new ElementHolder(); | 475 ElementHolder holder = new ElementHolder(); |
| 452 ElementBuilder builder = _makeBuilder(holder); | 476 ElementBuilder builder = _makeBuilder(holder); |
| 453 String parameterName = "p"; | 477 String parameterName = "p"; |
| 454 FunctionTypedFormalParameter formalParameter = | 478 FunctionTypedFormalParameter formalParameter = |
| 455 AstTestFactory.functionTypedFormalParameter(null, parameterName); | 479 AstTestFactory.functionTypedFormalParameter(null, parameterName); |
| 456 formalParameter.typeParameters = AstTestFactory.typeParameterList(['F']); | 480 formalParameter.typeParameters = AstTestFactory.typeParameterList(['F']); |
| 457 _useParameterInMethod(formalParameter, 100, 110); | 481 _useParameterInMethod(formalParameter, 100, 110); |
| 458 formalParameter.accept(builder); | 482 formalParameter.accept(builder); |
| 459 List<ParameterElement> parameters = holder.parameters; | 483 List<ParameterElement> parameters = holder.parameters; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 expect(parameter.isSynthetic, isFalse); | 569 expect(parameter.isSynthetic, isFalse); |
| 546 expect(parameter.parameterKind, ParameterKind.NAMED); | 570 expect(parameter.parameterKind, ParameterKind.NAMED); |
| 547 _assertVisibleRange(parameter, 100, 110); | 571 _assertVisibleRange(parameter, 100, 110); |
| 548 expect(parameter.defaultValueCode, "42"); | 572 expect(parameter.defaultValueCode, "42"); |
| 549 FunctionElement initializer = parameter.initializer; | 573 FunctionElement initializer = parameter.initializer; |
| 550 expect(initializer, isNotNull); | 574 expect(initializer, isNotNull); |
| 551 expect(initializer.isSynthetic, isTrue); | 575 expect(initializer.isSynthetic, isTrue); |
| 552 expect(initializer.hasImplicitReturnType, isTrue); | 576 expect(initializer.hasImplicitReturnType, isTrue); |
| 553 } | 577 } |
| 554 | 578 |
| 579 void test_visitNamedFormalParameter_covariant() { |
| 580 ElementHolder holder = new ElementHolder(); |
| 581 ElementBuilder builder = _makeBuilder(holder); |
| 582 String parameterName = "p"; |
| 583 DefaultFormalParameter formalParameter = |
| 584 AstTestFactory.namedFormalParameter( |
| 585 AstTestFactory.simpleFormalParameter3(parameterName), |
| 586 AstTestFactory.identifier3("42")); |
| 587 (formalParameter.parameter as NormalFormalParameterImpl).covariantKeyword = |
| 588 TokenFactory.tokenFromKeyword(Keyword.COVARIANT); |
| 589 _useParameterInMethod(formalParameter, 100, 110); |
| 590 formalParameter.beginToken.offset = 50; |
| 591 formalParameter.endToken.offset = 80; |
| 592 formalParameter.accept(builder); |
| 593 List<ParameterElement> parameters = holder.parameters; |
| 594 expect(parameters, hasLength(1)); |
| 595 ParameterElementImpl parameter = parameters[0]; |
| 596 expect(parameter, isNotNull); |
| 597 assertHasCodeRange(parameter, 50, 32); |
| 598 expect(parameter.name, parameterName); |
| 599 expect(parameter.isConst, isFalse); |
| 600 expect(parameter.isExplicitlyCovariant, isTrue); |
| 601 expect(parameter.isFinal, isFalse); |
| 602 expect(parameter.isSynthetic, isFalse); |
| 603 expect(parameter.parameterKind, ParameterKind.NAMED); |
| 604 _assertVisibleRange(parameter, 100, 110); |
| 605 expect(parameter.defaultValueCode, "42"); |
| 606 FunctionElement initializer = parameter.initializer; |
| 607 expect(initializer, isNotNull); |
| 608 expect(initializer.isSynthetic, isTrue); |
| 609 expect(initializer.hasImplicitReturnType, isTrue); |
| 610 } |
| 611 |
| 555 void test_visitSimpleFormalParameter_noType() { | 612 void test_visitSimpleFormalParameter_noType() { |
| 556 // p | 613 // p |
| 557 ElementHolder holder = new ElementHolder(); | 614 ElementHolder holder = new ElementHolder(); |
| 558 ElementBuilder builder = _makeBuilder(holder); | 615 ElementBuilder builder = _makeBuilder(holder); |
| 559 String parameterName = "p"; | 616 String parameterName = "p"; |
| 560 SimpleFormalParameter formalParameter = | 617 SimpleFormalParameter formalParameter = |
| 561 AstTestFactory.simpleFormalParameter3(parameterName); | 618 AstTestFactory.simpleFormalParameter3(parameterName); |
| 562 _useParameterInMethod(formalParameter, 100, 110); | 619 _useParameterInMethod(formalParameter, 100, 110); |
| 563 formalParameter.accept(builder); | 620 formalParameter.accept(builder); |
| 564 List<ParameterElement> parameters = holder.parameters; | 621 List<ParameterElement> parameters = holder.parameters; |
| 565 expect(parameters, hasLength(1)); | 622 expect(parameters, hasLength(1)); |
| 566 ParameterElement parameter = parameters[0]; | 623 ParameterElement parameter = parameters[0]; |
| 567 expect(parameter, isNotNull); | 624 expect(parameter, isNotNull); |
| 568 expect(parameter.hasImplicitType, isTrue); | 625 expect(parameter.hasImplicitType, isTrue); |
| 569 expect(parameter.initializer, isNull); | 626 expect(parameter.initializer, isNull); |
| 570 expect(parameter.isConst, isFalse); | 627 expect(parameter.isConst, isFalse); |
| 571 expect(parameter.isFinal, isFalse); | 628 expect(parameter.isFinal, isFalse); |
| 572 expect(parameter.isSynthetic, isFalse); | 629 expect(parameter.isSynthetic, isFalse); |
| 573 expect(parameter.name, parameterName); | 630 expect(parameter.name, parameterName); |
| 574 expect(parameter.parameterKind, ParameterKind.REQUIRED); | 631 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
| 575 _assertVisibleRange(parameter, 100, 110); | 632 _assertVisibleRange(parameter, 100, 110); |
| 576 } | 633 } |
| 577 | 634 |
| 635 void test_visitSimpleFormalParameter_noType_covariant() { |
| 636 // p |
| 637 ElementHolder holder = new ElementHolder(); |
| 638 ElementBuilder builder = _makeBuilder(holder); |
| 639 String parameterName = "p"; |
| 640 SimpleFormalParameterImpl formalParameter = |
| 641 AstTestFactory.simpleFormalParameter3(parameterName); |
| 642 formalParameter.covariantKeyword = |
| 643 TokenFactory.tokenFromKeyword(Keyword.COVARIANT); |
| 644 _useParameterInMethod(formalParameter, 100, 110); |
| 645 formalParameter.accept(builder); |
| 646 List<ParameterElement> parameters = holder.parameters; |
| 647 expect(parameters, hasLength(1)); |
| 648 ParameterElementImpl parameter = parameters[0]; |
| 649 expect(parameter, isNotNull); |
| 650 expect(parameter.hasImplicitType, isTrue); |
| 651 expect(parameter.initializer, isNull); |
| 652 expect(parameter.isConst, isFalse); |
| 653 expect(parameter.isExplicitlyCovariant, isTrue); |
| 654 expect(parameter.isFinal, isFalse); |
| 655 expect(parameter.isSynthetic, isFalse); |
| 656 expect(parameter.name, parameterName); |
| 657 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
| 658 _assertVisibleRange(parameter, 100, 110); |
| 659 } |
| 660 |
| 578 void test_visitSimpleFormalParameter_type() { | 661 void test_visitSimpleFormalParameter_type() { |
| 579 // T p | 662 // T p |
| 580 ElementHolder holder = new ElementHolder(); | 663 ElementHolder holder = new ElementHolder(); |
| 581 ElementBuilder builder = _makeBuilder(holder); | 664 ElementBuilder builder = _makeBuilder(holder); |
| 582 String parameterName = "p"; | 665 String parameterName = "p"; |
| 583 SimpleFormalParameter formalParameter = AstTestFactory | 666 SimpleFormalParameter formalParameter = AstTestFactory |
| 584 .simpleFormalParameter4(AstTestFactory.typeName4('T'), parameterName); | 667 .simpleFormalParameter4(AstTestFactory.typeName4('T'), parameterName); |
| 585 _useParameterInMethod(formalParameter, 100, 110); | 668 _useParameterInMethod(formalParameter, 100, 110); |
| 586 formalParameter.accept(builder); | 669 formalParameter.accept(builder); |
| 587 List<ParameterElement> parameters = holder.parameters; | 670 List<ParameterElement> parameters = holder.parameters; |
| 588 expect(parameters, hasLength(1)); | 671 expect(parameters, hasLength(1)); |
| 589 ParameterElement parameter = parameters[0]; | 672 ParameterElement parameter = parameters[0]; |
| 590 expect(parameter, isNotNull); | 673 expect(parameter, isNotNull); |
| 591 expect(parameter.hasImplicitType, isFalse); | 674 expect(parameter.hasImplicitType, isFalse); |
| 592 expect(parameter.initializer, isNull); | 675 expect(parameter.initializer, isNull); |
| 593 expect(parameter.isConst, isFalse); | 676 expect(parameter.isConst, isFalse); |
| 594 expect(parameter.isFinal, isFalse); | 677 expect(parameter.isFinal, isFalse); |
| 595 expect(parameter.isSynthetic, isFalse); | 678 expect(parameter.isSynthetic, isFalse); |
| 596 expect(parameter.name, parameterName); | 679 expect(parameter.name, parameterName); |
| 597 expect(parameter.parameterKind, ParameterKind.REQUIRED); | 680 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
| 598 _assertVisibleRange(parameter, 100, 110); | 681 _assertVisibleRange(parameter, 100, 110); |
| 599 } | 682 } |
| 600 | 683 |
| 684 void test_visitSimpleFormalParameter_type_covariant() { |
| 685 // T p |
| 686 ElementHolder holder = new ElementHolder(); |
| 687 ElementBuilder builder = _makeBuilder(holder); |
| 688 String parameterName = "p"; |
| 689 SimpleFormalParameterImpl formalParameter = AstTestFactory |
| 690 .simpleFormalParameter4(AstTestFactory.typeName4('T'), parameterName); |
| 691 formalParameter.covariantKeyword = |
| 692 TokenFactory.tokenFromKeyword(Keyword.COVARIANT); |
| 693 _useParameterInMethod(formalParameter, 100, 110); |
| 694 formalParameter.accept(builder); |
| 695 List<ParameterElement> parameters = holder.parameters; |
| 696 expect(parameters, hasLength(1)); |
| 697 ParameterElementImpl parameter = parameters[0]; |
| 698 expect(parameter, isNotNull); |
| 699 expect(parameter.hasImplicitType, isFalse); |
| 700 expect(parameter.initializer, isNull); |
| 701 expect(parameter.isConst, isFalse); |
| 702 expect(parameter.isExplicitlyCovariant, isTrue); |
| 703 expect(parameter.isFinal, isFalse); |
| 704 expect(parameter.isSynthetic, isFalse); |
| 705 expect(parameter.name, parameterName); |
| 706 expect(parameter.parameterKind, ParameterKind.REQUIRED); |
| 707 _assertVisibleRange(parameter, 100, 110); |
| 708 } |
| 709 |
| 710 void test_visitVariableDeclaration_field_covariant() { |
| 711 // covariant int f; |
| 712 ElementHolder holder = new ElementHolder(); |
| 713 ElementBuilder builder = _makeBuilder(holder); |
| 714 String fieldName = "f"; |
| 715 VariableDeclarationImpl variableDeclaration = |
| 716 AstTestFactory.variableDeclaration2(fieldName, null); |
| 717 FieldDeclarationImpl fieldDeclaration = AstTestFactory.fieldDeclaration( |
| 718 false, |
| 719 null, |
| 720 AstTestFactory.typeName4('int'), |
| 721 <VariableDeclaration>[variableDeclaration]); |
| 722 fieldDeclaration.covariantKeyword = |
| 723 TokenFactory.tokenFromKeyword(Keyword.COVARIANT); |
| 724 variableDeclaration.accept(builder); |
| 725 |
| 726 List<FieldElement> fields = holder.fields; |
| 727 expect(fields, hasLength(1)); |
| 728 FieldElementImpl field = fields[0]; |
| 729 expect(field, isNotNull); |
| 730 PropertyAccessorElementImpl setter = field.setter; |
| 731 expect(setter, isNotNull); |
| 732 expect(setter.parameters[0].isCovariant, isTrue); |
| 733 } |
| 734 |
| 601 void test_visitVariableDeclaration_inConstructor() { | 735 void test_visitVariableDeclaration_inConstructor() { |
| 602 List<ConstructorElement> constructors = | 736 List<ConstructorElement> constructors = |
| 603 buildElementsForText('class C { C() { var v = 1; } }') | 737 buildElementsForText('class C { C() { var v = 1; } }') |
| 604 .types[0] | 738 .types[0] |
| 605 .constructors; | 739 .constructors; |
| 606 expect(constructors, hasLength(1)); | 740 expect(constructors, hasLength(1)); |
| 607 List<LocalVariableElement> variableElements = | 741 List<LocalVariableElement> variableElements = |
| 608 constructors[0].localVariables; | 742 constructors[0].localVariables; |
| 609 expect(variableElements, hasLength(1)); | 743 expect(variableElements, hasLength(1)); |
| 610 LocalVariableElement variableElement = variableElements[0]; | 744 LocalVariableElement variableElement = variableElements[0]; |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1087 buildElementsForText('class C { var x; C([@a this.x = null]); }') | 1221 buildElementsForText('class C { var x; C([@a this.x = null]); }') |
| 1088 .types[0] | 1222 .types[0] |
| 1089 .constructors[0] | 1223 .constructors[0] |
| 1090 .parameters[0]; | 1224 .parameters[0]; |
| 1091 checkMetadata(parameterElement); | 1225 checkMetadata(parameterElement); |
| 1092 } | 1226 } |
| 1093 | 1227 |
| 1094 void | 1228 void |
| 1095 test_metadata_visitDefaultFormalParameter_functionTypedFormalParameter() { | 1229 test_metadata_visitDefaultFormalParameter_functionTypedFormalParameter() { |
| 1096 ParameterElement parameterElement = | 1230 ParameterElement parameterElement = |
| 1097 buildElementsForText('f([@a g() = null]) {}').functions[0].parameters[ | 1231 buildElementsForText('f([@a g() = null]) {}') |
| 1098 0]; | 1232 .functions[0] |
| 1233 .parameters[0]; |
| 1099 checkMetadata(parameterElement); | 1234 checkMetadata(parameterElement); |
| 1100 } | 1235 } |
| 1101 | 1236 |
| 1102 void test_metadata_visitDefaultFormalParameter_simpleFormalParameter() { | 1237 void test_metadata_visitDefaultFormalParameter_simpleFormalParameter() { |
| 1103 ParameterElement parameterElement = | 1238 ParameterElement parameterElement = |
| 1104 buildElementsForText('f([@a gx = null]) {}').functions[0].parameters[0]; | 1239 buildElementsForText('f([@a gx = null]) {}').functions[0].parameters[0]; |
| 1105 checkMetadata(parameterElement); | 1240 checkMetadata(parameterElement); |
| 1106 } | 1241 } |
| 1107 | 1242 |
| 1108 void test_metadata_visitEnumDeclaration() { | 1243 void test_metadata_visitEnumDeclaration() { |
| (...skipping 1376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2485 AnalysisEngine.instance.logger = logger; | 2620 AnalysisEngine.instance.logger = logger; |
| 2486 try { | 2621 try { |
| 2487 _compilationUnit = ParserTestCase.parseCompilationUnit(code); | 2622 _compilationUnit = ParserTestCase.parseCompilationUnit(code); |
| 2488 compilationUnit.accept(visitor); | 2623 compilationUnit.accept(visitor); |
| 2489 } finally { | 2624 } finally { |
| 2490 expect(logger.log, hasLength(0)); | 2625 expect(logger.log, hasLength(0)); |
| 2491 AnalysisEngine.instance.logger = Logger.NULL; | 2626 AnalysisEngine.instance.logger = Logger.NULL; |
| 2492 } | 2627 } |
| 2493 } | 2628 } |
| 2494 } | 2629 } |
| OLD | NEW |