Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: pkg/analyzer/test/src/context/context_test.dart

Issue 1266923004: More fixes for failures on the Windows bot (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 test.src.context.context_test; 5 library test.src.context.context_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analyzer/file_system/memory_file_system.dart'; 9 import 'package:analyzer/file_system/memory_file_system.dart';
10 import 'package:analyzer/src/cancelable_future.dart'; 10 import 'package:analyzer/src/cancelable_future.dart';
(...skipping 27 matching lines...) Expand all
38 import 'package:analyzer/src/task/html.dart'; 38 import 'package:analyzer/src/task/html.dart';
39 import 'package:analyzer/task/dart.dart'; 39 import 'package:analyzer/task/dart.dart';
40 import 'package:analyzer/task/model.dart'; 40 import 'package:analyzer/task/model.dart';
41 import 'package:html/dom.dart' show Document; 41 import 'package:html/dom.dart' show Document;
42 import 'package:unittest/unittest.dart'; 42 import 'package:unittest/unittest.dart';
43 import 'package:watcher/src/utils.dart'; 43 import 'package:watcher/src/utils.dart';
44 44
45 import '../../generated/engine_test.dart'; 45 import '../../generated/engine_test.dart';
46 import '../../generated/test_support.dart'; 46 import '../../generated/test_support.dart';
47 import '../../reflective_tests.dart'; 47 import '../../reflective_tests.dart';
48 import '../../utils.dart';
48 import 'abstract_context.dart'; 49 import 'abstract_context.dart';
49 50
50 main() { 51 main() {
51 groupSep = ' | '; 52 initializeTestEnvironment();
52 runReflectiveTests(AnalysisContextImplTest); 53 runReflectiveTests(AnalysisContextImplTest);
53 runReflectiveTests(LimitedInvalidateTest); 54 runReflectiveTests(LimitedInvalidateTest);
54 } 55 }
55 56
56 @reflectiveTest 57 @reflectiveTest
57 class AnalysisContextImplTest extends AbstractContextTest { 58 class AnalysisContextImplTest extends AbstractContextTest {
58 Future fail_implicitAnalysisEvents_removed() async { 59 Future fail_implicitAnalysisEvents_removed() async {
59 AnalyzedSourcesListener listener = new AnalyzedSourcesListener(); 60 AnalyzedSourcesListener listener = new AnalyzedSourcesListener();
60 context.implicitAnalysisEvents.listen(listener.onData); 61 context.implicitAnalysisEvents.listen(listener.onData);
61 // 62 //
(...skipping 14 matching lines...) Expand all
76 // longer implicitly analyzing the file. 77 // longer implicitly analyzing the file.
77 // 78 //
78 context.setContents(sourceA, "library a;"); 79 context.setContents(sourceA, "library a;");
79 context.computeErrors(sourceA); 80 context.computeErrors(sourceA);
80 await pumpEventQueue(); 81 await pumpEventQueue();
81 listener.expectNotAnalyzed(sourceB); 82 listener.expectNotAnalyzed(sourceB);
82 } 83 }
83 84
84 void fail_performAnalysisTask_importedLibraryDelete_html() { 85 void fail_performAnalysisTask_importedLibraryDelete_html() {
85 // NOTE: This was failing before converting to the new task model. 86 // NOTE: This was failing before converting to the new task model.
86 Source htmlSource = addSource("/page.html", r''' 87 Source htmlSource = addSource(
88 "/page.html",
89 r'''
87 <html><body><script type="application/dart"> 90 <html><body><script type="application/dart">
88 import 'libB.dart'; 91 import 'libB.dart';
89 main() {print('hello dart');} 92 main() {print('hello dart');}
90 </script></body></html>'''); 93 </script></body></html>''');
91 Source libBSource = addSource("/libB.dart", "library libB;"); 94 Source libBSource = addSource("/libB.dart", "library libB;");
92 _analyzeAll_assertFinished(); 95 _analyzeAll_assertFinished();
93 context.computeErrors(htmlSource); 96 context.computeErrors(htmlSource);
94 expect( 97 expect(
95 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, 98 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
96 reason: "libB resolved 1"); 99 reason: "libB resolved 1");
97 expect(!_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)), 100 expect(!_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)),
98 isTrue, reason: "htmlSource doesn't have errors"); 101 isTrue,
102 reason: "htmlSource doesn't have errors");
99 // remove libB.dart content and analyze 103 // remove libB.dart content and analyze
100 context.setContents(libBSource, null); 104 context.setContents(libBSource, null);
101 _analyzeAll_assertFinished(); 105 _analyzeAll_assertFinished();
102 context.computeErrors(htmlSource); 106 context.computeErrors(htmlSource);
103 AnalysisErrorInfo errors = context.getErrors(htmlSource); 107 AnalysisErrorInfo errors = context.getErrors(htmlSource);
104 expect(_hasAnalysisErrorWithErrorSeverity(errors), isTrue, 108 expect(_hasAnalysisErrorWithErrorSeverity(errors), isTrue,
105 reason: "htmlSource has an error"); 109 reason: "htmlSource has an error");
106 } 110 }
107 111
108 void fail_recordLibraryElements() { 112 void fail_recordLibraryElements() {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 changeSet2.changedContent(source, 'library test;'); 171 changeSet2.changedContent(source, 'library test;');
168 context.applyChanges(changeSet2); 172 context.applyChanges(changeSet2);
169 return pumpEventQueue().then((_) { 173 return pumpEventQueue().then((_) {
170 listener.assertEvent(wereSourcesAdded: true); 174 listener.assertEvent(wereSourcesAdded: true);
171 listener.assertEvent(wereSourcesAdded: true, changedSources: [source]); 175 listener.assertEvent(wereSourcesAdded: true, changedSources: [source]);
172 listener.assertNoMoreEvents(); 176 listener.assertNoMoreEvents();
173 }); 177 });
174 } 178 }
175 179
176 void test_applyChanges_change_flush_element() { 180 void test_applyChanges_change_flush_element() {
177 Source librarySource = addSource("/lib.dart", r''' 181 Source librarySource = addSource(
182 "/lib.dart",
183 r'''
178 library lib; 184 library lib;
179 int a = 0;'''); 185 int a = 0;''');
180 expect(context.computeLibraryElement(librarySource), isNotNull); 186 expect(context.computeLibraryElement(librarySource), isNotNull);
181 context.setContents(librarySource, r''' 187 context.setContents(
188 librarySource,
189 r'''
182 library lib; 190 library lib;
183 int aa = 0;'''); 191 int aa = 0;''');
184 expect(context.getLibraryElement(librarySource), isNull); 192 expect(context.getLibraryElement(librarySource), isNull);
185 } 193 }
186 194
187 Future test_applyChanges_change_multiple() { 195 Future test_applyChanges_change_multiple() {
188 SourcesChangedListener listener = new SourcesChangedListener(); 196 SourcesChangedListener listener = new SourcesChangedListener();
189 context.onSourcesChanged.listen(listener.onData); 197 context.onSourcesChanged.listen(listener.onData);
190 String libraryContents1 = r''' 198 String libraryContents1 = r'''
191 library lib; 199 library lib;
(...skipping 19 matching lines...) Expand all
211 context.resolveCompilationUnit2(librarySource, librarySource); 219 context.resolveCompilationUnit2(librarySource, librarySource);
212 expect(libraryUnit, isNotNull); 220 expect(libraryUnit, isNotNull);
213 CompilationUnit partUnit = 221 CompilationUnit partUnit =
214 context.resolveCompilationUnit2(partSource, librarySource); 222 context.resolveCompilationUnit2(partSource, librarySource);
215 expect(partUnit, isNotNull); 223 expect(partUnit, isNotNull);
216 TopLevelVariableDeclaration declaration = 224 TopLevelVariableDeclaration declaration =
217 libraryUnit.declarations[0] as TopLevelVariableDeclaration; 225 libraryUnit.declarations[0] as TopLevelVariableDeclaration;
218 Element declarationElement = declaration.variables.variables[0].element; 226 Element declarationElement = declaration.variables.variables[0].element;
219 TopLevelVariableDeclaration use = 227 TopLevelVariableDeclaration use =
220 partUnit.declarations[0] as TopLevelVariableDeclaration; 228 partUnit.declarations[0] as TopLevelVariableDeclaration;
221 Element useElement = (use.variables.variables[ 229 Element useElement = (use.variables.variables[0].initializer
222 0].initializer as SimpleIdentifier).staticElement; 230 as SimpleIdentifier).staticElement;
223 expect((useElement as PropertyAccessorElement).variable, 231 expect((useElement as PropertyAccessorElement).variable,
224 same(declarationElement)); 232 same(declarationElement));
225 return pumpEventQueue().then((_) { 233 return pumpEventQueue().then((_) {
226 listener.assertEvent(wereSourcesAdded: true); 234 listener.assertEvent(wereSourcesAdded: true);
227 listener.assertEvent(wereSourcesAdded: true); 235 listener.assertEvent(wereSourcesAdded: true);
228 listener.assertEvent(changedSources: [librarySource]); 236 listener.assertEvent(changedSources: [librarySource]);
229 listener.assertEvent(changedSources: [partSource]); 237 listener.assertEvent(changedSources: [partSource]);
230 listener.assertNoMoreEvents(); 238 listener.assertNoMoreEvents();
231 }); 239 });
232 } 240 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 /** 315 /**
308 * IDEA uses the following scenario: 316 * IDEA uses the following scenario:
309 * 1. Add overlay. 317 * 1. Add overlay.
310 * 2. Change overlay. 318 * 2. Change overlay.
311 * 3. If the contents of the document buffer is the same as the contents 319 * 3. If the contents of the document buffer is the same as the contents
312 * of the file, remove overlay. 320 * of the file, remove overlay.
313 * So, we need to try to use incremental resolution for removing overlays too. 321 * So, we need to try to use incremental resolution for removing overlays too.
314 */ 322 */
315 void test_applyChanges_remove_incremental() { 323 void test_applyChanges_remove_incremental() {
316 MemoryResourceProvider resourceProvider = new MemoryResourceProvider(); 324 MemoryResourceProvider resourceProvider = new MemoryResourceProvider();
317 Source source = resourceProvider.newFile('/test.dart', r''' 325 Source source = resourceProvider
326 .newFile(
327 '/test.dart',
328 r'''
318 main() { 329 main() {
319 print(1); 330 print(1);
320 } 331 }
321 ''').createSource(); 332 ''')
333 .createSource();
322 context.analysisOptions = new AnalysisOptionsImpl()..incremental = true; 334 context.analysisOptions = new AnalysisOptionsImpl()..incremental = true;
323 context.applyChanges(new ChangeSet()..addedSource(source)); 335 context.applyChanges(new ChangeSet()..addedSource(source));
324 // remember compilation unit 336 // remember compilation unit
325 _analyzeAll_assertFinished(); 337 _analyzeAll_assertFinished();
326 CompilationUnit unit = context.getResolvedCompilationUnit2(source, source); 338 CompilationUnit unit = context.getResolvedCompilationUnit2(source, source);
327 // add overlay 339 // add overlay
328 context.setContents(source, r''' 340 context.setContents(
341 source,
342 r'''
329 main() { 343 main() {
330 print(12); 344 print(12);
331 } 345 }
332 '''); 346 ''');
333 _analyzeAll_assertFinished(); 347 _analyzeAll_assertFinished();
334 expect(context.getResolvedCompilationUnit2(source, source), unit); 348 expect(context.getResolvedCompilationUnit2(source, source), unit);
335 // remove overlay 349 // remove overlay
336 context.setContents(source, null); 350 context.setContents(source, null);
337 context.validateCacheConsistency(); 351 context.validateCacheConsistency();
338 _analyzeAll_assertFinished(); 352 _analyzeAll_assertFinished();
(...skipping 24 matching lines...) Expand all
363 return pumpEventQueue().then((_) { 377 return pumpEventQueue().then((_) {
364 listener.assertEvent(wereSourcesAdded: true); 378 listener.assertEvent(wereSourcesAdded: true);
365 listener.assertEvent(wereSourcesAdded: true); 379 listener.assertEvent(wereSourcesAdded: true);
366 listener.assertEvent(wereSourcesRemovedOrDeleted: true); 380 listener.assertEvent(wereSourcesRemovedOrDeleted: true);
367 listener.assertNoMoreEvents(); 381 listener.assertNoMoreEvents();
368 }); 382 });
369 } 383 }
370 384
371 void test_computeDocumentationComment_block() { 385 void test_computeDocumentationComment_block() {
372 String comment = "/** Comment */"; 386 String comment = "/** Comment */";
373 Source source = addSource("/test.dart", """ 387 Source source = addSource(
388 "/test.dart",
389 """
374 $comment 390 $comment
375 class A {}"""); 391 class A {}""");
376 LibraryElement libraryElement = context.computeLibraryElement(source); 392 LibraryElement libraryElement = context.computeLibraryElement(source);
377 expect(libraryElement, isNotNull); 393 expect(libraryElement, isNotNull);
378 ClassElement classElement = libraryElement.definingCompilationUnit.types[0]; 394 ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
379 expect(libraryElement, isNotNull); 395 expect(libraryElement, isNotNull);
380 expect(context.computeDocumentationComment(classElement), comment); 396 expect(context.computeDocumentationComment(classElement), comment);
381 } 397 }
382 398
383 void test_computeDocumentationComment_none() { 399 void test_computeDocumentationComment_none() {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 expect(context.computeKindOf(source), same(SourceKind.PART)); 504 expect(context.computeKindOf(source), same(SourceKind.PART));
489 } 505 }
490 506
491 void test_computeLibraryElement() { 507 void test_computeLibraryElement() {
492 Source source = addSource("/test.dart", "library lib;"); 508 Source source = addSource("/test.dart", "library lib;");
493 LibraryElement element = context.computeLibraryElement(source); 509 LibraryElement element = context.computeLibraryElement(source);
494 expect(element, isNotNull); 510 expect(element, isNotNull);
495 } 511 }
496 512
497 void test_computeLineInfo_dart() { 513 void test_computeLineInfo_dart() {
498 Source source = addSource("/test.dart", r''' 514 Source source = addSource(
515 "/test.dart",
516 r'''
499 library lib; 517 library lib;
500 518
501 main() {}'''); 519 main() {}''');
502 LineInfo info = context.computeLineInfo(source); 520 LineInfo info = context.computeLineInfo(source);
503 expect(info, isNotNull); 521 expect(info, isNotNull);
504 } 522 }
505 523
506 void test_computeLineInfo_html() { 524 void test_computeLineInfo_html() {
507 Source source = addSource("/test.html", r''' 525 Source source = addSource(
526 "/test.html",
527 r'''
508 <html> 528 <html>
509 <body> 529 <body>
510 <h1>A</h1> 530 <h1>A</h1>
511 </body> 531 </body>
512 </html>'''); 532 </html>''');
513 LineInfo info = context.computeLineInfo(source); 533 LineInfo info = context.computeLineInfo(source);
514 expect(info, isNotNull); 534 expect(info, isNotNull);
515 } 535 }
516 536
517 Future test_computeResolvedCompilationUnitAsync() { 537 Future test_computeResolvedCompilationUnitAsync() {
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 context.getCacheEntry(libTarget).getValue(RESOLVED_UNIT); 663 context.getCacheEntry(libTarget).getValue(RESOLVED_UNIT);
644 List<CompilationUnit> units = context.ensureResolvedDartUnits(source); 664 List<CompilationUnit> units = context.ensureResolvedDartUnits(source);
645 expect(units, unorderedEquals([unit])); 665 expect(units, unorderedEquals([unit]));
646 } 666 }
647 667
648 void test_ensureResolvedDartUnits_definingUnit_notResolved() { 668 void test_ensureResolvedDartUnits_definingUnit_notResolved() {
649 Source source = addSource('/test.dart', ''); 669 Source source = addSource('/test.dart', '');
650 LibrarySpecificUnit libTarget = new LibrarySpecificUnit(source, source); 670 LibrarySpecificUnit libTarget = new LibrarySpecificUnit(source, source);
651 analysisDriver.computeResult(libTarget, RESOLVED_UNIT); 671 analysisDriver.computeResult(libTarget, RESOLVED_UNIT);
652 // flush 672 // flush
653 context.getCacheEntry(libTarget).setState( 673 context
654 RESOLVED_UNIT, CacheState.FLUSHED); 674 .getCacheEntry(libTarget)
675 .setState(RESOLVED_UNIT, CacheState.FLUSHED);
655 // schedule recomputing 676 // schedule recomputing
656 List<CompilationUnit> units = context.ensureResolvedDartUnits(source); 677 List<CompilationUnit> units = context.ensureResolvedDartUnits(source);
657 expect(units, isNull); 678 expect(units, isNull);
658 // should be the next result to compute 679 // should be the next result to compute
659 TargetedResult nextResult = context.dartWorkManager.getNextResult(); 680 TargetedResult nextResult = context.dartWorkManager.getNextResult();
660 expect(nextResult.target, libTarget); 681 expect(nextResult.target, libTarget);
661 expect(nextResult.result, RESOLVED_UNIT); 682 expect(nextResult.result, RESOLVED_UNIT);
662 } 683 }
663 684
664 void test_ensureResolvedDartUnits_partUnit_hasResolved() { 685 void test_ensureResolvedDartUnits_partUnit_hasResolved() {
665 Source libSource1 = addSource('/lib1.dart', r''' 686 Source libSource1 = addSource(
687 '/lib1.dart',
688 r'''
666 library lib; 689 library lib;
667 part 'part.dart'; 690 part 'part.dart';
668 '''); 691 ''');
669 Source libSource2 = addSource('/lib2.dart', r''' 692 Source libSource2 = addSource(
693 '/lib2.dart',
694 r'''
670 library lib; 695 library lib;
671 part 'part.dart'; 696 part 'part.dart';
672 '''); 697 ''');
673 Source partSource = addSource('/part.dart', r''' 698 Source partSource = addSource(
699 '/part.dart',
700 r'''
674 part of lib; 701 part of lib;
675 '''); 702 ''');
676 LibrarySpecificUnit partTarget1 = 703 LibrarySpecificUnit partTarget1 =
677 new LibrarySpecificUnit(libSource1, partSource); 704 new LibrarySpecificUnit(libSource1, partSource);
678 LibrarySpecificUnit partTarget2 = 705 LibrarySpecificUnit partTarget2 =
679 new LibrarySpecificUnit(libSource2, partSource); 706 new LibrarySpecificUnit(libSource2, partSource);
680 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT); 707 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT);
681 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT); 708 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT);
682 CompilationUnit unit1 = 709 CompilationUnit unit1 =
683 context.getCacheEntry(partTarget1).getValue(RESOLVED_UNIT); 710 context.getCacheEntry(partTarget1).getValue(RESOLVED_UNIT);
684 CompilationUnit unit2 = 711 CompilationUnit unit2 =
685 context.getCacheEntry(partTarget2).getValue(RESOLVED_UNIT); 712 context.getCacheEntry(partTarget2).getValue(RESOLVED_UNIT);
686 List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource); 713 List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource);
687 expect(units, unorderedEquals([unit1, unit2])); 714 expect(units, unorderedEquals([unit1, unit2]));
688 } 715 }
689 716
690 void test_ensureResolvedDartUnits_partUnit_notResolved() { 717 void test_ensureResolvedDartUnits_partUnit_notResolved() {
691 Source libSource1 = addSource('/lib1.dart', r''' 718 Source libSource1 = addSource(
719 '/lib1.dart',
720 r'''
692 library lib; 721 library lib;
693 part 'part.dart'; 722 part 'part.dart';
694 '''); 723 ''');
695 Source libSource2 = addSource('/lib2.dart', r''' 724 Source libSource2 = addSource(
725 '/lib2.dart',
726 r'''
696 library lib; 727 library lib;
697 part 'part.dart'; 728 part 'part.dart';
698 '''); 729 ''');
699 Source partSource = addSource('/part.dart', r''' 730 Source partSource = addSource(
731 '/part.dart',
732 r'''
700 part of lib; 733 part of lib;
701 '''); 734 ''');
702 LibrarySpecificUnit partTarget1 = 735 LibrarySpecificUnit partTarget1 =
703 new LibrarySpecificUnit(libSource1, partSource); 736 new LibrarySpecificUnit(libSource1, partSource);
704 LibrarySpecificUnit partTarget2 = 737 LibrarySpecificUnit partTarget2 =
705 new LibrarySpecificUnit(libSource2, partSource); 738 new LibrarySpecificUnit(libSource2, partSource);
706 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT); 739 analysisDriver.computeResult(partTarget1, RESOLVED_UNIT);
707 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT); 740 analysisDriver.computeResult(partTarget2, RESOLVED_UNIT);
708 // flush 741 // flush
709 context.getCacheEntry(partTarget1).setState( 742 context
710 RESOLVED_UNIT, CacheState.FLUSHED); 743 .getCacheEntry(partTarget1)
711 context.getCacheEntry(partTarget2).setState( 744 .setState(RESOLVED_UNIT, CacheState.FLUSHED);
712 RESOLVED_UNIT, CacheState.FLUSHED); 745 context
746 .getCacheEntry(partTarget2)
747 .setState(RESOLVED_UNIT, CacheState.FLUSHED);
713 // schedule recomputing 748 // schedule recomputing
714 List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource); 749 List<CompilationUnit> units = context.ensureResolvedDartUnits(partSource);
715 expect(units, isNull); 750 expect(units, isNull);
716 // should be the next result to compute 751 // should be the next result to compute
717 TargetedResult nextResult = context.dartWorkManager.getNextResult(); 752 TargetedResult nextResult = context.dartWorkManager.getNextResult();
718 expect(nextResult.target, anyOf(partTarget1, partTarget2)); 753 expect(nextResult.target, anyOf(partTarget1, partTarget2));
719 expect(nextResult.result, RESOLVED_UNIT); 754 expect(nextResult.result, RESOLVED_UNIT);
720 } 755 }
721 756
722 void test_exists_false() { 757 void test_exists_false() {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 expect(core, isNotNull); 813 expect(core, isNotNull);
779 ClassElement classObject = 814 ClassElement classObject =
780 _findClass(core.definingCompilationUnit, "Object"); 815 _findClass(core.definingCompilationUnit, "Object");
781 expect(classObject, isNotNull); 816 expect(classObject, isNotNull);
782 ElementLocation location = classObject.location; 817 ElementLocation location = classObject.location;
783 Element element = context.getElement(location); 818 Element element = context.getElement(location);
784 expect(element, same(classObject)); 819 expect(element, same(classObject));
785 } 820 }
786 821
787 void test_getElement_constructor_named() { 822 void test_getElement_constructor_named() {
788 Source source = addSource("/lib.dart", r''' 823 Source source = addSource(
824 "/lib.dart",
825 r'''
789 class A { 826 class A {
790 A.named() {} 827 A.named() {}
791 }'''); 828 }''');
792 _analyzeAll_assertFinished(); 829 _analyzeAll_assertFinished();
793 LibraryElement library = context.computeLibraryElement(source); 830 LibraryElement library = context.computeLibraryElement(source);
794 ClassElement classA = _findClass(library.definingCompilationUnit, "A"); 831 ClassElement classA = _findClass(library.definingCompilationUnit, "A");
795 ConstructorElement constructor = classA.constructors[0]; 832 ConstructorElement constructor = classA.constructors[0];
796 ElementLocation location = constructor.location; 833 ElementLocation location = constructor.location;
797 Element element = context.getElement(location); 834 Element element = context.getElement(location);
798 expect(element, same(constructor)); 835 expect(element, same(constructor));
799 } 836 }
800 837
801 void test_getElement_constructor_unnamed() { 838 void test_getElement_constructor_unnamed() {
802 Source source = addSource("/lib.dart", r''' 839 Source source = addSource(
840 "/lib.dart",
841 r'''
803 class A { 842 class A {
804 A() {} 843 A() {}
805 }'''); 844 }''');
806 _analyzeAll_assertFinished(); 845 _analyzeAll_assertFinished();
807 LibraryElement library = context.computeLibraryElement(source); 846 LibraryElement library = context.computeLibraryElement(source);
808 ClassElement classA = _findClass(library.definingCompilationUnit, "A"); 847 ClassElement classA = _findClass(library.definingCompilationUnit, "A");
809 ConstructorElement constructor = classA.constructors[0]; 848 ConstructorElement constructor = classA.constructors[0];
810 ElementLocation location = constructor.location; 849 ElementLocation location = constructor.location;
811 Element element = context.getElement(location); 850 Element element = context.getElement(location);
812 expect(element, same(constructor)); 851 expect(element, same(constructor));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 AnalysisErrorInfo errorInfo = context.getErrors(source); 887 AnalysisErrorInfo errorInfo = context.getErrors(source);
849 expect(errorInfo, isNotNull); 888 expect(errorInfo, isNotNull);
850 List<AnalysisError> errors = errorInfo.errors; 889 List<AnalysisError> errors = errorInfo.errors;
851 expect(errors, hasLength(0)); 890 expect(errors, hasLength(0));
852 context.computeErrors(source); 891 context.computeErrors(source);
853 errors = errorInfo.errors; 892 errors = errorInfo.errors;
854 expect(errors, hasLength(0)); 893 expect(errors, hasLength(0));
855 } 894 }
856 895
857 void test_getErrors_html_some() { 896 void test_getErrors_html_some() {
858 Source source = addSource("/test.html", r''' 897 Source source = addSource(
898 "/test.html",
899 r'''
859 <html><head> 900 <html><head>
860 <script type='application/dart' src='test.dart'/> 901 <script type='application/dart' src='test.dart'/>
861 </head></html>'''); 902 </head></html>''');
862 AnalysisErrorInfo errorInfo = context.getErrors(source); 903 AnalysisErrorInfo errorInfo = context.getErrors(source);
863 expect(errorInfo, isNotNull); 904 expect(errorInfo, isNotNull);
864 List<AnalysisError> errors = errorInfo.errors; 905 List<AnalysisError> errors = errorInfo.errors;
865 expect(errors, hasLength(0)); 906 expect(errors, hasLength(0));
866 errors = context.computeErrors(source); 907 errors = context.computeErrors(source);
867 expect(errors, hasLength(3)); 908 expect(errors, hasLength(3));
868 } 909 }
869 910
870 void test_getHtmlFilesReferencing_html() { 911 void test_getHtmlFilesReferencing_html() {
871 Source htmlSource = addSource("/test.html", r''' 912 Source htmlSource = addSource(
913 "/test.html",
914 r'''
872 <html><head> 915 <html><head>
873 <script type='application/dart' src='test.dart'/> 916 <script type='application/dart' src='test.dart'/>
874 <script type='application/dart' src='test.js'/> 917 <script type='application/dart' src='test.js'/>
875 </head></html>'''); 918 </head></html>''');
876 Source librarySource = addSource("/test.dart", "library lib;"); 919 Source librarySource = addSource("/test.dart", "library lib;");
877 Source secondHtmlSource = addSource("/test.html", "<html></html>"); 920 Source secondHtmlSource = addSource("/test.html", "<html></html>");
878 context.computeLibraryElement(librarySource); 921 context.computeLibraryElement(librarySource);
879 List<Source> result = context.getHtmlFilesReferencing(secondHtmlSource); 922 List<Source> result = context.getHtmlFilesReferencing(secondHtmlSource);
880 expect(result, hasLength(0)); 923 expect(result, hasLength(0));
881 context.parseHtmlDocument(htmlSource); 924 context.parseHtmlDocument(htmlSource);
882 result = context.getHtmlFilesReferencing(secondHtmlSource); 925 result = context.getHtmlFilesReferencing(secondHtmlSource);
883 expect(result, hasLength(0)); 926 expect(result, hasLength(0));
884 } 927 }
885 928
886 void test_getHtmlFilesReferencing_library() { 929 void test_getHtmlFilesReferencing_library() {
887 Source htmlSource = addSource("/test.html", r''' 930 Source htmlSource = addSource(
931 "/test.html",
932 r'''
888 <!DOCTYPE html> 933 <!DOCTYPE html>
889 <html><head> 934 <html><head>
890 <script type='application/dart' src='test.dart'/> 935 <script type='application/dart' src='test.dart'/>
891 <script type='application/dart' src='test.js'/> 936 <script type='application/dart' src='test.js'/>
892 </head></html>'''); 937 </head></html>''');
893 Source librarySource = addSource("/test.dart", "library lib;"); 938 Source librarySource = addSource("/test.dart", "library lib;");
894 context.computeLibraryElement(librarySource); 939 context.computeLibraryElement(librarySource);
895 List<Source> result = context.getHtmlFilesReferencing(librarySource); 940 List<Source> result = context.getHtmlFilesReferencing(librarySource);
896 expect(result, hasLength(0)); 941 expect(result, hasLength(0));
897 // Indirectly force the data to be computed. 942 // Indirectly force the data to be computed.
898 context.computeErrors(htmlSource); 943 context.computeErrors(htmlSource);
899 result = context.getHtmlFilesReferencing(librarySource); 944 result = context.getHtmlFilesReferencing(librarySource);
900 expect(result, hasLength(1)); 945 expect(result, hasLength(1));
901 expect(result[0], htmlSource); 946 expect(result[0], htmlSource);
902 } 947 }
903 948
904 void test_getHtmlFilesReferencing_part() { 949 void test_getHtmlFilesReferencing_part() {
905 Source htmlSource = addSource("/test.html", r''' 950 Source htmlSource = addSource(
951 "/test.html",
952 r'''
906 <!DOCTYPE html> 953 <!DOCTYPE html>
907 <html><head> 954 <html><head>
908 <script type='application/dart' src='test.dart'/> 955 <script type='application/dart' src='test.dart'/>
909 <script type='application/dart' src='test.js'/> 956 <script type='application/dart' src='test.js'/>
910 </head></html>'''); 957 </head></html>''');
911 Source librarySource = 958 Source librarySource =
912 addSource("/test.dart", "library lib; part 'part.dart';"); 959 addSource("/test.dart", "library lib; part 'part.dart';");
913 Source partSource = addSource("/part.dart", "part of lib;"); 960 Source partSource = addSource("/part.dart", "part of lib;");
914 context.computeLibraryElement(librarySource); 961 context.computeLibraryElement(librarySource);
915 List<Source> result = context.getHtmlFilesReferencing(partSource); 962 List<Source> result = context.getHtmlFilesReferencing(partSource);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 context.computeKindOf(source); 995 context.computeKindOf(source);
949 expect(context.getKindOf(source), same(SourceKind.PART)); 996 expect(context.getKindOf(source), same(SourceKind.PART));
950 } 997 }
951 998
952 void test_getKindOf_unknown() { 999 void test_getKindOf_unknown() {
953 Source source = addSource("/test.css", ""); 1000 Source source = addSource("/test.css", "");
954 expect(context.getKindOf(source), same(SourceKind.UNKNOWN)); 1001 expect(context.getKindOf(source), same(SourceKind.UNKNOWN));
955 } 1002 }
956 1003
957 void test_getLaunchableClientLibrarySources_doesNotImportHtml() { 1004 void test_getLaunchableClientLibrarySources_doesNotImportHtml() {
958 Source source = addSource("/test.dart", r''' 1005 Source source = addSource(
1006 "/test.dart",
1007 r'''
959 main() {}'''); 1008 main() {}''');
960 context.computeLibraryElement(source); 1009 context.computeLibraryElement(source);
961 List<Source> sources = context.launchableClientLibrarySources; 1010 List<Source> sources = context.launchableClientLibrarySources;
962 expect(sources, isEmpty); 1011 expect(sources, isEmpty);
963 } 1012 }
964 1013
965 void test_getLaunchableClientLibrarySources_importsHtml_explicitly() { 1014 void test_getLaunchableClientLibrarySources_importsHtml_explicitly() {
966 List<Source> sources = context.launchableClientLibrarySources; 1015 List<Source> sources = context.launchableClientLibrarySources;
967 expect(sources, isEmpty); 1016 expect(sources, isEmpty);
968 Source source = addSource("/test.dart", r''' 1017 Source source = addSource(
1018 "/test.dart",
1019 r'''
969 import 'dart:html'; 1020 import 'dart:html';
970 main() {}'''); 1021 main() {}''');
971 context.computeLibraryElement(source); 1022 context.computeLibraryElement(source);
972 sources = context.launchableClientLibrarySources; 1023 sources = context.launchableClientLibrarySources;
973 expect(sources, unorderedEquals([source])); 1024 expect(sources, unorderedEquals([source]));
974 } 1025 }
975 1026
976 void test_getLaunchableClientLibrarySources_importsHtml_implicitly() { 1027 void test_getLaunchableClientLibrarySources_importsHtml_implicitly() {
977 List<Source> sources = context.launchableClientLibrarySources; 1028 List<Source> sources = context.launchableClientLibrarySources;
978 expect(sources, isEmpty); 1029 expect(sources, isEmpty);
979 addSource("/a.dart", r''' 1030 addSource(
1031 "/a.dart",
1032 r'''
980 import 'dart:html'; 1033 import 'dart:html';
981 '''); 1034 ''');
982 Source source = addSource("/test.dart", r''' 1035 Source source = addSource(
1036 "/test.dart",
1037 r'''
983 import 'a.dart'; 1038 import 'a.dart';
984 main() {}'''); 1039 main() {}''');
985 context.computeLibraryElement(source); 1040 context.computeLibraryElement(source);
986 sources = context.launchableClientLibrarySources; 1041 sources = context.launchableClientLibrarySources;
987 expect(sources, unorderedEquals([source])); 1042 expect(sources, unorderedEquals([source]));
988 } 1043 }
989 1044
990 void test_getLaunchableClientLibrarySources_importsHtml_implicitly2() { 1045 void test_getLaunchableClientLibrarySources_importsHtml_implicitly2() {
991 List<Source> sources = context.launchableClientLibrarySources; 1046 List<Source> sources = context.launchableClientLibrarySources;
992 expect(sources, isEmpty); 1047 expect(sources, isEmpty);
993 addSource("/a.dart", r''' 1048 addSource(
1049 "/a.dart",
1050 r'''
994 export 'dart:html'; 1051 export 'dart:html';
995 '''); 1052 ''');
996 Source source = addSource("/test.dart", r''' 1053 Source source = addSource(
1054 "/test.dart",
1055 r'''
997 import 'a.dart'; 1056 import 'a.dart';
998 main() {}'''); 1057 main() {}''');
999 context.computeLibraryElement(source); 1058 context.computeLibraryElement(source);
1000 sources = context.launchableClientLibrarySources; 1059 sources = context.launchableClientLibrarySources;
1001 expect(sources, unorderedEquals([source])); 1060 expect(sources, unorderedEquals([source]));
1002 } 1061 }
1003 1062
1004 void test_getLaunchableServerLibrarySources() { 1063 void test_getLaunchableServerLibrarySources() {
1005 expect(context.launchableServerLibrarySources, isEmpty); 1064 expect(context.launchableServerLibrarySources, isEmpty);
1006 Source source = addSource("/test.dart", "main() {}"); 1065 Source source = addSource("/test.dart", "main() {}");
1007 context.computeLibraryElement(source); 1066 context.computeLibraryElement(source);
1008 expect(context.launchableServerLibrarySources, unorderedEquals([source])); 1067 expect(context.launchableServerLibrarySources, unorderedEquals([source]));
1009 } 1068 }
1010 1069
1011 void test_getLaunchableServerLibrarySources_importsHtml_explicitly() { 1070 void test_getLaunchableServerLibrarySources_importsHtml_explicitly() {
1012 Source source = addSource("/test.dart", r''' 1071 Source source = addSource(
1072 "/test.dart",
1073 r'''
1013 import 'dart:html'; 1074 import 'dart:html';
1014 main() {} 1075 main() {}
1015 '''); 1076 ''');
1016 context.computeLibraryElement(source); 1077 context.computeLibraryElement(source);
1017 expect(context.launchableServerLibrarySources, isEmpty); 1078 expect(context.launchableServerLibrarySources, isEmpty);
1018 } 1079 }
1019 1080
1020 void test_getLaunchableServerLibrarySources_importsHtml_implicitly() { 1081 void test_getLaunchableServerLibrarySources_importsHtml_implicitly() {
1021 addSource("/imports_html.dart", r''' 1082 addSource(
1083 "/imports_html.dart",
1084 r'''
1022 import 'dart:html'; 1085 import 'dart:html';
1023 '''); 1086 ''');
1024 Source source = addSource("/test.dart", r''' 1087 Source source = addSource(
1088 "/test.dart",
1089 r'''
1025 import 'imports_html.dart'; 1090 import 'imports_html.dart';
1026 main() {}'''); 1091 main() {}''');
1027 context.computeLibraryElement(source); 1092 context.computeLibraryElement(source);
1028 expect(context.launchableServerLibrarySources, isEmpty); 1093 expect(context.launchableServerLibrarySources, isEmpty);
1029 } 1094 }
1030 1095
1031 void test_getLaunchableServerLibrarySources_noMain() { 1096 void test_getLaunchableServerLibrarySources_noMain() {
1032 Source source = addSource("/test.dart", ''); 1097 Source source = addSource("/test.dart", '');
1033 context.computeLibraryElement(source); 1098 context.computeLibraryElement(source);
1034 expect(context.launchableServerLibrarySources, isEmpty); 1099 expect(context.launchableServerLibrarySources, isEmpty);
1035 } 1100 }
1036 1101
1037 void test_getLibrariesContaining() { 1102 void test_getLibrariesContaining() {
1038 Source librarySource = addSource("/lib.dart", r''' 1103 Source librarySource = addSource(
1104 "/lib.dart",
1105 r'''
1039 library lib; 1106 library lib;
1040 part 'part.dart';'''); 1107 part 'part.dart';''');
1041 Source partSource = addSource("/part.dart", "part of lib;"); 1108 Source partSource = addSource("/part.dart", "part of lib;");
1042 context.computeLibraryElement(librarySource); 1109 context.computeLibraryElement(librarySource);
1043 List<Source> result = context.getLibrariesContaining(librarySource); 1110 List<Source> result = context.getLibrariesContaining(librarySource);
1044 expect(result, hasLength(1)); 1111 expect(result, hasLength(1));
1045 expect(result[0], librarySource); 1112 expect(result[0], librarySource);
1046 result = context.getLibrariesContaining(partSource); 1113 result = context.getLibrariesContaining(partSource);
1047 expect(result, hasLength(1)); 1114 expect(result, hasLength(1));
1048 expect(result[0], librarySource); 1115 expect(result[0], librarySource);
1049 } 1116 }
1050 1117
1051 void test_getLibrariesDependingOn() { 1118 void test_getLibrariesDependingOn() {
1052 Source libASource = addSource("/libA.dart", "library libA;"); 1119 Source libASource = addSource("/libA.dart", "library libA;");
1053 addSource("/libB.dart", "library libB;"); 1120 addSource("/libB.dart", "library libB;");
1054 Source lib1Source = addSource("/lib1.dart", r''' 1121 Source lib1Source = addSource(
1122 "/lib1.dart",
1123 r'''
1055 library lib1; 1124 library lib1;
1056 import 'libA.dart'; 1125 import 'libA.dart';
1057 export 'libB.dart';'''); 1126 export 'libB.dart';''');
1058 Source lib2Source = addSource("/lib2.dart", r''' 1127 Source lib2Source = addSource(
1128 "/lib2.dart",
1129 r'''
1059 library lib2; 1130 library lib2;
1060 import 'libB.dart'; 1131 import 'libB.dart';
1061 export 'libA.dart';'''); 1132 export 'libA.dart';''');
1062 context.computeLibraryElement(lib1Source); 1133 context.computeLibraryElement(lib1Source);
1063 context.computeLibraryElement(lib2Source); 1134 context.computeLibraryElement(lib2Source);
1064 List<Source> result = context.getLibrariesDependingOn(libASource); 1135 List<Source> result = context.getLibrariesDependingOn(libASource);
1065 expect(result, unorderedEquals([lib1Source, lib2Source])); 1136 expect(result, unorderedEquals([lib1Source, lib2Source]));
1066 } 1137 }
1067 1138
1068 void test_getLibrariesReferencedFromHtml() { 1139 void test_getLibrariesReferencedFromHtml() {
1069 Source htmlSource = addSource("/test.html", r''' 1140 Source htmlSource = addSource(
1141 "/test.html",
1142 r'''
1070 <!DOCTYPE html> 1143 <!DOCTYPE html>
1071 <html><head> 1144 <html><head>
1072 <script type='application/dart' src='test.dart'/> 1145 <script type='application/dart' src='test.dart'/>
1073 <script type='application/dart' src='test.js'/> 1146 <script type='application/dart' src='test.js'/>
1074 </head></html>'''); 1147 </head></html>''');
1075 Source librarySource = addSource("/test.dart", "library lib;"); 1148 Source librarySource = addSource("/test.dart", "library lib;");
1076 context.computeLibraryElement(librarySource); 1149 context.computeLibraryElement(librarySource);
1077 // Indirectly force the data to be computed. 1150 // Indirectly force the data to be computed.
1078 context.computeErrors(htmlSource); 1151 context.computeErrors(htmlSource);
1079 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource); 1152 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource);
1080 expect(result, hasLength(1)); 1153 expect(result, hasLength(1));
1081 expect(result[0], librarySource); 1154 expect(result[0], librarySource);
1082 } 1155 }
1083 1156
1084 void test_getLibrariesReferencedFromHtml_none() { 1157 void test_getLibrariesReferencedFromHtml_none() {
1085 Source htmlSource = addSource("/test.html", r''' 1158 Source htmlSource = addSource(
1159 "/test.html",
1160 r'''
1086 <html><head> 1161 <html><head>
1087 <script type='application/dart' src='test.js'/> 1162 <script type='application/dart' src='test.js'/>
1088 </head></html>'''); 1163 </head></html>''');
1089 addSource("/test.dart", "library lib;"); 1164 addSource("/test.dart", "library lib;");
1090 context.parseHtmlDocument(htmlSource); 1165 context.parseHtmlDocument(htmlSource);
1091 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource); 1166 List<Source> result = context.getLibrariesReferencedFromHtml(htmlSource);
1092 expect(result, hasLength(0)); 1167 expect(result, hasLength(0));
1093 } 1168 }
1094 1169
1095 void test_getLibraryElement() { 1170 void test_getLibraryElement() {
(...skipping 14 matching lines...) Expand all
1110 expect(sources, hasLength(originalLength + 1)); 1185 expect(sources, hasLength(originalLength + 1));
1111 for (Source returnedSource in sources) { 1186 for (Source returnedSource in sources) {
1112 if (returnedSource == source) { 1187 if (returnedSource == source) {
1113 return; 1188 return;
1114 } 1189 }
1115 } 1190 }
1116 fail("The added source was not in the list of library sources"); 1191 fail("The added source was not in the list of library sources");
1117 } 1192 }
1118 1193
1119 void test_getLineInfo() { 1194 void test_getLineInfo() {
1120 Source source = addSource("/test.dart", r''' 1195 Source source = addSource(
1196 "/test.dart",
1197 r'''
1121 library lib; 1198 library lib;
1122 1199
1123 main() {}'''); 1200 main() {}''');
1124 LineInfo info = context.getLineInfo(source); 1201 LineInfo info = context.getLineInfo(source);
1125 expect(info, isNull); 1202 expect(info, isNull);
1126 context.parseCompilationUnit(source); 1203 context.parseCompilationUnit(source);
1127 info = context.getLineInfo(source); 1204 info = context.getLineInfo(source);
1128 expect(info, isNotNull); 1205 expect(info, isNotNull);
1129 } 1206 }
1130 1207
1131 void test_getModificationStamp_fromSource() { 1208 void test_getModificationStamp_fromSource() {
1132 int stamp = 42; 1209 int stamp = 42;
1133 expect(context.getModificationStamp( 1210 expect(
1134 new AnalysisContextImplTest_Source_getModificationStamp_fromSource( 1211 context.getModificationStamp(
1135 stamp)), stamp); 1212 new AnalysisContextImplTest_Source_getModificationStamp_fromSource(
1213 stamp)),
1214 stamp);
1136 } 1215 }
1137 1216
1138 void test_getModificationStamp_overridden() { 1217 void test_getModificationStamp_overridden() {
1139 int stamp = 42; 1218 int stamp = 42;
1140 Source source = 1219 Source source =
1141 new AnalysisContextImplTest_Source_getModificationStamp_overridden( 1220 new AnalysisContextImplTest_Source_getModificationStamp_overridden(
1142 stamp); 1221 stamp);
1143 context.setContents(source, ""); 1222 context.setContents(source, "");
1144 expect(stamp != context.getModificationStamp(source), isTrue); 1223 expect(stamp != context.getModificationStamp(source), isTrue);
1145 } 1224 }
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 Source sourceB = newSource('/b.dart', "library b;"); 1323 Source sourceB = newSource('/b.dart', "library b;");
1245 ChangeSet changeSet = new ChangeSet(); 1324 ChangeSet changeSet = new ChangeSet();
1246 changeSet.addedSource(sourceA); 1325 changeSet.addedSource(sourceA);
1247 context.applyChanges(changeSet); 1326 context.applyChanges(changeSet);
1248 context.computeErrors(sourceA); 1327 context.computeErrors(sourceA);
1249 await pumpEventQueue(); 1328 await pumpEventQueue();
1250 listener.expectAnalyzed(sourceB); 1329 listener.expectAnalyzed(sourceB);
1251 } 1330 }
1252 1331
1253 void test_isClientLibrary_dart() { 1332 void test_isClientLibrary_dart() {
1254 Source source = addSource("/test.dart", r''' 1333 Source source = addSource(
1334 "/test.dart",
1335 r'''
1255 import 'dart:html'; 1336 import 'dart:html';
1256 1337
1257 main() {}'''); 1338 main() {}''');
1258 expect(context.isClientLibrary(source), isFalse); 1339 expect(context.isClientLibrary(source), isFalse);
1259 expect(context.isServerLibrary(source), isFalse); 1340 expect(context.isServerLibrary(source), isFalse);
1260 context.computeLibraryElement(source); 1341 context.computeLibraryElement(source);
1261 expect(context.isClientLibrary(source), isTrue); 1342 expect(context.isClientLibrary(source), isTrue);
1262 expect(context.isServerLibrary(source), isFalse); 1343 expect(context.isServerLibrary(source), isFalse);
1263 } 1344 }
1264 1345
1265 void test_isClientLibrary_html() { 1346 void test_isClientLibrary_html() {
1266 Source source = addSource("/test.html", "<html></html>"); 1347 Source source = addSource("/test.html", "<html></html>");
1267 expect(context.isClientLibrary(source), isFalse); 1348 expect(context.isClientLibrary(source), isFalse);
1268 } 1349 }
1269 1350
1270 void test_isServerLibrary_dart() { 1351 void test_isServerLibrary_dart() {
1271 Source source = addSource("/test.dart", r''' 1352 Source source = addSource(
1353 "/test.dart",
1354 r'''
1272 library lib; 1355 library lib;
1273 1356
1274 main() {}'''); 1357 main() {}''');
1275 expect(context.isClientLibrary(source), isFalse); 1358 expect(context.isClientLibrary(source), isFalse);
1276 expect(context.isServerLibrary(source), isFalse); 1359 expect(context.isServerLibrary(source), isFalse);
1277 context.computeLibraryElement(source); 1360 context.computeLibraryElement(source);
1278 expect(context.isClientLibrary(source), isFalse); 1361 expect(context.isClientLibrary(source), isFalse);
1279 expect(context.isServerLibrary(source), isTrue); 1362 expect(context.isServerLibrary(source), isTrue);
1280 } 1363 }
1281 1364
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 } 1413 }
1331 } 1414 }
1332 1415
1333 void test_parseHtmlDocument() { 1416 void test_parseHtmlDocument() {
1334 Source source = addSource("/lib.html", "<!DOCTYPE html><html></html>"); 1417 Source source = addSource("/lib.html", "<!DOCTYPE html><html></html>");
1335 Document document = context.parseHtmlDocument(source); 1418 Document document = context.parseHtmlDocument(source);
1336 expect(document, isNotNull); 1419 expect(document, isNotNull);
1337 } 1420 }
1338 1421
1339 void test_parseHtmlUnit_resolveDirectives() { 1422 void test_parseHtmlUnit_resolveDirectives() {
1340 Source libSource = addSource("/lib.dart", r''' 1423 Source libSource = addSource(
1424 "/lib.dart",
1425 r'''
1341 library lib; 1426 library lib;
1342 class ClassA {}'''); 1427 class ClassA {}''');
1343 Source source = addSource("/lib.html", r''' 1428 Source source = addSource(
1429 "/lib.html",
1430 r'''
1344 <!DOCTYPE html> 1431 <!DOCTYPE html>
1345 <html> 1432 <html>
1346 <head> 1433 <head>
1347 <script type='application/dart'> 1434 <script type='application/dart'>
1348 import 'lib.dart'; 1435 import 'lib.dart';
1349 ClassA v = null; 1436 ClassA v = null;
1350 </script> 1437 </script>
1351 </head> 1438 </head>
1352 <body> 1439 <body>
1353 </body> 1440 </body>
1354 </html>'''); 1441 </html>''');
1355 Document document = context.parseHtmlDocument(source); 1442 Document document = context.parseHtmlDocument(source);
1356 expect(document, isNotNull); 1443 expect(document, isNotNull);
1357 List<DartScript> scripts = context.computeResult(source, DART_SCRIPTS); 1444 List<DartScript> scripts = context.computeResult(source, DART_SCRIPTS);
1358 expect(scripts, hasLength(1)); 1445 expect(scripts, hasLength(1));
1359 CompilationUnit unit = context.computeResult(scripts[0], PARSED_UNIT); 1446 CompilationUnit unit = context.computeResult(scripts[0], PARSED_UNIT);
1360 ImportDirective importNode = unit.directives[0] as ImportDirective; 1447 ImportDirective importNode = unit.directives[0] as ImportDirective;
1361 expect(importNode.uriContent, isNotNull); 1448 expect(importNode.uriContent, isNotNull);
1362 expect(importNode.source, libSource); 1449 expect(importNode.source, libSource);
1363 } 1450 }
1364 1451
1365 void test_performAnalysisTask_addPart() { 1452 void test_performAnalysisTask_addPart() {
1366 Source libSource = addSource("/lib.dart", r''' 1453 Source libSource = addSource(
1454 "/lib.dart",
1455 r'''
1367 library lib; 1456 library lib;
1368 part 'part.dart';'''); 1457 part 'part.dart';''');
1369 // run all tasks without part 1458 // run all tasks without part
1370 _analyzeAll_assertFinished(); 1459 _analyzeAll_assertFinished();
1371 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)), 1460 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)),
1372 isTrue, reason: "lib has errors"); 1461 isTrue,
1462 reason: "lib has errors");
1373 // add part and run all tasks 1463 // add part and run all tasks
1374 Source partSource = addSource("/part.dart", r''' 1464 Source partSource = addSource(
1465 "/part.dart",
1466 r'''
1375 part of lib; 1467 part of lib;
1376 '''); 1468 ''');
1377 _analyzeAll_assertFinished(); 1469 _analyzeAll_assertFinished();
1378 // "libSource" should be here 1470 // "libSource" should be here
1379 List<Source> librariesWithPart = context.getLibrariesContaining(partSource); 1471 List<Source> librariesWithPart = context.getLibrariesContaining(partSource);
1380 expect(librariesWithPart, unorderedEquals([libSource])); 1472 expect(librariesWithPart, unorderedEquals([libSource]));
1381 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)), 1473 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libSource)),
1382 isFalse, reason: "lib doesn't have errors"); 1474 isFalse,
1475 reason: "lib doesn't have errors");
1383 expect( 1476 expect(
1384 context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, 1477 context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
1385 reason: "part resolved"); 1478 reason: "part resolved");
1386 } 1479 }
1387 1480
1388 void test_performAnalysisTask_changeLibraryContents() { 1481 void test_performAnalysisTask_changeLibraryContents() {
1389 Source libSource = 1482 Source libSource =
1390 addSource("/test.dart", "library lib; part 'test-part.dart';"); 1483 addSource("/test.dart", "library lib; part 'test-part.dart';");
1391 Source partSource = addSource("/test-part.dart", "part of lib;"); 1484 Source partSource = addSource("/test-part.dart", "part of lib;");
1392 _analyzeAll_assertFinished(); 1485 _analyzeAll_assertFinished();
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1450 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull, 1543 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
1451 reason: "part changed 3"); 1544 reason: "part changed 3");
1452 _analyzeAll_assertFinished(); 1545 _analyzeAll_assertFinished();
1453 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, 1546 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
1454 reason: "library resolved 3"); 1547 reason: "library resolved 3");
1455 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull, 1548 expect(context.getResolvedCompilationUnit2(partSource, libSource), isNull,
1456 reason: "part resolved 3"); 1549 reason: "part resolved 3");
1457 } 1550 }
1458 1551
1459 void test_performAnalysisTask_changePartContents_makeItAPart() { 1552 void test_performAnalysisTask_changePartContents_makeItAPart() {
1460 Source libSource = addSource("/lib.dart", r''' 1553 Source libSource = addSource(
1554 "/lib.dart",
1555 r'''
1461 library lib; 1556 library lib;
1462 part 'part.dart'; 1557 part 'part.dart';
1463 void f(x) {}'''); 1558 void f(x) {}''');
1464 Source partSource = addSource("/part.dart", "void g() { f(null); }"); 1559 Source partSource = addSource("/part.dart", "void g() { f(null); }");
1465 _analyzeAll_assertFinished(); 1560 _analyzeAll_assertFinished();
1466 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, 1561 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
1467 reason: "library resolved 1"); 1562 reason: "library resolved 1");
1468 expect( 1563 expect(
1469 context.getResolvedCompilationUnit2(partSource, partSource), isNotNull, 1564 context.getResolvedCompilationUnit2(partSource, partSource), isNotNull,
1470 reason: "part resolved 1"); 1565 reason: "part resolved 1");
1471 // update and analyze 1566 // update and analyze
1472 context.setContents(partSource, r''' 1567 context.setContents(
1568 partSource,
1569 r'''
1473 part of lib; 1570 part of lib;
1474 void g() { f(null); }'''); 1571 void g() { f(null); }''');
1475 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull, 1572 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNull,
1476 reason: "library changed 2"); 1573 reason: "library changed 2");
1477 expect(context.getResolvedCompilationUnit2(partSource, partSource), isNull, 1574 expect(context.getResolvedCompilationUnit2(partSource, partSource), isNull,
1478 reason: "part changed 2"); 1575 reason: "part changed 2");
1479 _analyzeAll_assertFinished(); 1576 _analyzeAll_assertFinished();
1480 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, 1577 expect(context.getResolvedCompilationUnit2(libSource, libSource), isNotNull,
1481 reason: "library resolved 2"); 1578 reason: "library resolved 2");
1482 expect( 1579 expect(
1483 context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, 1580 context.getResolvedCompilationUnit2(partSource, libSource), isNotNull,
1484 reason: "part resolved 2"); 1581 reason: "part resolved 2");
1485 expect(context.getErrors(libSource).errors, hasLength(0)); 1582 expect(context.getErrors(libSource).errors, hasLength(0));
1486 expect(context.getErrors(partSource).errors, hasLength(0)); 1583 expect(context.getErrors(partSource).errors, hasLength(0));
1487 } 1584 }
1488 1585
1489 /** 1586 /**
1490 * https://code.google.com/p/dart/issues/detail?id=12424 1587 * https://code.google.com/p/dart/issues/detail?id=12424
1491 */ 1588 */
1492 void test_performAnalysisTask_changePartContents_makeItNotPart() { 1589 void test_performAnalysisTask_changePartContents_makeItNotPart() {
1493 Source libSource = addSource("/lib.dart", r''' 1590 Source libSource = addSource(
1591 "/lib.dart",
1592 r'''
1494 library lib; 1593 library lib;
1495 part 'part.dart'; 1594 part 'part.dart';
1496 void f(x) {}'''); 1595 void f(x) {}''');
1497 Source partSource = addSource("/part.dart", r''' 1596 Source partSource = addSource(
1597 "/part.dart",
1598 r'''
1498 part of lib; 1599 part of lib;
1499 void g() { f(null); }'''); 1600 void g() { f(null); }''');
1500 _analyzeAll_assertFinished(); 1601 _analyzeAll_assertFinished();
1501 expect(context.getErrors(libSource).errors, hasLength(0)); 1602 expect(context.getErrors(libSource).errors, hasLength(0));
1502 expect(context.getErrors(partSource).errors, hasLength(0)); 1603 expect(context.getErrors(partSource).errors, hasLength(0));
1503 // Remove 'part' directive, which should make "f(null)" an error. 1604 // Remove 'part' directive, which should make "f(null)" an error.
1504 context.setContents(partSource, r''' 1605 context.setContents(
1606 partSource,
1607 r'''
1505 //part of lib; 1608 //part of lib;
1506 void g() { f(null); }'''); 1609 void g() { f(null); }''');
1507 _analyzeAll_assertFinished(); 1610 _analyzeAll_assertFinished();
1508 expect(context.getErrors(libSource).errors.length != 0, isTrue); 1611 expect(context.getErrors(libSource).errors.length != 0, isTrue);
1509 } 1612 }
1510 1613
1511 void test_performAnalysisTask_changePartContents_noSemanticChanges() { 1614 void test_performAnalysisTask_changePartContents_noSemanticChanges() {
1512 Source libSource = 1615 Source libSource =
1513 addSource("/test.dart", "library lib; part 'test-part.dart';"); 1616 addSource("/test.dart", "library lib; part 'test-part.dart';");
1514 Source partSource = addSource("/test-part.dart", "part of lib;"); 1617 Source partSource = addSource("/test-part.dart", "part of lib;");
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 } 1692 }
1590 1693
1591 void test_performAnalysisTask_importedLibraryAdd() { 1694 void test_performAnalysisTask_importedLibraryAdd() {
1592 Source libASource = 1695 Source libASource =
1593 addSource("/libA.dart", "library libA; import 'libB.dart';"); 1696 addSource("/libA.dart", "library libA; import 'libB.dart';");
1594 _analyzeAll_assertFinished(); 1697 _analyzeAll_assertFinished();
1595 expect( 1698 expect(
1596 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, 1699 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
1597 reason: "libA resolved 1"); 1700 reason: "libA resolved 1");
1598 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), 1701 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
1599 isTrue, reason: "libA has an error"); 1702 isTrue,
1703 reason: "libA has an error");
1600 // add libB.dart and analyze 1704 // add libB.dart and analyze
1601 Source libBSource = addSource("/libB.dart", "library libB;"); 1705 Source libBSource = addSource("/libB.dart", "library libB;");
1602 _analyzeAll_assertFinished(); 1706 _analyzeAll_assertFinished();
1603 expect( 1707 expect(
1604 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, 1708 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
1605 reason: "libA resolved 2"); 1709 reason: "libA resolved 2");
1606 expect( 1710 expect(
1607 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, 1711 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
1608 reason: "libB resolved 2"); 1712 reason: "libB resolved 2");
1609 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), 1713 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
1610 isFalse, reason: "libA doesn't have errors"); 1714 isFalse,
1715 reason: "libA doesn't have errors");
1611 } 1716 }
1612 1717
1613 void test_performAnalysisTask_importedLibraryAdd_html() { 1718 void test_performAnalysisTask_importedLibraryAdd_html() {
1614 Source htmlSource = addSource("/page.html", r''' 1719 Source htmlSource = addSource(
1720 "/page.html",
1721 r'''
1615 <html><body><script type="application/dart"> 1722 <html><body><script type="application/dart">
1616 import '/libB.dart'; 1723 import '/libB.dart';
1617 main() {print('hello dart');} 1724 main() {print('hello dart');}
1618 </script></body></html>'''); 1725 </script></body></html>''');
1619 _analyzeAll_assertFinished(); 1726 _analyzeAll_assertFinished();
1620 context.computeErrors(htmlSource); 1727 context.computeErrors(htmlSource);
1621 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)), 1728 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(htmlSource)),
1622 isTrue, reason: "htmlSource has an error"); 1729 isTrue,
1730 reason: "htmlSource has an error");
1623 // add libB.dart and analyze 1731 // add libB.dart and analyze
1624 Source libBSource = addSource("/libB.dart", "library libB;"); 1732 Source libBSource = addSource("/libB.dart", "library libB;");
1625 _analyzeAll_assertFinished(); 1733 _analyzeAll_assertFinished();
1626 expect( 1734 expect(
1627 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, 1735 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
1628 reason: "libB resolved 2"); 1736 reason: "libB resolved 2");
1629 // TODO (danrubel) commented out to fix red bots 1737 // TODO (danrubel) commented out to fix red bots
1630 // context.computeErrors(htmlSource); 1738 // context.computeErrors(htmlSource);
1631 // AnalysisErrorInfo errors = _context.getErrors(htmlSource); 1739 // AnalysisErrorInfo errors = _context.getErrors(htmlSource);
1632 // expect( 1740 // expect(
1633 // !_hasAnalysisErrorWithErrorSeverity(errors), 1741 // !_hasAnalysisErrorWithErrorSeverity(errors),
1634 // isTrue, 1742 // isTrue,
1635 // reason: "htmlSource doesn't have errors"); 1743 // reason: "htmlSource doesn't have errors");
1636 } 1744 }
1637 1745
1638 void test_performAnalysisTask_importedLibraryDelete() { 1746 void test_performAnalysisTask_importedLibraryDelete() {
1639 Source libASource = 1747 Source libASource =
1640 addSource("/libA.dart", "library libA; import 'libB.dart';"); 1748 addSource("/libA.dart", "library libA; import 'libB.dart';");
1641 Source libBSource = addSource("/libB.dart", "library libB;"); 1749 Source libBSource = addSource("/libB.dart", "library libB;");
1642 _analyzeAll_assertFinished(); 1750 _analyzeAll_assertFinished();
1643 expect( 1751 expect(
1644 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, 1752 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
1645 reason: "libA resolved 1"); 1753 reason: "libA resolved 1");
1646 expect( 1754 expect(
1647 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, 1755 context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull,
1648 reason: "libB resolved 1"); 1756 reason: "libB resolved 1");
1649 expect(!_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), 1757 expect(!_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
1650 isTrue, reason: "libA doesn't have errors"); 1758 isTrue,
1759 reason: "libA doesn't have errors");
1651 // remove libB.dart and analyze 1760 // remove libB.dart and analyze
1652 _removeSource(libBSource); 1761 _removeSource(libBSource);
1653 _analyzeAll_assertFinished(); 1762 _analyzeAll_assertFinished();
1654 expect( 1763 expect(
1655 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, 1764 context.getResolvedCompilationUnit2(libASource, libASource), isNotNull,
1656 reason: "libA resolved 2"); 1765 reason: "libA resolved 2");
1657 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)), 1766 expect(_hasAnalysisErrorWithErrorSeverity(context.getErrors(libASource)),
1658 isTrue, reason: "libA has an error"); 1767 isTrue,
1768 reason: "libA has an error");
1659 } 1769 }
1660 1770
1661 void test_performAnalysisTask_IOException() { 1771 void test_performAnalysisTask_IOException() {
1662 TestSource source = _addSourceWithException2("/test.dart", "library test;"); 1772 TestSource source = _addSourceWithException2("/test.dart", "library test;");
1663 source.generateExceptionOnRead = false; 1773 source.generateExceptionOnRead = false;
1664 _analyzeAll_assertFinished(); 1774 _analyzeAll_assertFinished();
1665 expect(source.readCount, 1); 1775 expect(source.readCount, 1);
1666 _changeSource(source, ""); 1776 _changeSource(source, "");
1667 source.generateExceptionOnRead = true; 1777 source.generateExceptionOnRead = true;
1668 _analyzeAll_assertFinished(); 1778 _analyzeAll_assertFinished();
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1733 Source sourceA = 1843 Source sourceA =
1734 addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}"); 1844 addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}");
1735 addSource("/libB.dart", "library libB; class B{}"); 1845 addSource("/libB.dart", "library libB; class B{}");
1736 CompilationUnit compilationUnit = 1846 CompilationUnit compilationUnit =
1737 context.resolveCompilationUnit2(sourceA, sourceA); 1847 context.resolveCompilationUnit2(sourceA, sourceA);
1738 expect(compilationUnit, isNotNull); 1848 expect(compilationUnit, isNotNull);
1739 LibraryElement library = compilationUnit.element.library; 1849 LibraryElement library = compilationUnit.element.library;
1740 List<LibraryElement> importedLibraries = library.importedLibraries; 1850 List<LibraryElement> importedLibraries = library.importedLibraries;
1741 assertNamedElements(importedLibraries, ["dart.core", "libB"]); 1851 assertNamedElements(importedLibraries, ["dart.core", "libB"]);
1742 List<LibraryElement> visibleLibraries = library.visibleLibraries; 1852 List<LibraryElement> visibleLibraries = library.visibleLibraries;
1743 assertNamedElements(visibleLibraries, [ 1853 assertNamedElements(visibleLibraries,
1744 "dart.core", 1854 ["dart.core", "dart.async", "dart.math", "libA", "libB"]);
1745 "dart.async",
1746 "dart.math",
1747 "libA",
1748 "libB"
1749 ]);
1750 } 1855 }
1751 1856
1752 void test_resolveCompilationUnit_import_relative_cyclic() { 1857 void test_resolveCompilationUnit_import_relative_cyclic() {
1753 Source sourceA = 1858 Source sourceA =
1754 addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}"); 1859 addSource("/libA.dart", "library libA; import 'libB.dart'; class A{}");
1755 addSource("/libB.dart", "library libB; import 'libA.dart'; class B{}"); 1860 addSource("/libB.dart", "library libB; import 'libA.dart'; class B{}");
1756 CompilationUnit compilationUnit = 1861 CompilationUnit compilationUnit =
1757 context.resolveCompilationUnit2(sourceA, sourceA); 1862 context.resolveCompilationUnit2(sourceA, sourceA);
1758 expect(compilationUnit, isNotNull); 1863 expect(compilationUnit, isNotNull);
1759 LibraryElement library = compilationUnit.element.library; 1864 LibraryElement library = compilationUnit.element.library;
1760 List<LibraryElement> importedLibraries = library.importedLibraries; 1865 List<LibraryElement> importedLibraries = library.importedLibraries;
1761 assertNamedElements(importedLibraries, ["dart.core", "libB"]); 1866 assertNamedElements(importedLibraries, ["dart.core", "libB"]);
1762 List<LibraryElement> visibleLibraries = library.visibleLibraries; 1867 List<LibraryElement> visibleLibraries = library.visibleLibraries;
1763 assertNamedElements(visibleLibraries, [ 1868 assertNamedElements(visibleLibraries,
1764 "dart.core", 1869 ["dart.core", "dart.async", "dart.math", "libA", "libB"]);
1765 "dart.async",
1766 "dart.math",
1767 "libA",
1768 "libB"
1769 ]);
1770 } 1870 }
1771 1871
1772 // void test_resolveCompilationUnit_sourceChangeDuringResolution() { 1872 // void test_resolveCompilationUnit_sourceChangeDuringResolution() {
1773 // _context = new _AnalysisContext_sourceChangeDuringResolution(); 1873 // _context = new _AnalysisContext_sourceChangeDuringResolution();
1774 // AnalysisContextFactory.initContextWithCore(_context); 1874 // AnalysisContextFactory.initContextWithCore(_context);
1775 // _sourceFactory = _context.sourceFactory; 1875 // _sourceFactory = _context.sourceFactory;
1776 // Source source = _addSource("/lib.dart", "library lib;"); 1876 // Source source = _addSource("/lib.dart", "library lib;");
1777 // CompilationUnit compilationUnit = 1877 // CompilationUnit compilationUnit =
1778 // _context.resolveCompilationUnit2(source, source); 1878 // _context.resolveCompilationUnit2(source, source);
1779 // expect(compilationUnit, isNotNull); 1879 // expect(compilationUnit, isNotNull);
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1903 context.getResolvedCompilationUnit2(partSource, librarySource), isNull); 2003 context.getResolvedCompilationUnit2(partSource, librarySource), isNull);
1904 return pumpEventQueue().then((_) { 2004 return pumpEventQueue().then((_) {
1905 listener.assertEvent(wereSourcesAdded: true); 2005 listener.assertEvent(wereSourcesAdded: true);
1906 listener.assertEvent(wereSourcesAdded: true); 2006 listener.assertEvent(wereSourcesAdded: true);
1907 listener.assertEvent(changedSources: [librarySource]); 2007 listener.assertEvent(changedSources: [librarySource]);
1908 listener.assertNoMoreEvents(); 2008 listener.assertNoMoreEvents();
1909 }); 2009 });
1910 } 2010 }
1911 2011
1912 void test_setContents_null() { 2012 void test_setContents_null() {
1913 Source librarySource = addSource("/lib.dart", r''' 2013 Source librarySource = addSource(
2014 "/lib.dart",
2015 r'''
1914 library lib; 2016 library lib;
1915 int a = 0;'''); 2017 int a = 0;''');
1916 context.setContents(librarySource, '// different'); 2018 context.setContents(librarySource, '// different');
1917 context.computeLibraryElement(librarySource); 2019 context.computeLibraryElement(librarySource);
1918 context.setContents(librarySource, null); 2020 context.setContents(librarySource, null);
1919 expect(context.getResolvedCompilationUnit2(librarySource, librarySource), 2021 expect(context.getResolvedCompilationUnit2(librarySource, librarySource),
1920 isNull); 2022 isNull);
1921 } 2023 }
1922 2024
1923 void test_setContents_unchanged_consistentModificationTime() { 2025 void test_setContents_unchanged_consistentModificationTime() {
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
2090 context.analysisOptions = options; 2192 context.analysisOptions = options;
2091 } 2193 }
2092 2194
2093 @override 2195 @override
2094 void tearDown() { 2196 void tearDown() {
2095 AnalysisEngine.instance.limitInvalidationInTaskModel = false; 2197 AnalysisEngine.instance.limitInvalidationInTaskModel = false;
2096 super.tearDown(); 2198 super.tearDown();
2097 } 2199 }
2098 2200
2099 void test_noChange_thenChange() { 2201 void test_noChange_thenChange() {
2100 Source sourceA = addSource("/a.dart", r''' 2202 Source sourceA = addSource(
2203 "/a.dart",
2204 r'''
2101 library lib_a; 2205 library lib_a;
2102 2206
2103 class A { 2207 class A {
2104 A(); 2208 A();
2105 } 2209 }
2106 class B { 2210 class B {
2107 B(); 2211 B();
2108 } 2212 }
2109 '''); 2213 ''');
2110 Source sourceB = addSource("/b.dart", r''' 2214 Source sourceB = addSource(
2215 "/b.dart",
2216 r'''
2111 library lib_b; 2217 library lib_b;
2112 import 'a.dart'; 2218 import 'a.dart';
2113 main() { 2219 main() {
2114 new A(); 2220 new A();
2115 } 2221 }
2116 '''); 2222 ''');
2117 _performPendingAnalysisTasks(); 2223 _performPendingAnalysisTasks();
2118 expect(context.getErrors(sourceA).errors, hasLength(0)); 2224 expect(context.getErrors(sourceA).errors, hasLength(0));
2119 expect(context.getErrors(sourceB).errors, hasLength(0)); 2225 expect(context.getErrors(sourceB).errors, hasLength(0));
2120 var unitA = context.getResolvedCompilationUnit2(sourceA, sourceA); 2226 var unitA = context.getResolvedCompilationUnit2(sourceA, sourceA);
2121 var unitElementA = unitA.element; 2227 var unitElementA = unitA.element;
2122 var libraryElementA = unitElementA.library; 2228 var libraryElementA = unitElementA.library;
2123 // Update a.dart, no declaration changes. 2229 // Update a.dart, no declaration changes.
2124 context.setContents(sourceA, r''' 2230 context.setContents(
2231 sourceA,
2232 r'''
2125 library lib_a; 2233 library lib_a;
2126 class A { 2234 class A {
2127 A(); 2235 A();
2128 } 2236 }
2129 class B { 2237 class B {
2130 B(); 2238 B();
2131 } 2239 }
2132 '''); 2240 ''');
2133 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2241 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2134 _assertValid(sourceB, LIBRARY_ERRORS_READY); 2242 _assertValid(sourceB, LIBRARY_ERRORS_READY);
(...skipping 12 matching lines...) Expand all
2147 expect(context.getErrors(sourceB).errors, hasLength(0)); 2255 expect(context.getErrors(sourceB).errors, hasLength(0));
2148 // The a.dart's unit and element are the same. 2256 // The a.dart's unit and element are the same.
2149 { 2257 {
2150 LibrarySpecificUnit target = new LibrarySpecificUnit(sourceA, sourceA); 2258 LibrarySpecificUnit target = new LibrarySpecificUnit(sourceA, sourceA);
2151 expect(analysisCache.getValue(target, RESOLVED_UNIT), same(unitA)); 2259 expect(analysisCache.getValue(target, RESOLVED_UNIT), same(unitA));
2152 expect(unitA.element, same(unitElementA)); 2260 expect(unitA.element, same(unitElementA));
2153 expect(unitElementA.library, same(libraryElementA)); 2261 expect(unitElementA.library, same(libraryElementA));
2154 } 2262 }
2155 // Update a.dart, rename A to A2, invalidates b.dart, so 2263 // Update a.dart, rename A to A2, invalidates b.dart, so
2156 // we know that the previous update did not damage dependencies. 2264 // we know that the previous update did not damage dependencies.
2157 context.setContents(sourceA, r''' 2265 context.setContents(
2266 sourceA,
2267 r'''
2158 library lib_a; 2268 library lib_a;
2159 class A { 2269 class A {
2160 A(); 2270 A();
2161 m() {} 2271 m() {}
2162 } 2272 }
2163 class B { 2273 class B {
2164 B(); 2274 B();
2165 } 2275 }
2166 '''); 2276 ''');
2167 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2277 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2168 _assertInvalid(sourceB, LIBRARY_ERRORS_READY); 2278 _assertInvalid(sourceB, LIBRARY_ERRORS_READY);
2169 // The a.dart's unit and element are the same. 2279 // The a.dart's unit and element are the same.
2170 { 2280 {
2171 LibrarySpecificUnit target = new LibrarySpecificUnit(sourceA, sourceA); 2281 LibrarySpecificUnit target = new LibrarySpecificUnit(sourceA, sourceA);
2172 expect(analysisCache.getValue(target, RESOLVED_UNIT1), same(unitA)); 2282 expect(analysisCache.getValue(target, RESOLVED_UNIT1), same(unitA));
2173 expect(unitA.element, same(unitElementA)); 2283 expect(unitA.element, same(unitElementA));
2174 expect(unitElementA.library, same(libraryElementA)); 2284 expect(unitElementA.library, same(libraryElementA));
2175 } 2285 }
2176 // Analyze. 2286 // Analyze.
2177 _performPendingAnalysisTasks(); 2287 _performPendingAnalysisTasks();
2178 expect(context.getErrors(sourceA).errors, hasLength(0)); 2288 expect(context.getErrors(sourceA).errors, hasLength(0));
2179 expect(context.getErrors(sourceB).errors, hasLength(0)); 2289 expect(context.getErrors(sourceB).errors, hasLength(0));
2180 } 2290 }
2181 2291
2182 void test_unusedName() { 2292 void test_unusedName() {
2183 Source sourceA = addSource("/a.dart", r''' 2293 Source sourceA = addSource(
2294 "/a.dart",
2295 r'''
2184 library lib_a; 2296 library lib_a;
2185 class A {} 2297 class A {}
2186 class B {} 2298 class B {}
2187 class C {} 2299 class C {}
2188 '''); 2300 ''');
2189 Source sourceB = addSource("/b.dart", r''' 2301 Source sourceB = addSource(
2302 "/b.dart",
2303 r'''
2190 library lib_b; 2304 library lib_b;
2191 import 'a.dart'; 2305 import 'a.dart';
2192 main() { 2306 main() {
2193 new A(); 2307 new A();
2194 new C(); 2308 new C();
2195 } 2309 }
2196 '''); 2310 ''');
2197 _performPendingAnalysisTasks(); 2311 _performPendingAnalysisTasks();
2198 // Update A. 2312 // Update A.
2199 context.setContents(sourceA, r''' 2313 context.setContents(
2314 sourceA,
2315 r'''
2200 library lib_a; 2316 library lib_a;
2201 class A {} 2317 class A {}
2202 class B2 {} 2318 class B2 {}
2203 class C {} 2319 class C {}
2204 '''); 2320 ''');
2205 // Only a.dart is invalidated. 2321 // Only a.dart is invalidated.
2206 // Because b.dart does not use B, so it is valid. 2322 // Because b.dart does not use B, so it is valid.
2207 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2323 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2208 _assertValid(sourceB, LIBRARY_ERRORS_READY); 2324 _assertValid(sourceB, LIBRARY_ERRORS_READY);
2209 } 2325 }
2210 2326
2211 void test_usedName_directUser() { 2327 void test_usedName_directUser() {
2212 Source sourceA = addSource("/a.dart", r''' 2328 Source sourceA = addSource(
2329 "/a.dart",
2330 r'''
2213 library lib_a; 2331 library lib_a;
2214 class A {} 2332 class A {}
2215 class B {} 2333 class B {}
2216 class C {} 2334 class C {}
2217 '''); 2335 ''');
2218 Source sourceB = addSource("/b.dart", r''' 2336 Source sourceB = addSource(
2337 "/b.dart",
2338 r'''
2219 library lib_b; 2339 library lib_b;
2220 import 'a.dart'; 2340 import 'a.dart';
2221 main() { 2341 main() {
2222 new A(); 2342 new A();
2223 new C2(); 2343 new C2();
2224 } 2344 }
2225 '''); 2345 ''');
2226 _performPendingAnalysisTasks(); 2346 _performPendingAnalysisTasks();
2227 expect(context.getErrors(sourceB).errors, hasLength(1)); 2347 expect(context.getErrors(sourceB).errors, hasLength(1));
2228 // Update a.dart, invalidates b.dart because it references "C2". 2348 // Update a.dart, invalidates b.dart because it references "C2".
2229 context.setContents(sourceA, r''' 2349 context.setContents(
2350 sourceA,
2351 r'''
2230 library lib_a; 2352 library lib_a;
2231 class A {} 2353 class A {}
2232 class B {} 2354 class B {}
2233 class C2 {} 2355 class C2 {}
2234 '''); 2356 ''');
2235 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2357 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2236 _assertInvalid(sourceB, LIBRARY_ERRORS_READY); 2358 _assertInvalid(sourceB, LIBRARY_ERRORS_READY);
2237 // Now b.dart is analyzed and the error is fixed. 2359 // Now b.dart is analyzed and the error is fixed.
2238 _performPendingAnalysisTasks(); 2360 _performPendingAnalysisTasks();
2239 expect(context.getErrors(sourceB).errors, hasLength(0)); 2361 expect(context.getErrors(sourceB).errors, hasLength(0));
2240 // Update a.dart, invalidates b.dart because it references "C". 2362 // Update a.dart, invalidates b.dart because it references "C".
2241 context.setContents(sourceA, r''' 2363 context.setContents(
2364 sourceA,
2365 r'''
2242 library lib_a; 2366 library lib_a;
2243 class A {} 2367 class A {}
2244 class B {} 2368 class B {}
2245 class C {} 2369 class C {}
2246 '''); 2370 ''');
2247 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2371 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2248 _assertInvalid(sourceB, LIBRARY_ERRORS_READY); 2372 _assertInvalid(sourceB, LIBRARY_ERRORS_READY);
2249 _performPendingAnalysisTasks(); 2373 _performPendingAnalysisTasks();
2250 // Now b.dart is analyzed and it again has the error. 2374 // Now b.dart is analyzed and it again has the error.
2251 expect(context.getErrors(sourceB).errors, hasLength(1)); 2375 expect(context.getErrors(sourceB).errors, hasLength(1));
2252 } 2376 }
2253 2377
2254 void test_usedName_directUser_withIncremental() { 2378 void test_usedName_directUser_withIncremental() {
2255 Source sourceA = addSource("/a.dart", r''' 2379 Source sourceA = addSource(
2380 "/a.dart",
2381 r'''
2256 library lib_a; 2382 library lib_a;
2257 class A { 2383 class A {
2258 m() {} 2384 m() {}
2259 } 2385 }
2260 '''); 2386 ''');
2261 Source sourceB = addSource("/b.dart", r''' 2387 Source sourceB = addSource(
2388 "/b.dart",
2389 r'''
2262 library lib_b; 2390 library lib_b;
2263 import 'a.dart'; 2391 import 'a.dart';
2264 main() { 2392 main() {
2265 A a = new A(); 2393 A a = new A();
2266 a.m(); 2394 a.m();
2267 } 2395 }
2268 '''); 2396 ''');
2269 _performPendingAnalysisTasks(); 2397 _performPendingAnalysisTasks();
2270 // Update A. 2398 // Update A.
2271 context.setContents(sourceA, r''' 2399 context.setContents(
2400 sourceA,
2401 r'''
2272 library lib_a; 2402 library lib_a;
2273 class A { 2403 class A {
2274 m2() {} 2404 m2() {}
2275 } 2405 }
2276 '''); 2406 ''');
2277 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2407 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2278 _assertInvalid(sourceB, LIBRARY_ERRORS_READY); 2408 _assertInvalid(sourceB, LIBRARY_ERRORS_READY);
2279 } 2409 }
2280 2410
2281 void test_usedName_indirectUser() { 2411 void test_usedName_indirectUser() {
2282 Source sourceA = addSource("/a.dart", r''' 2412 Source sourceA = addSource(
2413 "/a.dart",
2414 r'''
2283 library lib_a; 2415 library lib_a;
2284 class A { 2416 class A {
2285 m() {} 2417 m() {}
2286 } 2418 }
2287 '''); 2419 ''');
2288 Source sourceB = addSource("/b.dart", r''' 2420 Source sourceB = addSource(
2421 "/b.dart",
2422 r'''
2289 library lib_b; 2423 library lib_b;
2290 import 'a.dart'; 2424 import 'a.dart';
2291 class B extends A {} 2425 class B extends A {}
2292 '''); 2426 ''');
2293 Source sourceC = addSource("/c.dart", r''' 2427 Source sourceC = addSource(
2428 "/c.dart",
2429 r'''
2294 library lib_c; 2430 library lib_c;
2295 import 'b.dart'; 2431 import 'b.dart';
2296 class C extends B { 2432 class C extends B {
2297 main() { 2433 main() {
2298 m(); 2434 m();
2299 } 2435 }
2300 } 2436 }
2301 '''); 2437 ''');
2302 // No errors, "A.m" exists. 2438 // No errors, "A.m" exists.
2303 _performPendingAnalysisTasks(); 2439 _performPendingAnalysisTasks();
2304 expect(context.getErrors(sourceC).errors, hasLength(0)); 2440 expect(context.getErrors(sourceC).errors, hasLength(0));
2305 // Replace "A.m" with "A.m2", invalidate both b.dart and c.dart files. 2441 // Replace "A.m" with "A.m2", invalidate both b.dart and c.dart files.
2306 context.setContents(sourceA, r''' 2442 context.setContents(
2443 sourceA,
2444 r'''
2307 library lib_a; 2445 library lib_a;
2308 class A { 2446 class A {
2309 m2() {} 2447 m2() {}
2310 } 2448 }
2311 '''); 2449 ''');
2312 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2450 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2313 _assertInvalid(sourceB, LIBRARY_ERRORS_READY); 2451 _assertInvalid(sourceB, LIBRARY_ERRORS_READY);
2314 _assertInvalid(sourceC, LIBRARY_ERRORS_READY); 2452 _assertInvalid(sourceC, LIBRARY_ERRORS_READY);
2315 // There is an error in c.dart, "A.m" does not exist. 2453 // There is an error in c.dart, "A.m" does not exist.
2316 _performPendingAnalysisTasks(); 2454 _performPendingAnalysisTasks();
2317 expect(context.getErrors(sourceB).errors, hasLength(0)); 2455 expect(context.getErrors(sourceB).errors, hasLength(0));
2318 expect(context.getErrors(sourceC).errors, hasLength(1)); 2456 expect(context.getErrors(sourceC).errors, hasLength(1));
2319 // Restore "A.m", invalidate both b.dart and c.dart files. 2457 // Restore "A.m", invalidate both b.dart and c.dart files.
2320 context.setContents(sourceA, r''' 2458 context.setContents(
2459 sourceA,
2460 r'''
2321 library lib_a; 2461 library lib_a;
2322 class A { 2462 class A {
2323 m() {} 2463 m() {}
2324 } 2464 }
2325 '''); 2465 ''');
2326 _assertInvalid(sourceA, LIBRARY_ERRORS_READY); 2466 _assertInvalid(sourceA, LIBRARY_ERRORS_READY);
2327 _assertInvalid(sourceB, LIBRARY_ERRORS_READY); 2467 _assertInvalid(sourceB, LIBRARY_ERRORS_READY);
2328 _assertInvalid(sourceC, LIBRARY_ERRORS_READY); 2468 _assertInvalid(sourceC, LIBRARY_ERRORS_READY);
2329 // No errors, "A.m" exists. 2469 // No errors, "A.m" exists.
2330 _performPendingAnalysisTasks(); 2470 _performPendingAnalysisTasks();
(...skipping 19 matching lines...) Expand all
2350 } 2490 }
2351 } 2491 }
2352 2492
2353 class _AnalysisContextImplTest_test_applyChanges_removeContainer 2493 class _AnalysisContextImplTest_test_applyChanges_removeContainer
2354 implements SourceContainer { 2494 implements SourceContainer {
2355 Source libB; 2495 Source libB;
2356 _AnalysisContextImplTest_test_applyChanges_removeContainer(this.libB); 2496 _AnalysisContextImplTest_test_applyChanges_removeContainer(this.libB);
2357 @override 2497 @override
2358 bool contains(Source source) => source == libB; 2498 bool contains(Source source) => source == libB;
2359 } 2499 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/context/cache_test.dart ('k') | pkg/analyzer/test/src/context/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698