| 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.src.context.context_test; | 5 library analyzer.test.src.context.context_test; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 | 9 |
| 10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 | 40 |
| 41 main() { | 41 main() { |
| 42 defineReflectiveSuite(() { | 42 defineReflectiveSuite(() { |
| 43 defineReflectiveTests(AnalysisContextImplTest); | 43 defineReflectiveTests(AnalysisContextImplTest); |
| 44 }); | 44 }); |
| 45 } | 45 } |
| 46 | 46 |
| 47 @reflectiveTest | 47 @reflectiveTest |
| 48 class AnalysisContextImplTest extends AbstractContextTest { | 48 class AnalysisContextImplTest extends AbstractContextTest { |
| 49 void fail_getErrors_html_some() { | 49 void fail_getErrors_html_some() { |
| 50 Source source = addSource( | 50 Source source = addSource("/test.html", r''' |
| 51 "/test.html", | |
| 52 r''' | |
| 53 <html><head> | 51 <html><head> |
| 54 <script type='application/dart' src='test.dart'/> | 52 <script type='application/dart' src='test.dart'/> |
| 55 </head></html>'''); | 53 </head></html>'''); |
| 56 AnalysisErrorInfo errorInfo = context.getErrors(source); | 54 AnalysisErrorInfo errorInfo = context.getErrors(source); |
| 57 expect(errorInfo, isNotNull); | 55 expect(errorInfo, isNotNull); |
| 58 List<AnalysisError> errors = errorInfo.errors; | 56 List<AnalysisError> errors = errorInfo.errors; |
| 59 expect(errors, hasLength(0)); | 57 expect(errors, hasLength(0)); |
| 60 errors = context.computeErrors(source); | 58 errors = context.computeErrors(source); |
| 61 expect(errors, hasLength(2)); | 59 expect(errors, hasLength(2)); |
| 62 } | 60 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 82 // longer implicitly analyzing the file. | 80 // longer implicitly analyzing the file. |
| 83 // | 81 // |
| 84 context.setContents(sourceA, "library a;"); | 82 context.setContents(sourceA, "library a;"); |
| 85 context.computeErrors(sourceA); | 83 context.computeErrors(sourceA); |
| 86 await pumpEventQueue(); | 84 await pumpEventQueue(); |
| 87 listener.expectNotAnalyzed(sourceB); | 85 listener.expectNotAnalyzed(sourceB); |
| 88 } | 86 } |
| 89 | 87 |
| 90 void fail_performAnalysisTask_importedLibraryDelete_html() { | 88 void fail_performAnalysisTask_importedLibraryDelete_html() { |
| 91 // NOTE: This was failing before converting to the new task model. | 89 // NOTE: This was failing before converting to the new task model. |
| 92 Source htmlSource = addSource( | 90 Source htmlSource = addSource("/page.html", r''' |
| 93 "/page.html", | |
| 94 r''' | |
| 95 <html><body><script type="application/dart"> | 91 <html><body><script type="application/dart"> |
| 96 import 'libB.dart'; | 92 import 'libB.dart'; |
| 97 main() {print('hello dart');} | 93 main() {print('hello dart');} |
| 98 </script></body></html>'''); | 94 </script></body></html>'''); |
| 99 Source libBSource = addSource("/libB.dart", "library libB;"); | 95 Source libBSource = addSource("/libB.dart", "library libB;"); |
| 100 _analyzeAll_assertFinished(); | 96 _analyzeAll_assertFinished(); |
| 101 context.computeErrors(htmlSource); | 97 context.computeErrors(htmlSource); |
| 102 expect( | 98 expect( |
| 103 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, | 99 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, |
| 104 reason: "libB resolved 1"); | 100 reason: "libB resolved 1"); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 changeSet.addedSource(source); | 146 changeSet.addedSource(source); |
| 151 context.applyChanges(changeSet); | 147 context.applyChanges(changeSet); |
| 152 // now the entry is explicit | 148 // now the entry is explicit |
| 153 expect(entry.explicitlyAdded, isTrue); | 149 expect(entry.explicitlyAdded, isTrue); |
| 154 } | 150 } |
| 155 | 151 |
| 156 void test_applyChanges_addNewImport_invalidateLibraryCycle() { | 152 void test_applyChanges_addNewImport_invalidateLibraryCycle() { |
| 157 context.analysisOptions = | 153 context.analysisOptions = |
| 158 new AnalysisOptionsImpl.from(context.analysisOptions) | 154 new AnalysisOptionsImpl.from(context.analysisOptions) |
| 159 ..strongMode = true; | 155 ..strongMode = true; |
| 160 Source embedder = addSource( | 156 Source embedder = addSource('/a.dart', r''' |
| 161 '/a.dart', | |
| 162 r''' | |
| 163 library a; | 157 library a; |
| 164 import 'b.dart'; | 158 import 'b.dart'; |
| 165 //import 'c.dart'; | 159 //import 'c.dart'; |
| 166 '''); | 160 '''); |
| 167 addSource( | 161 addSource('/b.dart', r''' |
| 168 '/b.dart', | |
| 169 r''' | |
| 170 library b; | 162 library b; |
| 171 import 'a.dart'; | 163 import 'a.dart'; |
| 172 '''); | 164 '''); |
| 173 addSource( | 165 addSource('/c.dart', r''' |
| 174 '/c.dart', | |
| 175 r''' | |
| 176 library c; | 166 library c; |
| 177 import 'b.dart'; | 167 import 'b.dart'; |
| 178 '''); | 168 '''); |
| 179 _performPendingAnalysisTasks(); | 169 _performPendingAnalysisTasks(); |
| 180 // Add a new import into a.dart, this should invalidate its library cycle. | 170 // Add a new import into a.dart, this should invalidate its library cycle. |
| 181 // If it doesn't, we will get a task cycle exception. | 171 // If it doesn't, we will get a task cycle exception. |
| 182 context.setContents( | 172 context.setContents(embedder, r''' |
| 183 embedder, | |
| 184 r''' | |
| 185 library a; | 173 library a; |
| 186 import 'b.dart'; | 174 import 'b.dart'; |
| 187 import 'c.dart'; | 175 import 'c.dart'; |
| 188 '''); | 176 '''); |
| 189 _performPendingAnalysisTasks(); | 177 _performPendingAnalysisTasks(); |
| 190 expect(context.getCacheEntry(embedder).exception, isNull); | 178 expect(context.getCacheEntry(embedder).exception, isNull); |
| 191 } | 179 } |
| 192 | 180 |
| 193 Future test_applyChanges_change() { | 181 Future test_applyChanges_change() { |
| 194 SourcesChangedListener listener = new SourcesChangedListener(); | 182 SourcesChangedListener listener = new SourcesChangedListener(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 changeSet2.changedContent(source, 'library test;'); | 214 changeSet2.changedContent(source, 'library test;'); |
| 227 context.applyChanges(changeSet2); | 215 context.applyChanges(changeSet2); |
| 228 return pumpEventQueue().then((_) { | 216 return pumpEventQueue().then((_) { |
| 229 listener.assertEvent(wereSourcesAdded: true); | 217 listener.assertEvent(wereSourcesAdded: true); |
| 230 listener.assertEvent(wereSourcesAdded: true, changedSources: [source]); | 218 listener.assertEvent(wereSourcesAdded: true, changedSources: [source]); |
| 231 listener.assertNoMoreEvents(); | 219 listener.assertNoMoreEvents(); |
| 232 }); | 220 }); |
| 233 } | 221 } |
| 234 | 222 |
| 235 void test_applyChanges_change_flush_element() { | 223 void test_applyChanges_change_flush_element() { |
| 236 Source librarySource = addSource( | 224 Source librarySource = addSource("/lib.dart", r''' |
| 237 "/lib.dart", | |
| 238 r''' | |
| 239 library lib; | 225 library lib; |
| 240 int a = 0;'''); | 226 int a = 0;'''); |
| 241 expect(context.computeLibraryElement(librarySource), isNotNull); | 227 expect(context.computeLibraryElement(librarySource), isNotNull); |
| 242 context.setContents( | 228 context.setContents(librarySource, r''' |
| 243 librarySource, | |
| 244 r''' | |
| 245 library lib; | 229 library lib; |
| 246 int aa = 0;'''); | 230 int aa = 0;'''); |
| 247 expect(context.getLibraryElement(librarySource), isNull); | 231 expect(context.getLibraryElement(librarySource), isNull); |
| 248 } | 232 } |
| 249 | 233 |
| 250 Future test_applyChanges_change_multiple() { | 234 Future test_applyChanges_change_multiple() { |
| 251 SourcesChangedListener listener = new SourcesChangedListener(); | 235 SourcesChangedListener listener = new SourcesChangedListener(); |
| 252 context.onSourcesChanged.listen(listener.onData); | 236 context.onSourcesChanged.listen(listener.onData); |
| 253 String libraryContents1 = r''' | 237 String libraryContents1 = r''' |
| 254 library lib; | 238 library lib; |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 } | 382 } |
| 399 // Adding the source as a changedSource should have no effect since | 383 // Adding the source as a changedSource should have no effect since |
| 400 // it is already overridden in the content cache. | 384 // it is already overridden in the content cache. |
| 401 ChangeSet changeSet = new ChangeSet(); | 385 ChangeSet changeSet = new ChangeSet(); |
| 402 changeSet.changedSource(source); | 386 changeSet.changedSource(source); |
| 403 context.applyChanges(changeSet); | 387 context.applyChanges(changeSet); |
| 404 expect(context.sourcesNeedingProcessing, hasLength(0)); | 388 expect(context.sourcesNeedingProcessing, hasLength(0)); |
| 405 } | 389 } |
| 406 | 390 |
| 407 void test_applyChanges_recompute_exportNamespace() { | 391 void test_applyChanges_recompute_exportNamespace() { |
| 408 Source libSource = addSource( | 392 Source libSource = addSource("/lib.dart", r''' |
| 409 "/lib.dart", | |
| 410 r''' | |
| 411 class A {} | 393 class A {} |
| 412 '''); | 394 '''); |
| 413 Source exporterSource = addSource( | 395 Source exporterSource = addSource("/exporter.dart", r''' |
| 414 "/exporter.dart", | |
| 415 r''' | |
| 416 export 'lib.dart'; | 396 export 'lib.dart'; |
| 417 '''); | 397 '''); |
| 418 _performPendingAnalysisTasks(); | 398 _performPendingAnalysisTasks(); |
| 419 // initially: A | 399 // initially: A |
| 420 { | 400 { |
| 421 LibraryElement libraryElement = | 401 LibraryElement libraryElement = |
| 422 context.getResult(exporterSource, LIBRARY_ELEMENT1); | 402 context.getResult(exporterSource, LIBRARY_ELEMENT1); |
| 423 expect(libraryElement.exportNamespace.definedNames.keys, | 403 expect(libraryElement.exportNamespace.definedNames.keys, |
| 424 unorderedEquals(['A'])); | 404 unorderedEquals(['A'])); |
| 425 } | 405 } |
| 426 // after update: B | 406 // after update: B |
| 427 context.setContents( | 407 context.setContents(libSource, r''' |
| 428 libSource, | |
| 429 r''' | |
| 430 class B {}'''); | 408 class B {}'''); |
| 431 _performPendingAnalysisTasks(); | 409 _performPendingAnalysisTasks(); |
| 432 { | 410 { |
| 433 LibraryElement libraryElement = | 411 LibraryElement libraryElement = |
| 434 context.getResult(exporterSource, LIBRARY_ELEMENT1); | 412 context.getResult(exporterSource, LIBRARY_ELEMENT1); |
| 435 expect(libraryElement.exportNamespace.definedNames.keys, | 413 expect(libraryElement.exportNamespace.definedNames.keys, |
| 436 unorderedEquals(['B'])); | 414 unorderedEquals(['B'])); |
| 437 } | 415 } |
| 438 } | 416 } |
| 439 | 417 |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 Source source2 = resourceProvider.newFile(path2, '// 2-1').createSource(); | 634 Source source2 = resourceProvider.newFile(path2, '// 2-1').createSource(); |
| 657 context.applyChanges( | 635 context.applyChanges( |
| 658 new ChangeSet()..addedSource(source1)..addedSource(source2)); | 636 new ChangeSet()..addedSource(source1)..addedSource(source2)); |
| 659 // Verify. | 637 // Verify. |
| 660 expect(validator.getSourcesToComputeModificationTimes(), | 638 expect(validator.getSourcesToComputeModificationTimes(), |
| 661 unorderedEquals([source1, source2])); | 639 unorderedEquals([source1, source2])); |
| 662 } | 640 } |
| 663 | 641 |
| 664 void test_computeDocumentationComment_class_block() { | 642 void test_computeDocumentationComment_class_block() { |
| 665 String comment = "/** Comment */"; | 643 String comment = "/** Comment */"; |
| 666 Source source = addSource( | 644 Source source = addSource("/test.dart", """ |
| 667 "/test.dart", | |
| 668 """ | |
| 669 $comment | 645 $comment |
| 670 class A {}"""); | 646 class A {}"""); |
| 671 LibraryElement libraryElement = context.computeLibraryElement(source); | 647 LibraryElement libraryElement = context.computeLibraryElement(source); |
| 672 expect(libraryElement, isNotNull); | 648 expect(libraryElement, isNotNull); |
| 673 ClassElement classElement = libraryElement.definingCompilationUnit.types[0]; | 649 ClassElement classElement = libraryElement.definingCompilationUnit.types[0]; |
| 674 expect(libraryElement, isNotNull); | 650 expect(libraryElement, isNotNull); |
| 675 expect(context.computeDocumentationComment(classElement), comment); | 651 expect(context.computeDocumentationComment(classElement), comment); |
| 676 } | 652 } |
| 677 | 653 |
| 678 void test_computeDocumentationComment_class_none() { | 654 void test_computeDocumentationComment_class_none() { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 701 LibraryElement libraryElement = context.computeLibraryElement(source); | 677 LibraryElement libraryElement = context.computeLibraryElement(source); |
| 702 expect(libraryElement, isNotNull); | 678 expect(libraryElement, isNotNull); |
| 703 ClassElement classElement = libraryElement.definingCompilationUnit.types[0]; | 679 ClassElement classElement = libraryElement.definingCompilationUnit.types[0]; |
| 704 expect(libraryElement, isNotNull); | 680 expect(libraryElement, isNotNull); |
| 705 String actual = context.computeDocumentationComment(classElement); | 681 String actual = context.computeDocumentationComment(classElement); |
| 706 expect(actual, "/// line 1\n/// line 2\n/// line 3"); | 682 expect(actual, "/// line 1\n/// line 2\n/// line 3"); |
| 707 } | 683 } |
| 708 | 684 |
| 709 void test_computeDocumentationComment_exportDirective_block() { | 685 void test_computeDocumentationComment_exportDirective_block() { |
| 710 String comment = '/** Comment */'; | 686 String comment = '/** Comment */'; |
| 711 Source source = addSource( | 687 Source source = addSource("/test.dart", ''' |
| 712 "/test.dart", | |
| 713 ''' | |
| 714 $comment | 688 $comment |
| 715 export 'dart:async'; | 689 export 'dart:async'; |
| 716 '''); | 690 '''); |
| 717 LibraryElement libraryElement = context.computeLibraryElement(source); | 691 LibraryElement libraryElement = context.computeLibraryElement(source); |
| 718 expect(libraryElement, isNotNull); | 692 expect(libraryElement, isNotNull); |
| 719 ExportElement exportElement = libraryElement.exports[0]; | 693 ExportElement exportElement = libraryElement.exports[0]; |
| 720 expect(context.computeDocumentationComment(exportElement), comment); | 694 expect(context.computeDocumentationComment(exportElement), comment); |
| 721 } | 695 } |
| 722 | 696 |
| 723 void test_computeDocumentationComment_importDirective_block() { | 697 void test_computeDocumentationComment_importDirective_block() { |
| 724 String comment = '/** Comment */'; | 698 String comment = '/** Comment */'; |
| 725 Source source = addSource( | 699 Source source = addSource("/test.dart", ''' |
| 726 "/test.dart", | |
| 727 ''' | |
| 728 $comment | 700 $comment |
| 729 import 'dart:async'; | 701 import 'dart:async'; |
| 730 '''); | 702 '''); |
| 731 LibraryElement libraryElement = context.computeLibraryElement(source); | 703 LibraryElement libraryElement = context.computeLibraryElement(source); |
| 732 expect(libraryElement, isNotNull); | 704 expect(libraryElement, isNotNull); |
| 733 ImportElement importElement = libraryElement.imports[0]; | 705 ImportElement importElement = libraryElement.imports[0]; |
| 734 expect(context.computeDocumentationComment(importElement), comment); | 706 expect(context.computeDocumentationComment(importElement), comment); |
| 735 } | 707 } |
| 736 | 708 |
| 737 void test_computeDocumentationComment_libraryDirective_block() { | 709 void test_computeDocumentationComment_libraryDirective_block() { |
| 738 String comment = '/** Comment */'; | 710 String comment = '/** Comment */'; |
| 739 Source source = addSource( | 711 Source source = addSource("/test.dart", ''' |
| 740 "/test.dart", | |
| 741 ''' | |
| 742 $comment | 712 $comment |
| 743 library lib; | 713 library lib; |
| 744 '''); | 714 '''); |
| 745 LibraryElement libraryElement = context.computeLibraryElement(source); | 715 LibraryElement libraryElement = context.computeLibraryElement(source); |
| 746 expect(libraryElement, isNotNull); | 716 expect(libraryElement, isNotNull); |
| 747 expect(context.computeDocumentationComment(libraryElement), comment); | 717 expect(context.computeDocumentationComment(libraryElement), comment); |
| 748 } | 718 } |
| 749 | 719 |
| 750 void test_computeDocumentationComment_null() { | 720 void test_computeDocumentationComment_null() { |
| 751 expect(context.computeDocumentationComment(null), isNull); | 721 expect(context.computeDocumentationComment(null), isNull); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 expect(context.computeKindOf(source), same(SourceKind.PART)); | 806 expect(context.computeKindOf(source), same(SourceKind.PART)); |
| 837 } | 807 } |
| 838 | 808 |
| 839 void test_computeLibraryElement() { | 809 void test_computeLibraryElement() { |
| 840 Source source = addSource("/test.dart", "library lib;"); | 810 Source source = addSource("/test.dart", "library lib;"); |
| 841 LibraryElement element = context.computeLibraryElement(source); | 811 LibraryElement element = context.computeLibraryElement(source); |
| 842 expect(element, isNotNull); | 812 expect(element, isNotNull); |
| 843 } | 813 } |
| 844 | 814 |
| 845 void test_computeLineInfo_dart() { | 815 void test_computeLineInfo_dart() { |
| 846 Source source = addSource( | 816 Source source = addSource("/test.dart", r''' |
| 847 "/test.dart", | |
| 848 r''' | |
| 849 library lib; | 817 library lib; |
| 850 | 818 |
| 851 main() {}'''); | 819 main() {}'''); |
| 852 LineInfo info = context.computeLineInfo(source); | 820 LineInfo info = context.computeLineInfo(source); |
| 853 expect(info, isNotNull); | 821 expect(info, isNotNull); |
| 854 } | 822 } |
| 855 | 823 |
| 856 void test_computeLineInfo_html() { | 824 void test_computeLineInfo_html() { |
| 857 Source source = addSource( | 825 Source source = addSource("/test.html", r''' |
| 858 "/test.html", | |
| 859 r''' | |
| 860 <html> | 826 <html> |
| 861 <body> | 827 <body> |
| 862 <h1>A</h1> | 828 <h1>A</h1> |
| 863 </body> | 829 </body> |
| 864 </html>'''); | 830 </html>'''); |
| 865 LineInfo info = context.computeLineInfo(source); | 831 LineInfo info = context.computeLineInfo(source); |
| 866 expect(info, isNotNull); | 832 expect(info, isNotNull); |
| 867 } | 833 } |
| 868 | 834 |
| 869 Future test_computeResolvedCompilationUnitAsync() { | 835 Future test_computeResolvedCompilationUnitAsync() { |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1014 // schedule recomputing | 980 // schedule recomputing |
| 1015 List<CompilationUnit> units = context.ensureResolvedDartUnits(source); | 981 List<CompilationUnit> units = context.ensureResolvedDartUnits(source); |
| 1016 expect(units, isNull); | 982 expect(units, isNull); |
| 1017 // should be the next result to compute | 983 // should be the next result to compute |
| 1018 TargetedResult nextResult = context.dartWorkManager.getNextResult(); | 984 TargetedResult nextResult = context.dartWorkManager.getNextResult(); |
| 1019 expect(nextResult.target, libTarget); | 985 expect(nextResult.target, libTarget); |
| 1020 expect(nextResult.result, RESOLVED_UNIT); | 986 expect(nextResult.result, RESOLVED_UNIT); |
| 1021 } | 987 } |
| 1022 | 988 |
| 1023 void test_ensureResolvedDartUnits_partUnit_hasResolved() { | 989 void test_ensureResolvedDartUnits_partUnit_hasResolved() { |
| 1024 Source libSource1 = addSource( | 990 Source libSource1 = addSource('/lib1.dart', r''' |
| 1025 '/lib1.dart', | |
| 1026 r''' | |
| 1027 library lib; | 991 library lib; |
| 1028 part 'part.dart'; | 992 part 'part.dart'; |
| 1029 '''); | 993 '''); |
| 1030 Source libSource2 = addSource( | 994 Source libSource2 = addSource('/lib2.dart', r''' |
| 1031 '/lib2.dart', | |
| 1032 r''' | |
| 1033 library lib; | 995 library lib; |
| 1034 part 'part.dart'; | 996 part 'part.dart'; |
| 1035 '''); | 997 '''); |
| 1036 Source partSource = addSource( | 998 Source partSource = addSource('/part.dart', r''' |
| 1037 '/part.dart', | |
| 1038 r''' | |
| 1039 part of lib; | 999 part of lib; |
| 1040 '''); | 1000 '''); |
| 1041 LibrarySpecificUnit partTarget1 = | 1001 LibrarySpecificUnit partTarget1 = |
| 1042 new LibrarySpecificUnit(libSource1, partSource); | 1002 new LibrarySpecificUnit(libSource1, partSource); |
| 1043 LibrarySpecificUnit partTarget2 = | 1003 LibrarySpecificUnit partTarget2 = |
| 1044 new LibrarySpecificUnit(libSource2, partSource); | 1004 new LibrarySpecificUnit(libSource2, partSource); |
| 1045 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT); | 1005 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT); |
| 1046 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT); | 1006 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT); |
| 1047 CompilationUnit unit1 = | 1007 CompilationUnit unit1 = |
| 1048 context.getCacheEntry(partTarget1).getValue(RESOLVED_UNIT); | 1008 context.getCacheEntry(partTarget1).getValue(RESOLVED_UNIT); |
| 1049 CompilationUnit unit2 = | 1009 CompilationUnit unit2 = |
| 1050 context.getCacheEntry(partTarget2).getValue(RESOLVED_UNIT); | 1010 context.getCacheEntry(partTarget2).getValue(RESOLVED_UNIT); |
| 1051 List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource); | 1011 List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource); |
| 1052 expect(units, unorderedEquals([unit1, unit2])); | 1012 expect(units, unorderedEquals([unit1, unit2])); |
| 1053 } | 1013 } |
| 1054 | 1014 |
| 1055 void test_ensureResolvedDartUnits_partUnit_notResolved() { | 1015 void test_ensureResolvedDartUnits_partUnit_notResolved() { |
| 1056 Source libSource1 = addSource( | 1016 Source libSource1 = addSource('/lib1.dart', r''' |
| 1057 '/lib1.dart', | |
| 1058 r''' | |
| 1059 library lib; | 1017 library lib; |
| 1060 part 'part.dart'; | 1018 part 'part.dart'; |
| 1061 '''); | 1019 '''); |
| 1062 Source libSource2 = addSource( | 1020 Source libSource2 = addSource('/lib2.dart', r''' |
| 1063 '/lib2.dart', | |
| 1064 r''' | |
| 1065 library lib; | 1021 library lib; |
| 1066 part 'part.dart'; | 1022 part 'part.dart'; |
| 1067 '''); | 1023 '''); |
| 1068 Source partSource = addSource( | 1024 Source partSource = addSource('/part.dart', r''' |
| 1069 '/part.dart', | |
| 1070 r''' | |
| 1071 part of lib; | 1025 part of lib; |
| 1072 '''); | 1026 '''); |
| 1073 LibrarySpecificUnit partTarget1 = | 1027 LibrarySpecificUnit partTarget1 = |
| 1074 new LibrarySpecificUnit(libSource1, partSource); | 1028 new LibrarySpecificUnit(libSource1, partSource); |
| 1075 LibrarySpecificUnit partTarget2 = | 1029 LibrarySpecificUnit partTarget2 = |
| 1076 new LibrarySpecificUnit(libSource2, partSource); | 1030 new LibrarySpecificUnit(libSource2, partSource); |
| 1077 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT); | 1031 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT); |
| 1078 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT); | 1032 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT); |
| 1079 // flush | 1033 // flush |
| 1080 context | 1034 context |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1176 expect(cls.accessors[0].returnType.toString(), 'int', reason: reason); | 1130 expect(cls.accessors[0].returnType.toString(), 'int', reason: reason); |
| 1177 expect(cls.accessors[1].isSetter, isTrue, reason: reason); | 1131 expect(cls.accessors[1].isSetter, isTrue, reason: reason); |
| 1178 expect(cls.accessors[1].returnType.toString(), 'void', reason: reason); | 1132 expect(cls.accessors[1].returnType.toString(), 'void', reason: reason); |
| 1179 expect(cls.accessors[1].parameters, hasLength(1), reason: reason); | 1133 expect(cls.accessors[1].parameters, hasLength(1), reason: reason); |
| 1180 expect(cls.accessors[1].parameters[0].type.toString(), 'int', | 1134 expect(cls.accessors[1].parameters[0].type.toString(), 'int', |
| 1181 reason: reason); | 1135 reason: reason); |
| 1182 }); | 1136 }); |
| 1183 } | 1137 } |
| 1184 | 1138 |
| 1185 void test_flushSingleResolvedUnit_instanceGetter() { | 1139 void test_flushSingleResolvedUnit_instanceGetter() { |
| 1186 _checkFlushSingleResolvedUnit( | 1140 _checkFlushSingleResolvedUnit(''' |
| 1187 ''' | |
| 1188 abstract class B { | 1141 abstract class B { |
| 1189 int get x; | 1142 int get x; |
| 1190 } | 1143 } |
| 1191 class C extends B { | 1144 class C extends B { |
| 1192 get x => null; | 1145 get x => null; |
| 1193 } | 1146 } |
| 1194 ''', (CompilationUnitElement unitElement, String reason) { | 1147 ''', (CompilationUnitElement unitElement, String reason) { |
| 1195 expect(unitElement.types, hasLength(2), reason: reason); | 1148 expect(unitElement.types, hasLength(2), reason: reason); |
| 1196 ClassElement cls = unitElement.types[1]; | 1149 ClassElement cls = unitElement.types[1]; |
| 1197 expect(cls.name, 'C', reason: reason); | 1150 expect(cls.name, 'C', reason: reason); |
| 1198 expect(cls.accessors, hasLength(1), reason: reason); | 1151 expect(cls.accessors, hasLength(1), reason: reason); |
| 1199 expect(cls.accessors[0].returnType.toString(), 'int', reason: reason); | 1152 expect(cls.accessors[0].returnType.toString(), 'int', reason: reason); |
| 1200 expect(cls.fields, hasLength(1), reason: reason); | 1153 expect(cls.fields, hasLength(1), reason: reason); |
| 1201 expect(cls.fields[0].type.toString(), 'int', reason: reason); | 1154 expect(cls.fields[0].type.toString(), 'int', reason: reason); |
| 1202 }); | 1155 }); |
| 1203 } | 1156 } |
| 1204 | 1157 |
| 1205 void test_flushSingleResolvedUnit_instanceMethod() { | 1158 void test_flushSingleResolvedUnit_instanceMethod() { |
| 1206 _checkFlushSingleResolvedUnit( | 1159 _checkFlushSingleResolvedUnit(''' |
| 1207 ''' | |
| 1208 abstract class B { | 1160 abstract class B { |
| 1209 int f(String s); | 1161 int f(String s); |
| 1210 } | 1162 } |
| 1211 class C extends B { | 1163 class C extends B { |
| 1212 f(s) => null; | 1164 f(s) => null; |
| 1213 } | 1165 } |
| 1214 ''', (CompilationUnitElement unitElement, String reason) { | 1166 ''', (CompilationUnitElement unitElement, String reason) { |
| 1215 expect(unitElement.types, hasLength(2), reason: reason); | 1167 expect(unitElement.types, hasLength(2), reason: reason); |
| 1216 ClassElement cls = unitElement.types[1]; | 1168 ClassElement cls = unitElement.types[1]; |
| 1217 expect(cls.name, 'C', reason: reason); | 1169 expect(cls.name, 'C', reason: reason); |
| 1218 expect(cls.methods, hasLength(1), reason: reason); | 1170 expect(cls.methods, hasLength(1), reason: reason); |
| 1219 expect(cls.methods[0].returnType.toString(), 'int', reason: reason); | 1171 expect(cls.methods[0].returnType.toString(), 'int', reason: reason); |
| 1220 expect(cls.methods[0].parameters, hasLength(1), reason: reason); | 1172 expect(cls.methods[0].parameters, hasLength(1), reason: reason); |
| 1221 expect(cls.methods[0].parameters[0].type.toString(), 'String', | 1173 expect(cls.methods[0].parameters[0].type.toString(), 'String', |
| 1222 reason: reason); | 1174 reason: reason); |
| 1223 }); | 1175 }); |
| 1224 } | 1176 } |
| 1225 | 1177 |
| 1226 void test_flushSingleResolvedUnit_instanceSetter() { | 1178 void test_flushSingleResolvedUnit_instanceSetter() { |
| 1227 _checkFlushSingleResolvedUnit( | 1179 _checkFlushSingleResolvedUnit(''' |
| 1228 ''' | |
| 1229 abstract class B { | 1180 abstract class B { |
| 1230 set x(int value); | 1181 set x(int value); |
| 1231 } | 1182 } |
| 1232 class C extends B { | 1183 class C extends B { |
| 1233 set x(value) {} | 1184 set x(value) {} |
| 1234 } | 1185 } |
| 1235 ''', (CompilationUnitElement unitElement, String reason) { | 1186 ''', (CompilationUnitElement unitElement, String reason) { |
| 1236 expect(unitElement.types, hasLength(2), reason: reason); | 1187 expect(unitElement.types, hasLength(2), reason: reason); |
| 1237 ClassElement cls = unitElement.types[1]; | 1188 ClassElement cls = unitElement.types[1]; |
| 1238 expect(cls.name, 'C', reason: reason); | 1189 expect(cls.name, 'C', reason: reason); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1321 expect(core, isNotNull); | 1272 expect(core, isNotNull); |
| 1322 ClassElement classObject = | 1273 ClassElement classObject = |
| 1323 _findClass(core.definingCompilationUnit, "Object"); | 1274 _findClass(core.definingCompilationUnit, "Object"); |
| 1324 expect(classObject, isNotNull); | 1275 expect(classObject, isNotNull); |
| 1325 ElementLocation location = classObject.location; | 1276 ElementLocation location = classObject.location; |
| 1326 Element element = context.getElement(location); | 1277 Element element = context.getElement(location); |
| 1327 expect(element, same(classObject)); | 1278 expect(element, same(classObject)); |
| 1328 } | 1279 } |
| 1329 | 1280 |
| 1330 void test_getElement_constructor_named() { | 1281 void test_getElement_constructor_named() { |
| 1331 Source source = addSource( | 1282 Source source = addSource("/lib.dart", r''' |
| 1332 "/lib.dart", | |
| 1333 r''' | |
| 1334 class A { | 1283 class A { |
| 1335 A.named() {} | 1284 A.named() {} |
| 1336 }'''); | 1285 }'''); |
| 1337 _analyzeAll_assertFinished(); | 1286 _analyzeAll_assertFinished(); |
| 1338 LibraryElement library = context.computeLibraryElement(source); | 1287 LibraryElement library = context.computeLibraryElement(source); |
| 1339 ClassElement classA = _findClass(library.definingCompilationUnit, "A"); | 1288 ClassElement classA = _findClass(library.definingCompilationUnit, "A"); |
| 1340 ConstructorElement constructor = classA.constructors[0]; | 1289 ConstructorElement constructor = classA.constructors[0]; |
| 1341 ElementLocation location = constructor.location; | 1290 ElementLocation location = constructor.location; |
| 1342 Element element = context.getElement(location); | 1291 Element element = context.getElement(location); |
| 1343 expect(element, same(constructor)); | 1292 expect(element, same(constructor)); |
| 1344 } | 1293 } |
| 1345 | 1294 |
| 1346 void test_getElement_constructor_unnamed() { | 1295 void test_getElement_constructor_unnamed() { |
| 1347 Source source = addSource( | 1296 Source source = addSource("/lib.dart", r''' |
| 1348 "/lib.dart", | |
| 1349 r''' | |
| 1350 class A { | 1297 class A { |
| 1351 A() {} | 1298 A() {} |
| 1352 }'''); | 1299 }'''); |
| 1353 _analyzeAll_assertFinished(); | 1300 _analyzeAll_assertFinished(); |
| 1354 LibraryElement library = context.computeLibraryElement(source); | 1301 LibraryElement library = context.computeLibraryElement(source); |
| 1355 ClassElement classA = _findClass(library.definingCompilationUnit, "A"); | 1302 ClassElement classA = _findClass(library.definingCompilationUnit, "A"); |
| 1356 ConstructorElement constructor = classA.constructors[0]; | 1303 ConstructorElement constructor = classA.constructors[0]; |
| 1357 ElementLocation location = constructor.location; | 1304 ElementLocation location = constructor.location; |
| 1358 Element element = context.getElement(location); | 1305 Element element = context.getElement(location); |
| 1359 expect(element, same(constructor)); | 1306 expect(element, same(constructor)); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1395 AnalysisErrorInfo errorInfo = context.getErrors(source); | 1342 AnalysisErrorInfo errorInfo = context.getErrors(source); |
| 1396 expect(errorInfo, isNotNull); | 1343 expect(errorInfo, isNotNull); |
| 1397 List<AnalysisError> errors = errorInfo.errors; | 1344 List<AnalysisError> errors = errorInfo.errors; |
| 1398 expect(errors, hasLength(0)); | 1345 expect(errors, hasLength(0)); |
| 1399 context.computeErrors(source); | 1346 context.computeErrors(source); |
| 1400 errors = errorInfo.errors; | 1347 errors = errorInfo.errors; |
| 1401 expect(errors, hasLength(0)); | 1348 expect(errors, hasLength(0)); |
| 1402 } | 1349 } |
| 1403 | 1350 |
| 1404 void test_getHtmlFilesReferencing_html() { | 1351 void test_getHtmlFilesReferencing_html() { |
| 1405 Source htmlSource = addSource( | 1352 Source htmlSource = addSource("/test.html", r''' |
| 1406 "/test.html", | |
| 1407 r''' | |
| 1408 <html><head> | 1353 <html><head> |
| 1409 <script type='application/dart' src='test.dart'/> | 1354 <script type='application/dart' src='test.dart'/> |
| 1410 <script type='application/dart' src='test.js'/> | 1355 <script type='application/dart' src='test.js'/> |
| 1411 </head></html>'''); | 1356 </head></html>'''); |
| 1412 Source librarySource = addSource("/test.dart", "library lib;"); | 1357 Source librarySource = addSource("/test.dart", "library lib;"); |
| 1413 Source secondHtmlSource = addSource("/test.html", "<html></html>"); | 1358 Source secondHtmlSource = addSource("/test.html", "<html></html>"); |
| 1414 context.computeLibraryElement(librarySource); | 1359 context.computeLibraryElement(librarySource); |
| 1415 List<Source> result = context.getHtmlFilesReferencing(secondHtmlSource); | 1360 List<Source> result = context.getHtmlFilesReferencing(secondHtmlSource); |
| 1416 expect(result, hasLength(0)); | 1361 expect(result, hasLength(0)); |
| 1417 context.parseHtmlDocument(htmlSource); | 1362 context.parseHtmlDocument(htmlSource); |
| 1418 result = context.getHtmlFilesReferencing(secondHtmlSource); | 1363 result = context.getHtmlFilesReferencing(secondHtmlSource); |
| 1419 expect(result, hasLength(0)); | 1364 expect(result, hasLength(0)); |
| 1420 } | 1365 } |
| 1421 | 1366 |
| 1422 void test_getHtmlFilesReferencing_library() { | 1367 void test_getHtmlFilesReferencing_library() { |
| 1423 Source htmlSource = addSource( | 1368 Source htmlSource = addSource("/test.html", r''' |
| 1424 "/test.html", | |
| 1425 r''' | |
| 1426 <!DOCTYPE html> | 1369 <!DOCTYPE html> |
| 1427 <html><head> | 1370 <html><head> |
| 1428 <script type='application/dart' src='test.dart'/> | 1371 <script type='application/dart' src='test.dart'/> |
| 1429 <script type='application/dart' src='test.js'/> | 1372 <script type='application/dart' src='test.js'/> |
| 1430 </head></html>'''); | 1373 </head></html>'''); |
| 1431 Source librarySource = addSource("/test.dart", "library lib;"); | 1374 Source librarySource = addSource("/test.dart", "library lib;"); |
| 1432 context.computeLibraryElement(librarySource); | 1375 context.computeLibraryElement(librarySource); |
| 1433 List<Source> result = context.getHtmlFilesReferencing(librarySource); | 1376 List<Source> result = context.getHtmlFilesReferencing(librarySource); |
| 1434 expect(result, hasLength(0)); | 1377 expect(result, hasLength(0)); |
| 1435 // Indirectly force the data to be computed. | 1378 // Indirectly force the data to be computed. |
| 1436 context.computeErrors(htmlSource); | 1379 context.computeErrors(htmlSource); |
| 1437 result = context.getHtmlFilesReferencing(librarySource); | 1380 result = context.getHtmlFilesReferencing(librarySource); |
| 1438 expect(result, hasLength(1)); | 1381 expect(result, hasLength(1)); |
| 1439 expect(result[0], htmlSource); | 1382 expect(result[0], htmlSource); |
| 1440 } | 1383 } |
| 1441 | 1384 |
| 1442 void test_getHtmlFilesReferencing_part() { | 1385 void test_getHtmlFilesReferencing_part() { |
| 1443 Source htmlSource = addSource( | 1386 Source htmlSource = addSource("/test.html", r''' |
| 1444 "/test.html", | |
| 1445 r''' | |
| 1446 <!DOCTYPE html> | 1387 <!DOCTYPE html> |
| 1447 <html><head> | 1388 <html><head> |
| 1448 <script type='application/dart' src='test.dart'/> | 1389 <script type='application/dart' src='test.dart'/> |
| 1449 <script type='application/dart' src='test.js'/> | 1390 <script type='application/dart' src='test.js'/> |
| 1450 </head></html>'''); | 1391 </head></html>'''); |
| 1451 Source librarySource = | 1392 Source librarySource = |
| 1452 addSource("/test.dart", "library lib; part 'part.dart';"); | 1393 addSource("/test.dart", "library lib; part 'part.dart';"); |
| 1453 Source partSource = addSource("/part.dart", "part of lib;"); | 1394 Source partSource = addSource("/part.dart", "part of lib;"); |
| 1454 context.computeLibraryElement(librarySource); | 1395 context.computeLibraryElement(librarySource); |
| 1455 List<Source> result = context.getHtmlFilesReferencing(partSource); | 1396 List<Source> result = context.getHtmlFilesReferencing(partSource); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1488 context.computeKindOf(source); | 1429 context.computeKindOf(source); |
| 1489 expect(context.getKindOf(source), same(SourceKind.PART)); | 1430 expect(context.getKindOf(source), same(SourceKind.PART)); |
| 1490 } | 1431 } |
| 1491 | 1432 |
| 1492 void test_getKindOf_unknown() { | 1433 void test_getKindOf_unknown() { |
| 1493 Source source = addSource("/test.css", ""); | 1434 Source source = addSource("/test.css", ""); |
| 1494 expect(context.getKindOf(source), same(SourceKind.UNKNOWN)); | 1435 expect(context.getKindOf(source), same(SourceKind.UNKNOWN)); |
| 1495 } | 1436 } |
| 1496 | 1437 |
| 1497 void test_getLaunchableClientLibrarySources_doesNotImportHtml() { | 1438 void test_getLaunchableClientLibrarySources_doesNotImportHtml() { |
| 1498 Source source = addSource( | 1439 Source source = addSource("/test.dart", r''' |
| 1499 "/test.dart", | |
| 1500 r''' | |
| 1501 main() {}'''); | 1440 main() {}'''); |
| 1502 context.computeLibraryElement(source); | 1441 context.computeLibraryElement(source); |
| 1503 List<Source> sources = context.launchableClientLibrarySources; | 1442 List<Source> sources = context.launchableClientLibrarySources; |
| 1504 expect(sources, isEmpty); | 1443 expect(sources, isEmpty); |
| 1505 } | 1444 } |
| 1506 | 1445 |
| 1507 void test_getLaunchableClientLibrarySources_importsHtml_explicitly() { | 1446 void test_getLaunchableClientLibrarySources_importsHtml_explicitly() { |
| 1508 List<Source> sources = context.launchableClientLibrarySources; | 1447 List<Source> sources = context.launchableClientLibrarySources; |
| 1509 expect(sources, isEmpty); | 1448 expect(sources, isEmpty); |
| 1510 Source source = addSource( | 1449 Source source = addSource("/test.dart", r''' |
| 1511 "/test.dart", | |
| 1512 r''' | |
| 1513 import 'dart:html'; | 1450 import 'dart:html'; |
| 1514 main() {}'''); | 1451 main() {}'''); |
| 1515 context.computeLibraryElement(source); | 1452 context.computeLibraryElement(source); |
| 1516 sources = context.launchableClientLibrarySources; | 1453 sources = context.launchableClientLibrarySources; |
| 1517 expect(sources, unorderedEquals([source])); | 1454 expect(sources, unorderedEquals([source])); |
| 1518 } | 1455 } |
| 1519 | 1456 |
| 1520 void test_getLaunchableClientLibrarySources_importsHtml_implicitly() { | 1457 void test_getLaunchableClientLibrarySources_importsHtml_implicitly() { |
| 1521 List<Source> sources = context.launchableClientLibrarySources; | 1458 List<Source> sources = context.launchableClientLibrarySources; |
| 1522 expect(sources, isEmpty); | 1459 expect(sources, isEmpty); |
| 1523 addSource( | 1460 addSource('/a.dart', r''' |
| 1524 '/a.dart', | |
| 1525 r''' | |
| 1526 import 'dart:html'; | 1461 import 'dart:html'; |
| 1527 '''); | 1462 '''); |
| 1528 Source source = addSource( | 1463 Source source = addSource("/test.dart", r''' |
| 1529 "/test.dart", | |
| 1530 r''' | |
| 1531 import 'a.dart'; | 1464 import 'a.dart'; |
| 1532 main() {}'''); | 1465 main() {}'''); |
| 1533 _analyzeAll_assertFinished(); | 1466 _analyzeAll_assertFinished(); |
| 1534 sources = context.launchableClientLibrarySources; | 1467 sources = context.launchableClientLibrarySources; |
| 1535 expect(sources, unorderedEquals([source])); | 1468 expect(sources, unorderedEquals([source])); |
| 1536 } | 1469 } |
| 1537 | 1470 |
| 1538 void test_getLaunchableClientLibrarySources_importsHtml_implicitly2() { | 1471 void test_getLaunchableClientLibrarySources_importsHtml_implicitly2() { |
| 1539 List<Source> sources = context.launchableClientLibrarySources; | 1472 List<Source> sources = context.launchableClientLibrarySources; |
| 1540 expect(sources, isEmpty); | 1473 expect(sources, isEmpty); |
| 1541 addSource( | 1474 addSource('/a.dart', r''' |
| 1542 '/a.dart', | |
| 1543 r''' | |
| 1544 export 'dart:html'; | 1475 export 'dart:html'; |
| 1545 '''); | 1476 '''); |
| 1546 Source source = addSource( | 1477 Source source = addSource("/test.dart", r''' |
| 1547 "/test.dart", | |
| 1548 r''' | |
| 1549 import 'a.dart'; | 1478 import 'a.dart'; |
| 1550 main() {}'''); | 1479 main() {}'''); |
| 1551 _analyzeAll_assertFinished(); | 1480 _analyzeAll_assertFinished(); |
| 1552 sources = context.launchableClientLibrarySources; | 1481 sources = context.launchableClientLibrarySources; |
| 1553 expect(sources, unorderedEquals([source])); | 1482 expect(sources, unorderedEquals([source])); |
| 1554 } | 1483 } |
| 1555 | 1484 |
| 1556 void test_getLaunchableServerLibrarySources() { | 1485 void test_getLaunchableServerLibrarySources() { |
| 1557 expect(context.launchableServerLibrarySources, isEmpty); | 1486 expect(context.launchableServerLibrarySources, isEmpty); |
| 1558 Source source = addSource("/test.dart", "main() {}"); | 1487 Source source = addSource("/test.dart", "main() {}"); |
| 1559 context.computeLibraryElement(source); | 1488 context.computeLibraryElement(source); |
| 1560 expect(context.launchableServerLibrarySources, unorderedEquals([source])); | 1489 expect(context.launchableServerLibrarySources, unorderedEquals([source])); |
| 1561 } | 1490 } |
| 1562 | 1491 |
| 1563 void test_getLaunchableServerLibrarySources_importsHtml_explicitly() { | 1492 void test_getLaunchableServerLibrarySources_importsHtml_explicitly() { |
| 1564 Source source = addSource( | 1493 Source source = addSource("/test.dart", r''' |
| 1565 "/test.dart", | |
| 1566 r''' | |
| 1567 import 'dart:html'; | 1494 import 'dart:html'; |
| 1568 main() {} | 1495 main() {} |
| 1569 '''); | 1496 '''); |
| 1570 context.computeLibraryElement(source); | 1497 context.computeLibraryElement(source); |
| 1571 expect(context.launchableServerLibrarySources, isEmpty); | 1498 expect(context.launchableServerLibrarySources, isEmpty); |
| 1572 } | 1499 } |
| 1573 | 1500 |
| 1574 void test_getLaunchableServerLibrarySources_importsHtml_implicitly() { | 1501 void test_getLaunchableServerLibrarySources_importsHtml_implicitly() { |
| 1575 addSource( | 1502 addSource("/imports_html.dart", r''' |
| 1576 "/imports_html.dart", | |
| 1577 r''' | |
| 1578 import 'dart:html'; | 1503 import 'dart:html'; |
| 1579 '''); | 1504 '''); |
| 1580 addSource( | 1505 addSource("/test.dart", r''' |
| 1581 "/test.dart", | |
| 1582 r''' | |
| 1583 import 'imports_html.dart'; | 1506 import 'imports_html.dart'; |
| 1584 main() {}'''); | 1507 main() {}'''); |
| 1585 _analyzeAll_assertFinished(); | 1508 _analyzeAll_assertFinished(); |
| 1586 expect(context.launchableServerLibrarySources, isEmpty); | 1509 expect(context.launchableServerLibrarySources, isEmpty); |
| 1587 } | 1510 } |
| 1588 | 1511 |
| 1589 void test_getLaunchableServerLibrarySources_noMain() { | 1512 void test_getLaunchableServerLibrarySources_noMain() { |
| 1590 Source source = addSource("/test.dart", ''); | 1513 Source source = addSource("/test.dart", ''); |
| 1591 context.computeLibraryElement(source); | 1514 context.computeLibraryElement(source); |
| 1592 expect(context.launchableServerLibrarySources, isEmpty); | 1515 expect(context.launchableServerLibrarySources, isEmpty); |
| 1593 } | 1516 } |
| 1594 | 1517 |
| 1595 void test_getLibrariesContaining() { | 1518 void test_getLibrariesContaining() { |
| 1596 Source librarySource = addSource( | 1519 Source librarySource = addSource("/lib.dart", r''' |
| 1597 "/lib.dart", | |
| 1598 r''' | |
| 1599 library lib; | 1520 library lib; |
| 1600 part 'part.dart';'''); | 1521 part 'part.dart';'''); |
| 1601 Source partSource = addSource("/part.dart", "part of lib;"); | 1522 Source partSource = addSource("/part.dart", "part of lib;"); |
| 1602 context.computeLibraryElement(librarySource); | 1523 context.computeLibraryElement(librarySource); |
| 1603 List<Source> result = context.getLibrariesContaining(librarySource); | 1524 List<Source> result = context.getLibrariesContaining(librarySource); |
| 1604 expect(result, hasLength(1)); | 1525 expect(result, hasLength(1)); |
| 1605 expect(result[0], librarySource); | 1526 expect(result[0], librarySource); |
| 1606 result = context.getLibrariesContaining(partSource); | 1527 result = context.getLibrariesContaining(partSource); |
| 1607 expect(result, hasLength(1)); | 1528 expect(result, hasLength(1)); |
| 1608 expect(result[0], librarySource); | 1529 expect(result[0], librarySource); |
| 1609 } | 1530 } |
| 1610 | 1531 |
| 1611 void test_getLibrariesDependingOn() { | 1532 void test_getLibrariesDependingOn() { |
| 1612 Source libASource = addSource("/libA.dart", "library libA;"); | 1533 Source libASource = addSource("/libA.dart", "library libA;"); |
| 1613 addSource("/libB.dart", "library libB;"); | 1534 addSource("/libB.dart", "library libB;"); |
| 1614 Source lib1Source = addSource( | 1535 Source lib1Source = addSource("/lib1.dart", r''' |
| 1615 "/lib1.dart", | |
| 1616 r''' | |
| 1617 library lib1; | 1536 library lib1; |
| 1618 import 'libA.dart'; | 1537 import 'libA.dart'; |
| 1619 export 'libB.dart';'''); | 1538 export 'libB.dart';'''); |
| 1620 Source lib2Source = addSource( | 1539 Source lib2Source = addSource("/lib2.dart", r''' |
| 1621 "/lib2.dart", | |
| 1622 r''' | |
| 1623 library lib2; | 1540 library lib2; |
| 1624 import 'libB.dart'; | 1541 import 'libB.dart'; |
| 1625 export 'libA.dart';'''); | 1542 export 'libA.dart';'''); |
| 1626 context.computeLibraryElement(lib1Source); | 1543 context.computeLibraryElement(lib1Source); |
| 1627 context.computeLibraryElement(lib2Source); | 1544 context.computeLibraryElement(lib2Source); |
| 1628 List<Source> result = context.getLibrariesDependingOn(libASource); | 1545 List<Source> result = context.getLibrariesDependingOn(libASource); |
| 1629 expect(result, unorderedEquals([lib1Source, lib2Source])); | 1546 expect(result, unorderedEquals([lib1Source, lib2Source])); |
| 1630 } | 1547 } |
| 1631 | 1548 |
| 1632 void test_getLibrariesReferencedFromHtml() { | 1549 void test_getLibrariesReferencedFromHtml() { |
| 1633 Source htmlSource = addSource( | 1550 Source htmlSource = addSource("/test.html", r''' |
| 1634 "/test.html", | |
| 1635 r''' | |
| 1636 <!DOCTYPE html> | 1551 <!DOCTYPE html> |
| 1637 <html><head> | 1552 <html><head> |
| 1638 <script type='application/dart' src='test.dart'/> | 1553 <script type='application/dart' src='test.dart'/> |
| 1639 <script type='application/dart' src='test.js'/> | 1554 <script type='application/dart' src='test.js'/> |
| 1640 </head></html>'''); | 1555 </head></html>'''); |
| 1641 Source librarySource = addSource("/test.dart", "library lib;"); | 1556 Source librarySource = addSource("/test.dart", "library lib;"); |
| 1642 context.computeLibraryElement(librarySource); | 1557 context.computeLibraryElement(librarySource); |
| 1643 // Indirectly force the data to be computed. | 1558 // Indirectly force the data to be computed. |
| 1644 context.computeErrors(htmlSource); | 1559 context.computeErrors(htmlSource); |
| 1645 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource); | 1560 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource); |
| 1646 expect(result, hasLength(1)); | 1561 expect(result, hasLength(1)); |
| 1647 expect(result[0], librarySource); | 1562 expect(result[0], librarySource); |
| 1648 } | 1563 } |
| 1649 | 1564 |
| 1650 void test_getLibrariesReferencedFromHtml_none() { | 1565 void test_getLibrariesReferencedFromHtml_none() { |
| 1651 Source htmlSource = addSource( | 1566 Source htmlSource = addSource("/test.html", r''' |
| 1652 "/test.html", | |
| 1653 r''' | |
| 1654 <html><head> | 1567 <html><head> |
| 1655 <script type='application/dart' src='test.js'/> | 1568 <script type='application/dart' src='test.js'/> |
| 1656 </head></html>'''); | 1569 </head></html>'''); |
| 1657 addSource("/test.dart", "library lib;"); | 1570 addSource("/test.dart", "library lib;"); |
| 1658 context.parseHtmlDocument(htmlSource); | 1571 context.parseHtmlDocument(htmlSource); |
| 1659 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource); | 1572 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource); |
| 1660 expect(result, hasLength(0)); | 1573 expect(result, hasLength(0)); |
| 1661 } | 1574 } |
| 1662 | 1575 |
| 1663 void test_getLibraryElement() { | 1576 void test_getLibraryElement() { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1678 expect(sources, hasLength(originalLength + 1)); | 1591 expect(sources, hasLength(originalLength + 1)); |
| 1679 for (Source returnedSource in sources) { | 1592 for (Source returnedSource in sources) { |
| 1680 if (returnedSource == source) { | 1593 if (returnedSource == source) { |
| 1681 return; | 1594 return; |
| 1682 } | 1595 } |
| 1683 } | 1596 } |
| 1684 fail("The added source was not in the list of library sources"); | 1597 fail("The added source was not in the list of library sources"); |
| 1685 } | 1598 } |
| 1686 | 1599 |
| 1687 void test_getLibrarySources_inSDK() { | 1600 void test_getLibrarySources_inSDK() { |
| 1688 Source source = addSource( | 1601 Source source = addSource('/test.dart', r''' |
| 1689 '/test.dart', | |
| 1690 r''' | |
| 1691 import 'dart:async'; | 1602 import 'dart:async'; |
| 1692 Stream S = null; | 1603 Stream S = null; |
| 1693 '''); | 1604 '''); |
| 1694 LibraryElement testLibrary = context.computeLibraryElement(source); | 1605 LibraryElement testLibrary = context.computeLibraryElement(source); |
| 1695 // prepare "Stream" ClassElement | 1606 // prepare "Stream" ClassElement |
| 1696 ClassElement streamElement; | 1607 ClassElement streamElement; |
| 1697 { | 1608 { |
| 1698 CompilationUnitElement testUnit = testLibrary.definingCompilationUnit; | 1609 CompilationUnitElement testUnit = testLibrary.definingCompilationUnit; |
| 1699 InterfaceType streamType = testUnit.topLevelVariables[0].type; | 1610 InterfaceType streamType = testUnit.topLevelVariables[0].type; |
| 1700 streamElement = streamType.element; | 1611 streamElement = streamType.element; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1715 { | 1626 { |
| 1716 List<Source> coreLibraries = context.getLibrariesContaining(intSource); | 1627 List<Source> coreLibraries = context.getLibrariesContaining(intSource); |
| 1717 expect(coreLibraries, hasLength(1)); | 1628 expect(coreLibraries, hasLength(1)); |
| 1718 Source coreSource = coreLibraries[0]; | 1629 Source coreSource = coreLibraries[0]; |
| 1719 expect(coreSource.isInSystemLibrary, isTrue); | 1630 expect(coreSource.isInSystemLibrary, isTrue); |
| 1720 expect(coreSource.shortName, 'async.dart'); | 1631 expect(coreSource.shortName, 'async.dart'); |
| 1721 } | 1632 } |
| 1722 } | 1633 } |
| 1723 | 1634 |
| 1724 void test_getLineInfo() { | 1635 void test_getLineInfo() { |
| 1725 Source source = addSource( | 1636 Source source = addSource("/test.dart", r''' |
| 1726 "/test.dart", | |
| 1727 r''' | |
| 1728 library lib; | 1637 library lib; |
| 1729 | 1638 |
| 1730 main() {}'''); | 1639 main() {}'''); |
| 1731 LineInfo info = context.getLineInfo(source); | 1640 LineInfo info = context.getLineInfo(source); |
| 1732 expect(info, isNull); | 1641 expect(info, isNull); |
| 1733 context.parseCompilationUnit(source); | 1642 context.parseCompilationUnit(source); |
| 1734 info = context.getLineInfo(source); | 1643 info = context.getLineInfo(source); |
| 1735 expect(info, isNotNull); | 1644 expect(info, isNotNull); |
| 1736 } | 1645 } |
| 1737 | 1646 |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1875 Source sourceB = newSource('/b.dart', "library b;"); | 1784 Source sourceB = newSource('/b.dart', "library b;"); |
| 1876 ChangeSet changeSet = new ChangeSet(); | 1785 ChangeSet changeSet = new ChangeSet(); |
| 1877 changeSet.addedSource(sourceA); | 1786 changeSet.addedSource(sourceA); |
| 1878 context.applyChanges(changeSet); | 1787 context.applyChanges(changeSet); |
| 1879 context.computeErrors(sourceA); | 1788 context.computeErrors(sourceA); |
| 1880 await pumpEventQueue(); | 1789 await pumpEventQueue(); |
| 1881 listener.expectAnalyzed(sourceB); | 1790 listener.expectAnalyzed(sourceB); |
| 1882 } | 1791 } |
| 1883 | 1792 |
| 1884 void test_isClientLibrary_dart() { | 1793 void test_isClientLibrary_dart() { |
| 1885 Source source = addSource( | 1794 Source source = addSource("/test.dart", r''' |
| 1886 "/test.dart", | |
| 1887 r''' | |
| 1888 import 'dart:html'; | 1795 import 'dart:html'; |
| 1889 | 1796 |
| 1890 main() {}'''); | 1797 main() {}'''); |
| 1891 expect(context.isClientLibrary(source), isFalse); | 1798 expect(context.isClientLibrary(source), isFalse); |
| 1892 expect(context.isServerLibrary(source), isFalse); | 1799 expect(context.isServerLibrary(source), isFalse); |
| 1893 context.computeLibraryElement(source); | 1800 context.computeLibraryElement(source); |
| 1894 expect(context.isClientLibrary(source), isTrue); | 1801 expect(context.isClientLibrary(source), isTrue); |
| 1895 expect(context.isServerLibrary(source), isFalse); | 1802 expect(context.isServerLibrary(source), isFalse); |
| 1896 } | 1803 } |
| 1897 | 1804 |
| 1898 void test_isClientLibrary_html() { | 1805 void test_isClientLibrary_html() { |
| 1899 Source source = addSource("/test.html", "<html></html>"); | 1806 Source source = addSource("/test.html", "<html></html>"); |
| 1900 expect(context.isClientLibrary(source), isFalse); | 1807 expect(context.isClientLibrary(source), isFalse); |
| 1901 } | 1808 } |
| 1902 | 1809 |
| 1903 void test_isClientLibrary_unknown() { | 1810 void test_isClientLibrary_unknown() { |
| 1904 Source source = newSource("/test.dart"); | 1811 Source source = newSource("/test.dart"); |
| 1905 expect(context.isClientLibrary(source), isFalse); | 1812 expect(context.isClientLibrary(source), isFalse); |
| 1906 } | 1813 } |
| 1907 | 1814 |
| 1908 void test_isServerLibrary_dart() { | 1815 void test_isServerLibrary_dart() { |
| 1909 Source source = addSource( | 1816 Source source = addSource("/test.dart", r''' |
| 1910 "/test.dart", | |
| 1911 r''' | |
| 1912 library lib; | 1817 library lib; |
| 1913 | 1818 |
| 1914 main() {}'''); | 1819 main() {}'''); |
| 1915 expect(context.isClientLibrary(source), isFalse); | 1820 expect(context.isClientLibrary(source), isFalse); |
| 1916 expect(context.isServerLibrary(source), isFalse); | 1821 expect(context.isServerLibrary(source), isFalse); |
| 1917 context.computeLibraryElement(source); | 1822 context.computeLibraryElement(source); |
| 1918 expect(context.isClientLibrary(source), isFalse); | 1823 expect(context.isClientLibrary(source), isFalse); |
| 1919 expect(context.isServerLibrary(source), isTrue); | 1824 expect(context.isServerLibrary(source), isTrue); |
| 1920 } | 1825 } |
| 1921 | 1826 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2015 } | 1920 } |
| 2016 } | 1921 } |
| 2017 | 1922 |
| 2018 void test_parseHtmlDocument() { | 1923 void test_parseHtmlDocument() { |
| 2019 Source source = addSource("/lib.html", "<!DOCTYPE html><html></html>"); | 1924 Source source = addSource("/lib.html", "<!DOCTYPE html><html></html>"); |
| 2020 Document document = context.parseHtmlDocument(source); | 1925 Document document = context.parseHtmlDocument(source); |
| 2021 expect(document, isNotNull); | 1926 expect(document, isNotNull); |
| 2022 } | 1927 } |
| 2023 | 1928 |
| 2024 void test_parseHtmlUnit_resolveDirectives() { | 1929 void test_parseHtmlUnit_resolveDirectives() { |
| 2025 Source libSource = addSource( | 1930 Source libSource = addSource("/lib.dart", r''' |
| 2026 "/lib.dart", | |
| 2027 r''' | |
| 2028 library lib; | 1931 library lib; |
| 2029 class ClassA {}'''); | 1932 class ClassA {}'''); |
| 2030 Source source = addSource( | 1933 Source source = addSource("/lib.html", r''' |
| 2031 "/lib.html", | |
| 2032 r''' | |
| 2033 <!DOCTYPE html> | 1934 <!DOCTYPE html> |
| 2034 <html> | 1935 <html> |
| 2035 <head> | 1936 <head> |
| 2036 <script type='application/dart'> | 1937 <script type='application/dart'> |
| 2037 import 'lib.dart'; | 1938 import 'lib.dart'; |
| 2038 ClassA v = null; | 1939 ClassA v = null; |
| 2039 </script> | 1940 </script> |
| 2040 </head> | 1941 </head> |
| 2041 <body> | 1942 <body> |
| 2042 </body> | 1943 </body> |
| 2043 </html>'''); | 1944 </html>'''); |
| 2044 Document document = context.parseHtmlDocument(source); | 1945 Document document = context.parseHtmlDocument(source); |
| 2045 expect(document, isNotNull); | 1946 expect(document, isNotNull); |
| 2046 List<DartScript> scripts = context.computeResult(source, DART_SCRIPTS); | 1947 List<DartScript> scripts = context.computeResult(source, DART_SCRIPTS); |
| 2047 expect(scripts, hasLength(1)); | 1948 expect(scripts, hasLength(1)); |
| 2048 CompilationUnit unit = context.computeResult(scripts[0], PARSED_UNIT); | 1949 CompilationUnit unit = context.computeResult(scripts[0], PARSED_UNIT); |
| 2049 ImportDirective importNode = unit.directives[0] as ImportDirective; | 1950 ImportDirective importNode = unit.directives[0] as ImportDirective; |
| 2050 expect(importNode.uriContent, isNotNull); | 1951 expect(importNode.uriContent, isNotNull); |
| 2051 expect(importNode.uriSource, libSource); | 1952 expect(importNode.uriSource, libSource); |
| 2052 } | 1953 } |
| 2053 | 1954 |
| 2054 void test_performAnalysisTask_addPart() { | 1955 void test_performAnalysisTask_addPart() { |
| 2055 Source libSource = addSource( | 1956 Source libSource = addSource("/lib.dart", r''' |
| 2056 "/lib.dart", | |
| 2057 r''' | |
| 2058 library lib; | 1957 library lib; |
| 2059 part 'part.dart';'''); | 1958 part 'part.dart';'''); |
| 2060 // run all tasks without part | 1959 // run all tasks without part |
| 2061 _analyzeAll_assertFinished(); | 1960 _analyzeAll_assertFinished(); |
| 2062 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)), | 1961 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)), |
| 2063 isTrue, | 1962 isTrue, |
| 2064 reason: "lib has errors"); | 1963 reason: "lib has errors"); |
| 2065 // add part and run all tasks | 1964 // add part and run all tasks |
| 2066 Source partSource = addSource( | 1965 Source partSource = addSource("/part.dart", r''' |
| 2067 "/part.dart", | |
| 2068 r''' | |
| 2069 part of lib; | 1966 part of lib; |
| 2070 '''); | 1967 '''); |
| 2071 _analyzeAll_assertFinished(); | 1968 _analyzeAll_assertFinished(); |
| 2072 // "libSource" should be here | 1969 // "libSource" should be here |
| 2073 List<Source> librariesWithPart = context.getLibrariesContaining(partSource); | 1970 List<Source> librariesWithPart = context.getLibrariesContaining(partSource); |
| 2074 expect(librariesWithPart, unorderedEquals([libSource])); | 1971 expect(librariesWithPart, unorderedEquals([libSource])); |
| 2075 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)), | 1972 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)), |
| 2076 isFalse, | 1973 isFalse, |
| 2077 reason: "lib doesn't have errors"); | 1974 reason: "lib doesn't have errors"); |
| 2078 expect( | 1975 expect( |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2145 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull, | 2042 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull, |
| 2146 reason: "part changed 3"); | 2043 reason: "part changed 3"); |
| 2147 _analyzeAll_assertFinished(); | 2044 _analyzeAll_assertFinished(); |
| 2148 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, | 2045 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, |
| 2149 reason: "library resolved 3"); | 2046 reason: "library resolved 3"); |
| 2150 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull, | 2047 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull, |
| 2151 reason: "part resolved 3"); | 2048 reason: "part resolved 3"); |
| 2152 } | 2049 } |
| 2153 | 2050 |
| 2154 void test_performAnalysisTask_changePartContents_makeItAPart() { | 2051 void test_performAnalysisTask_changePartContents_makeItAPart() { |
| 2155 Source libSource = addSource( | 2052 Source libSource = addSource("/lib.dart", r''' |
| 2156 "/lib.dart", | |
| 2157 r''' | |
| 2158 library lib; | 2053 library lib; |
| 2159 part 'part.dart'; | 2054 part 'part.dart'; |
| 2160 void f(x) {}'''); | 2055 void f(x) {}'''); |
| 2161 Source partSource = addSource("/part.dart", "void g() { f(null); }"); | 2056 Source partSource = addSource("/part.dart", "void g() { f(null); }"); |
| 2162 _analyzeAll_assertFinished(); | 2057 _analyzeAll_assertFinished(); |
| 2163 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, | 2058 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, |
| 2164 reason: "library resolved 1"); | 2059 reason: "library resolved 1"); |
| 2165 expect( | 2060 expect( |
| 2166 context.getResolvedCompilationUnit2(partSource, partSource), isNotNull, | 2061 context.getResolvedCompilationUnit2(partSource, partSource), isNotNull, |
| 2167 reason: "part resolved 1"); | 2062 reason: "part resolved 1"); |
| 2168 // update and analyze | 2063 // update and analyze |
| 2169 context.setContents( | 2064 context.setContents(partSource, r''' |
| 2170 partSource, | |
| 2171 r''' | |
| 2172 part of lib; | 2065 part of lib; |
| 2173 void g() { f(null); }'''); | 2066 void g() { f(null); }'''); |
| 2174 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull, | 2067 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull, |
| 2175 reason: "library changed 2"); | 2068 reason: "library changed 2"); |
| 2176 expect(context.getResolvedCompilationUnit2(partSource, partSource), isNull, | 2069 expect(context.getResolvedCompilationUnit2(partSource, partSource), isNull, |
| 2177 reason: "part changed 2"); | 2070 reason: "part changed 2"); |
| 2178 _analyzeAll_assertFinished(); | 2071 _analyzeAll_assertFinished(); |
| 2179 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, | 2072 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, |
| 2180 reason: "library resolved 2"); | 2073 reason: "library resolved 2"); |
| 2181 expect( | 2074 expect( |
| 2182 context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, | 2075 context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, |
| 2183 reason: "part resolved 2"); | 2076 reason: "part resolved 2"); |
| 2184 expect(context.getErrors(libSource).errors, hasLength(0)); | 2077 expect(context.getErrors(libSource).errors, hasLength(0)); |
| 2185 expect(context.getErrors(partSource).errors, hasLength(0)); | 2078 expect(context.getErrors(partSource).errors, hasLength(0)); |
| 2186 } | 2079 } |
| 2187 | 2080 |
| 2188 /** | 2081 /** |
| 2189 * https://code.google.com/p/dart/issues/detail?id=12424 | 2082 * https://code.google.com/p/dart/issues/detail?id=12424 |
| 2190 */ | 2083 */ |
| 2191 void test_performAnalysisTask_changePartContents_makeItNotPart() { | 2084 void test_performAnalysisTask_changePartContents_makeItNotPart() { |
| 2192 Source libSource = addSource( | 2085 Source libSource = addSource("/lib.dart", r''' |
| 2193 "/lib.dart", | |
| 2194 r''' | |
| 2195 library lib; | 2086 library lib; |
| 2196 part 'part.dart'; | 2087 part 'part.dart'; |
| 2197 void f(x) {}'''); | 2088 void f(x) {}'''); |
| 2198 Source partSource = addSource( | 2089 Source partSource = addSource("/part.dart", r''' |
| 2199 "/part.dart", | |
| 2200 r''' | |
| 2201 part of lib; | 2090 part of lib; |
| 2202 void g() { f(null); }'''); | 2091 void g() { f(null); }'''); |
| 2203 _analyzeAll_assertFinished(); | 2092 _analyzeAll_assertFinished(); |
| 2204 expect(context.getErrors(libSource).errors, hasLength(0)); | 2093 expect(context.getErrors(libSource).errors, hasLength(0)); |
| 2205 expect(context.getErrors(partSource).errors, hasLength(0)); | 2094 expect(context.getErrors(partSource).errors, hasLength(0)); |
| 2206 // Remove 'part' directive, which should make "f(null)" an error. | 2095 // Remove 'part' directive, which should make "f(null)" an error. |
| 2207 context.setContents( | 2096 context.setContents(partSource, r''' |
| 2208 partSource, | |
| 2209 r''' | |
| 2210 //part of lib; | 2097 //part of lib; |
| 2211 void g() { f(null); }'''); | 2098 void g() { f(null); }'''); |
| 2212 _analyzeAll_assertFinished(); | 2099 _analyzeAll_assertFinished(); |
| 2213 expect(context.getErrors(libSource).errors.length != 0, isTrue); | 2100 expect(context.getErrors(libSource).errors.length != 0, isTrue); |
| 2214 } | 2101 } |
| 2215 | 2102 |
| 2216 void test_performAnalysisTask_changePartContents_noSemanticChanges() { | 2103 void test_performAnalysisTask_changePartContents_noSemanticChanges() { |
| 2217 Source libSource = | 2104 Source libSource = |
| 2218 addSource("/test.dart", "library lib; part 'test-part.dart';"); | 2105 addSource("/test.dart", "library lib; part 'test-part.dart';"); |
| 2219 Source partSource = addSource("/test-part.dart", "part of lib;"); | 2106 Source partSource = addSource("/test-part.dart", "part of lib;"); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2291 reason: "libA resolved 2"); | 2178 reason: "libA resolved 2"); |
| 2292 expect( | 2179 expect( |
| 2293 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, | 2180 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, |
| 2294 reason: "libB resolved 2"); | 2181 reason: "libB resolved 2"); |
| 2295 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), | 2182 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), |
| 2296 isFalse, | 2183 isFalse, |
| 2297 reason: "libA doesn't have errors"); | 2184 reason: "libA doesn't have errors"); |
| 2298 } | 2185 } |
| 2299 | 2186 |
| 2300 void test_performAnalysisTask_importedLibraryAdd_html() { | 2187 void test_performAnalysisTask_importedLibraryAdd_html() { |
| 2301 Source htmlSource = addSource( | 2188 Source htmlSource = addSource("/page.html", r''' |
| 2302 "/page.html", | |
| 2303 r''' | |
| 2304 <html><body><script type="application/dart"> | 2189 <html><body><script type="application/dart"> |
| 2305 import '/libB.dart'; | 2190 import '/libB.dart'; |
| 2306 main() {print('hello dart');} | 2191 main() {print('hello dart');} |
| 2307 </script></body></html>'''); | 2192 </script></body></html>'''); |
| 2308 _analyzeAll_assertFinished(); | 2193 _analyzeAll_assertFinished(); |
| 2309 context.computeErrors(htmlSource); | 2194 context.computeErrors(htmlSource); |
| 2310 // expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)), | 2195 // expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)), |
| 2311 // isTrue, | 2196 // isTrue, |
| 2312 // reason: "htmlSource has an error"); | 2197 // reason: "htmlSource has an error"); |
| 2313 // add libB.dart and analyze | 2198 // add libB.dart and analyze |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2344 _analyzeAll_assertFinished(); | 2229 _analyzeAll_assertFinished(); |
| 2345 expect( | 2230 expect( |
| 2346 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, | 2231 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, |
| 2347 reason: "libA resolved 2"); | 2232 reason: "libA resolved 2"); |
| 2348 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), | 2233 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), |
| 2349 isTrue, | 2234 isTrue, |
| 2350 reason: "libA has an error"); | 2235 reason: "libA has an error"); |
| 2351 } | 2236 } |
| 2352 | 2237 |
| 2353 void test_performAnalysisTask_interruptBy_setContents() { | 2238 void test_performAnalysisTask_interruptBy_setContents() { |
| 2354 Source sourceA = addSource( | 2239 Source sourceA = addSource('/a.dart', r''' |
| 2355 '/a.dart', | |
| 2356 r''' | |
| 2357 library expectedToFindSemicolon | 2240 library expectedToFindSemicolon |
| 2358 '''); | 2241 '''); |
| 2359 // Analyze to the point where some of the results stop depending on | 2242 // Analyze to the point where some of the results stop depending on |
| 2360 // the source content. | 2243 // the source content. |
| 2361 LibrarySpecificUnit unitA = new LibrarySpecificUnit(sourceA, sourceA); | 2244 LibrarySpecificUnit unitA = new LibrarySpecificUnit(sourceA, sourceA); |
| 2362 for (int i = 0; i < 10000; i++) { | 2245 for (int i = 0; i < 10000; i++) { |
| 2363 context.performAnalysisTask(); | 2246 context.performAnalysisTask(); |
| 2364 if (context.getResult(unitA, RESOLVED_UNIT3) != null) { | 2247 if (context.getResult(unitA, RESOLVED_UNIT3) != null) { |
| 2365 break; | 2248 break; |
| 2366 } | 2249 } |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2444 .getFile(resourceProvider.convertPath('/test.dart')) | 2327 .getFile(resourceProvider.convertPath('/test.dart')) |
| 2445 .toUri() | 2328 .toUri() |
| 2446 .toString(); | 2329 .toString(); |
| 2447 expect(libraryElementUris, contains(testUri)); | 2330 expect(libraryElementUris, contains(testUri)); |
| 2448 expect(parsedUnitUris, contains(testUri)); | 2331 expect(parsedUnitUris, contains(testUri)); |
| 2449 expect(resolvedUnitUris, contains(testUri)); | 2332 expect(resolvedUnitUris, contains(testUri)); |
| 2450 } | 2333 } |
| 2451 | 2334 |
| 2452 void test_performAnalysisTask_switchPackageVersion() { | 2335 void test_performAnalysisTask_switchPackageVersion() { |
| 2453 // version 1 | 2336 // version 1 |
| 2454 resourceProvider.newFile( | 2337 resourceProvider.newFile('/pkgs/crypto-1/lib/crypto.dart', r''' |
| 2455 '/pkgs/crypto-1/lib/crypto.dart', | |
| 2456 r''' | |
| 2457 library crypto; | 2338 library crypto; |
| 2458 part 'src/hash_utils.dart'; | 2339 part 'src/hash_utils.dart'; |
| 2459 '''); | 2340 '''); |
| 2460 resourceProvider.newFile( | 2341 resourceProvider.newFile('/pkgs/crypto-1/lib/src/hash_utils.dart', r''' |
| 2461 '/pkgs/crypto-1/lib/src/hash_utils.dart', | |
| 2462 r''' | |
| 2463 part of crypto; | 2342 part of crypto; |
| 2464 const _MASK_8 = 0xff; | 2343 const _MASK_8 = 0xff; |
| 2465 '''); | 2344 '''); |
| 2466 // version 2 | 2345 // version 2 |
| 2467 resourceProvider.newFile( | 2346 resourceProvider.newFile('/pkgs/crypto-2/lib/crypto.dart', r''' |
| 2468 '/pkgs/crypto-2/lib/crypto.dart', | |
| 2469 r''' | |
| 2470 library crypto; | 2347 library crypto; |
| 2471 part 'src/hash_utils.dart'; | 2348 part 'src/hash_utils.dart'; |
| 2472 '''); | 2349 '''); |
| 2473 resourceProvider.newFile( | 2350 resourceProvider.newFile('/pkgs/crypto-2/lib/src/hash_utils.dart', r''' |
| 2474 '/pkgs/crypto-2/lib/src/hash_utils.dart', | |
| 2475 r''' | |
| 2476 part of crypto; | 2351 part of crypto; |
| 2477 const _MASK_8 = 0xff; | 2352 const _MASK_8 = 0xff; |
| 2478 '''); | 2353 '''); |
| 2479 // use version 1 | 2354 // use version 1 |
| 2480 context.sourceFactory = new SourceFactory(<UriResolver>[ | 2355 context.sourceFactory = new SourceFactory(<UriResolver>[ |
| 2481 sdkResolver, | 2356 sdkResolver, |
| 2482 resourceResolver, | 2357 resourceResolver, |
| 2483 new PackageMapUriResolver(resourceProvider, { | 2358 new PackageMapUriResolver(resourceProvider, { |
| 2484 'crypto': [resourceProvider.getFolder('/pkgs/crypto-1/lib')] | 2359 'crypto': [resourceProvider.getFolder('/pkgs/crypto-1/lib')] |
| 2485 }) | 2360 }) |
| 2486 ]); | 2361 ]); |
| 2487 // analyze | 2362 // analyze |
| 2488 addSource( | 2363 addSource("/test.dart", r''' |
| 2489 "/test.dart", | |
| 2490 r''' | |
| 2491 import 'package:crypto/crypto.dart'; | 2364 import 'package:crypto/crypto.dart'; |
| 2492 '''); | 2365 '''); |
| 2493 _analyzeAll_assertFinished(); | 2366 _analyzeAll_assertFinished(); |
| 2494 // use version 2 | 2367 // use version 2 |
| 2495 context.sourceFactory = new SourceFactory(<UriResolver>[ | 2368 context.sourceFactory = new SourceFactory(<UriResolver>[ |
| 2496 sdkResolver, | 2369 sdkResolver, |
| 2497 resourceResolver, | 2370 resourceResolver, |
| 2498 new PackageMapUriResolver(resourceProvider, { | 2371 new PackageMapUriResolver(resourceProvider, { |
| 2499 'crypto': [resourceProvider.getFolder('/pkgs/crypto-2/lib')] | 2372 'crypto': [resourceProvider.getFolder('/pkgs/crypto-2/lib')] |
| 2500 }) | 2373 }) |
| 2501 ]); | 2374 ]); |
| 2502 _analyzeAll_assertFinished(); | 2375 _analyzeAll_assertFinished(); |
| 2503 _assertNoExceptions(); | 2376 _assertNoExceptions(); |
| 2504 } | 2377 } |
| 2505 | 2378 |
| 2506 @failingTest // TODO(paulberry): Remove the annotation when dartbug.com/28515
is fixed. | 2379 @failingTest // TODO(paulberry): Remove the annotation when dartbug.com/28515
is fixed. |
| 2507 void test_resolveCompilationUnit_existingElementModel() { | 2380 void test_resolveCompilationUnit_existingElementModel() { |
| 2508 prepareAnalysisContext(new AnalysisOptionsImpl()..strongMode = true); | 2381 prepareAnalysisContext(new AnalysisOptionsImpl()..strongMode = true); |
| 2509 Source source = addSource( | 2382 Source source = addSource('/test.dart', r''' |
| 2510 '/test.dart', | |
| 2511 r''' | |
| 2512 library test; | 2383 library test; |
| 2513 | 2384 |
| 2514 String topLevelVariable; | 2385 String topLevelVariable; |
| 2515 int get topLevelGetter => 0; | 2386 int get topLevelGetter => 0; |
| 2516 void set topLevelSetter(int value) {} | 2387 void set topLevelSetter(int value) {} |
| 2517 String topLevelFunction(int i) => ''; | 2388 String topLevelFunction(int i) => ''; |
| 2518 | 2389 |
| 2519 typedef String FunctionTypeAlias(int i); | 2390 typedef String FunctionTypeAlias(int i); |
| 2520 | 2391 |
| 2521 enum EnumeratedType {Invalid, Valid} | 2392 enum EnumeratedType {Invalid, Valid} |
| (...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3108 * Initialize the visitor. | 2979 * Initialize the visitor. |
| 3109 */ | 2980 */ |
| 3110 _ElementGatherer(); | 2981 _ElementGatherer(); |
| 3111 | 2982 |
| 3112 @override | 2983 @override |
| 3113 void visitElement(Element element) { | 2984 void visitElement(Element element) { |
| 3114 elements[element] = element; | 2985 elements[element] = element; |
| 3115 super.visitElement(element); | 2986 super.visitElement(element); |
| 3116 } | 2987 } |
| 3117 } | 2988 } |
| OLD | NEW |