| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 test.src.task.incremental_element_builder_test; | 5 library test.src.task.incremental_element_builder_test; |
| 6 | 6 |
| 7 import 'package:analyzer/src/generated/ast.dart'; | 7 import 'package:analyzer/src/generated/ast.dart'; |
| 8 import 'package:analyzer/src/generated/element.dart'; | 8 import 'package:analyzer/src/generated/element.dart'; |
| 9 import 'package:analyzer/src/generated/source.dart'; | 9 import 'package:analyzer/src/generated/source.dart'; |
| 10 import 'package:analyzer/src/task/incremental_element_builder.dart'; | 10 import 'package:analyzer/src/task/incremental_element_builder.dart'; |
| 11 import 'package:unittest/unittest.dart'; | 11 import 'package:unittest/unittest.dart'; |
| 12 | 12 |
| 13 import '../../reflective_tests.dart'; | 13 import '../../reflective_tests.dart'; |
| 14 import '../../utils.dart'; |
| 14 import '../context/abstract_context.dart'; | 15 import '../context/abstract_context.dart'; |
| 15 | 16 |
| 16 main() { | 17 main() { |
| 17 groupSep = ' | '; | 18 initializeTestEnvironment(); |
| 18 runReflectiveTests(IncrementalCompilationUnitElementBuilderTest); | 19 runReflectiveTests(IncrementalCompilationUnitElementBuilderTest); |
| 19 } | 20 } |
| 20 | 21 |
| 21 @reflectiveTest | 22 @reflectiveTest |
| 22 class IncrementalCompilationUnitElementBuilderTest extends AbstractContextTest { | 23 class IncrementalCompilationUnitElementBuilderTest extends AbstractContextTest { |
| 23 Source source; | 24 Source source; |
| 24 | 25 |
| 25 String oldCode; | 26 String oldCode; |
| 26 CompilationUnit oldUnit; | 27 CompilationUnit oldUnit; |
| 27 CompilationUnitElement unitElement; | 28 CompilationUnitElement unitElement; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 expect(unitDelta.hasDirectiveChange, isTrue); | 73 expect(unitDelta.hasDirectiveChange, isTrue); |
| 73 } | 74 } |
| 74 | 75 |
| 75 test_directives_keepOffset_partOf() { | 76 test_directives_keepOffset_partOf() { |
| 76 String libCode = ''' | 77 String libCode = ''' |
| 77 // comment to shift tokens | 78 // comment to shift tokens |
| 78 library my_lib; | 79 library my_lib; |
| 79 part 'test.dart'; | 80 part 'test.dart'; |
| 80 '''; | 81 '''; |
| 81 Source libSource = newSource('/lib.dart', libCode); | 82 Source libSource = newSource('/lib.dart', libCode); |
| 82 _buildOldUnit(r''' | 83 _buildOldUnit( |
| 84 r''' |
| 83 part of my_lib; | 85 part of my_lib; |
| 84 class A {} | 86 class A {} |
| 85 ''', libSource); | 87 ''', |
| 88 libSource); |
| 86 List<Directive> oldDirectives = oldUnit.directives.toList(); | 89 List<Directive> oldDirectives = oldUnit.directives.toList(); |
| 87 _buildNewUnit(r''' | 90 _buildNewUnit(r''' |
| 88 part of my_lib; | 91 part of my_lib; |
| 89 class A {} | 92 class A {} |
| 90 '''); | 93 '''); |
| 91 List<Directive> newDirectives = newUnit.directives; | 94 List<Directive> newDirectives = newUnit.directives; |
| 92 { | 95 { |
| 93 Directive newNode = newDirectives[0]; | 96 Directive newNode = newDirectives[0]; |
| 94 expect(newNode, same(oldDirectives[0])); | 97 expect(newNode, same(oldDirectives[0])); |
| 95 expect(getNodeText(newNode), 'part of my_lib;'); | 98 expect(getNodeText(newNode), 'part of my_lib;'); |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 class C {} | 326 class C {} |
| 324 /// reference [bool] type. | 327 /// reference [bool] type. |
| 325 class A {} | 328 class A {} |
| 326 /// reference [int] type. | 329 /// reference [int] type. |
| 327 class B {} | 330 class B {} |
| 328 '''); | 331 '''); |
| 329 List<CompilationUnitMember> newNodes = newUnit.declarations; | 332 List<CompilationUnitMember> newNodes = newUnit.declarations; |
| 330 { | 333 { |
| 331 CompilationUnitMember newNode = newNodes[0]; | 334 CompilationUnitMember newNode = newNodes[0]; |
| 332 expect(newNode, same(oldNodes[2])); | 335 expect(newNode, same(oldNodes[2])); |
| 333 expect(getNodeText(newNode), r''' | 336 expect( |
| 337 getNodeText(newNode), |
| 338 r''' |
| 334 /// reference [double] and [B] types. | 339 /// reference [double] and [B] types. |
| 335 class C {}'''); | 340 class C {}'''); |
| 336 ClassElement element = newNode.element; | 341 ClassElement element = newNode.element; |
| 337 expect(element, isNotNull); | 342 expect(element, isNotNull); |
| 338 expect(element.name, 'C'); | 343 expect(element.name, 'C'); |
| 339 expect(element.nameOffset, newCode.indexOf('C {}')); | 344 expect(element.nameOffset, newCode.indexOf('C {}')); |
| 340 // [double] and [B] are still resolved | 345 // [double] and [B] are still resolved |
| 341 { | 346 { |
| 342 var docReferences = newNode.documentationComment.references; | 347 var docReferences = newNode.documentationComment.references; |
| 343 expect(docReferences, hasLength(2)); | 348 expect(docReferences, hasLength(2)); |
| 344 expect(docReferences[0].identifier.staticElement.name, 'double'); | 349 expect(docReferences[0].identifier.staticElement.name, 'double'); |
| 345 expect(docReferences[1].identifier.staticElement, | 350 expect(docReferences[1].identifier.staticElement, |
| 346 same(newNodes[2].element)); | 351 same(newNodes[2].element)); |
| 347 } | 352 } |
| 348 } | 353 } |
| 349 { | 354 { |
| 350 CompilationUnitMember newNode = newNodes[1]; | 355 CompilationUnitMember newNode = newNodes[1]; |
| 351 expect(newNode, same(oldNodes[0])); | 356 expect(newNode, same(oldNodes[0])); |
| 352 expect(getNodeText(newNode), r''' | 357 expect( |
| 358 getNodeText(newNode), |
| 359 r''' |
| 353 /// reference [bool] type. | 360 /// reference [bool] type. |
| 354 class A {}'''); | 361 class A {}'''); |
| 355 ClassElement element = newNode.element; | 362 ClassElement element = newNode.element; |
| 356 expect(element, isNotNull); | 363 expect(element, isNotNull); |
| 357 expect(element.name, 'A'); | 364 expect(element.name, 'A'); |
| 358 expect(element.nameOffset, newCode.indexOf('A {}')); | 365 expect(element.nameOffset, newCode.indexOf('A {}')); |
| 359 // [bool] is still resolved | 366 // [bool] is still resolved |
| 360 { | 367 { |
| 361 var docReferences = newNode.documentationComment.references; | 368 var docReferences = newNode.documentationComment.references; |
| 362 expect(docReferences, hasLength(1)); | 369 expect(docReferences, hasLength(1)); |
| 363 expect(docReferences[0].identifier.staticElement.name, 'bool'); | 370 expect(docReferences[0].identifier.staticElement.name, 'bool'); |
| 364 } | 371 } |
| 365 } | 372 } |
| 366 { | 373 { |
| 367 CompilationUnitMember newNode = newNodes[2]; | 374 CompilationUnitMember newNode = newNodes[2]; |
| 368 expect(newNode, same(oldNodes[1])); | 375 expect(newNode, same(oldNodes[1])); |
| 369 expect(getNodeText(newNode), r''' | 376 expect( |
| 377 getNodeText(newNode), |
| 378 r''' |
| 370 /// reference [int] type. | 379 /// reference [int] type. |
| 371 class B {}'''); | 380 class B {}'''); |
| 372 ClassElement element = newNode.element; | 381 ClassElement element = newNode.element; |
| 373 expect(element, isNotNull); | 382 expect(element, isNotNull); |
| 374 expect(element.name, 'B'); | 383 expect(element.name, 'B'); |
| 375 expect(element.nameOffset, newCode.indexOf('B {}')); | 384 expect(element.nameOffset, newCode.indexOf('B {}')); |
| 376 // [int] is still resolved | 385 // [int] is still resolved |
| 377 { | 386 { |
| 378 var docReferences = newNode.documentationComment.references; | 387 var docReferences = newNode.documentationComment.references; |
| 379 expect(docReferences, hasLength(1)); | 388 expect(docReferences, hasLength(1)); |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 expect(elementB, isNotNull); | 623 expect(elementB, isNotNull); |
| 615 expect(elementC, isNotNull); | 624 expect(elementC, isNotNull); |
| 616 expect(elementD, isNotNull); | 625 expect(elementD, isNotNull); |
| 617 expect(elementA.name, 'a'); | 626 expect(elementA.name, 'a'); |
| 618 expect(elementB.name, 'b'); | 627 expect(elementB.name, 'b'); |
| 619 expect(elementC.name, 'c'); | 628 expect(elementC.name, 'c'); |
| 620 expect(elementD.name, 'd'); | 629 expect(elementD.name, 'd'); |
| 621 // unit.types | 630 // unit.types |
| 622 expect(unitElement.topLevelVariables, | 631 expect(unitElement.topLevelVariables, |
| 623 unorderedEquals([elementA, elementB, elementC, elementD])); | 632 unorderedEquals([elementA, elementB, elementC, elementD])); |
| 624 expect(unitElement.accessors, unorderedEquals([ | 633 expect( |
| 625 elementA.getter, | 634 unitElement.accessors, |
| 626 elementA.setter, | 635 unorderedEquals([ |
| 627 elementB.getter, | 636 elementA.getter, |
| 628 elementB.setter, | 637 elementA.setter, |
| 629 elementC.getter, | 638 elementB.getter, |
| 630 elementC.setter, | 639 elementB.setter, |
| 631 elementD.getter, | 640 elementC.getter, |
| 632 elementD.setter | 641 elementC.setter, |
| 633 ])); | 642 elementD.getter, |
| 643 elementD.setter |
| 644 ])); |
| 634 } | 645 } |
| 635 | 646 |
| 636 test_unitMembers_topLevelVariable_final() { | 647 test_unitMembers_topLevelVariable_final() { |
| 637 _buildOldUnit(r''' | 648 _buildOldUnit(r''' |
| 638 final int a = 1; | 649 final int a = 1; |
| 639 '''); | 650 '''); |
| 640 List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList(); | 651 List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList(); |
| 641 _buildNewUnit(r''' | 652 _buildNewUnit(r''' |
| 642 final int a = 1; | 653 final int a = 1; |
| 643 '''); | 654 '''); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 674 this.oldCode = oldCode; | 685 this.oldCode = oldCode; |
| 675 source = newSource('/test.dart', oldCode); | 686 source = newSource('/test.dart', oldCode); |
| 676 if (libSource == null) { | 687 if (libSource == null) { |
| 677 libSource = source; | 688 libSource = source; |
| 678 } | 689 } |
| 679 oldUnit = context.resolveCompilationUnit2(source, libSource); | 690 oldUnit = context.resolveCompilationUnit2(source, libSource); |
| 680 unitElement = oldUnit.element; | 691 unitElement = oldUnit.element; |
| 681 expect(unitElement, isNotNull); | 692 expect(unitElement, isNotNull); |
| 682 } | 693 } |
| 683 } | 694 } |
| OLD | NEW |