Index: pkg/analyzer/test/generated/engine_test.dart |
diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart |
index feb01db1463b16b70463307227104e35c205d42a..cdb97acdb5dad98356b68e84094e212e7905b1dd 100644 |
--- a/pkg/analyzer/test/generated/engine_test.dart |
+++ b/pkg/analyzer/test/generated/engine_test.dart |
@@ -245,6 +245,21 @@ class AnalysisContextImplTest extends EngineTestCase { |
super.tearDown(); |
} |
+ Future test_analyzedSources_added() async { |
+ AnalyzedSourcesListener listener = new AnalyzedSourcesListener(); |
+ _context.implicitAnalysisEvents.listen(listener.onData); |
+ // |
+ // Create a file that references an file that is not explicitly being |
+ // analyzed and fully analyze it. Ensure that the listener is told about |
+ // the implicitly analyzed file. |
+ // |
+ Source sourceA = _addSource('/a.dart', "library a; import 'b.dart';"); |
+ Source sourceB = _createSource('/b.dart', "library b;"); |
+ _context.computeErrors(sourceA); |
+ await pumpEventQueue(); |
+ listener.expectAnalyzed(sourceB); |
+ } |
+ |
Future test_applyChanges_add() { |
SourcesChangedListener listener = new SourcesChangedListener(); |
_context.onSourcesChanged.listen(listener.onData); |
@@ -2151,6 +2166,12 @@ library test2;'''); |
_context.applyChanges(changeSet); |
} |
+ Source _createSource(String fileName, String contents) { |
+ Source source = new FileBasedSource(FileUtilities2.createFile(fileName)); |
+ _context.setContents(source, contents); |
+ return source; |
+ } |
+ |
/** |
* Search the given compilation unit for a class with the given name. Return the class with the |
* given name, or `null` if the class cannot be found. |
@@ -2343,6 +2364,48 @@ class AnalysisTaskTest extends EngineTestCase { |
} |
} |
+/** |
+ * A listener used to gather the [ImplicitAnalysisEvent]s that are produced |
+ * during analysis. |
+ */ |
+class AnalyzedSourcesListener { |
+ /** |
+ * The events that have been gathered. |
+ */ |
+ List<ImplicitAnalysisEvent> actualEvents = <ImplicitAnalysisEvent>[]; |
+ |
+ /** |
+ * The sources that are being implicitly analyzed. |
+ */ |
+ List<Source> analyzedSources = <Source>[]; |
+ |
+ /** |
+ * Assert that the given source is currently being implicitly analyzed. |
+ */ |
+ void expectAnalyzed(Source source) { |
+ expect(analyzedSources, contains(source)); |
+ } |
+ |
+ /** |
+ * Assert that the given source is not currently being implicitly analyzed. |
+ */ |
+ void expectNotAnalyzed(Source source) { |
+ expect(analyzedSources, isNot(contains(source))); |
+ } |
+ |
+ /** |
+ * Record that the given event was produced. |
+ */ |
+ void onData(ImplicitAnalysisEvent event) { |
+ actualEvents.add(event); |
+ if (event.isAnalyzed) { |
+ analyzedSources.add(event.source); |
+ } else { |
+ analyzedSources.remove(event.source); |
+ } |
+ } |
+} |
+ |
class CompilationUnitMock extends TypedMock implements CompilationUnit { |
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
} |
@@ -5468,6 +5531,11 @@ class TestAnalysisContext implements InternalAnalysisContext { |
return null; |
} |
@override |
+ Stream<ImplicitAnalysisEvent> get implicitAnalysisEvents { |
+ fail("Unexpected invocation of analyzedSources"); |
+ return null; |
+ } |
+ @override |
bool get isDisposed { |
fail("Unexpected invocation of isDisposed"); |
return false; |
@@ -5511,6 +5579,7 @@ class TestAnalysisContext implements InternalAnalysisContext { |
fail("Unexpected invocation of getPrioritySources"); |
return null; |
} |
+ |
@override |
List<AnalysisTarget> get priorityTargets { |
fail("Unexpected invocation of visitCacheItems"); |
@@ -5528,7 +5597,6 @@ class TestAnalysisContext implements InternalAnalysisContext { |
fail("Unexpected invocation of getResolverVisitorFactory"); |
return null; |
} |
- |
@override |
SourceFactory get sourceFactory { |
fail("Unexpected invocation of getSourceFactory"); |
@@ -5790,6 +5858,7 @@ class TestAnalysisContext implements InternalAnalysisContext { |
fail("Unexpected invocation of parseHtmlUnit"); |
return null; |
} |
+ |
@override |
AnalysisResult performAnalysisTask() { |
fail("Unexpected invocation of performAnalysisTask"); |
@@ -5832,11 +5901,11 @@ class TestAnalysisContext implements InternalAnalysisContext { |
int oldLength, int newLength) { |
fail("Unexpected invocation of setChangedContents"); |
} |
- |
@override |
void setContents(Source source, String contents) { |
fail("Unexpected invocation of setContents"); |
} |
+ |
@override |
bool shouldErrorsBeAnalyzed(Source source, Object entry) { |
fail("Unexpected invocation of shouldErrorsBeAnalyzed"); |