Linking libraries is not async anymore.
Change-Id: Id009fe12ae6283c4faa2500a86ed589d9729bb60
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/407300
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 0cd3a91..985ae68 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -1332,20 +1332,17 @@
return;
}
- await performance.runAsync(
- 'libraryContext',
- (performance) async {
- await libraryContext.load(
- targetLibrary: library,
- performance: performance,
- );
- },
- );
+ performance.run('libraryContext', (performance) {
+ libraryContext.load(
+ targetLibrary: library,
+ performance: performance,
+ );
+ });
for (var import in library.docLibraryImports) {
if (import is LibraryImportWithFile) {
if (import.importedLibrary case var libraryFileKind?) {
- await libraryContext.load(
+ libraryContext.load(
targetLibrary: libraryFileKind,
performance: OperationPerformanceImpl('<root>'),
);
@@ -1776,15 +1773,12 @@
var kind = file.kind;
var library = kind.library ?? kind.asLibrary;
- await performance.runAsync(
- 'libraryContext',
- (performance) async {
- await libraryContext.load(
- targetLibrary: library,
- performance: performance,
- );
- },
- );
+ performance.run('libraryContext', (performance) {
+ libraryContext.load(
+ targetLibrary: library,
+ performance: performance,
+ );
+ });
var element = libraryContext.computeUnitElement(library, file);
var result = UnitElementResultImpl(
@@ -1877,7 +1871,7 @@
var library = kind.library ?? kind.asLibrary;
// Errors are based on elements, so load them.
- await libraryContext.load(
+ libraryContext.load(
targetLibrary: library,
performance: OperationPerformanceImpl('<root>'),
);
@@ -2012,15 +2006,12 @@
var kind = file.kind;
var library = kind.library ?? kind.asLibrary;
- await performance.runAsync(
- 'libraryContext',
- (performance) async {
- await libraryContext.load(
- targetLibrary: library,
- performance: performance,
- );
- },
- );
+ performance.run('libraryContext', (performance) {
+ libraryContext.load(
+ targetLibrary: library,
+ performance: performance,
+ );
+ });
var unitElement = libraryContext.computeUnitElement(library, file);
var analysisOptions = libraryContext.analysisContext
.getAnalysisOptionsForFile(file.resource);
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index 5e74a8e..75ab7f2 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -118,10 +118,10 @@
}
/// Load data required to access elements of the given [targetLibrary].
- Future<void> load({
+ void load({
required LibraryFileKind targetLibrary,
required OperationPerformanceImpl performance,
- }) async {
+ }) {
addToLogRing('[load][targetLibrary: ${targetLibrary.file}]');
var librariesTotal = 0;
var librariesLoaded = 0;
@@ -130,7 +130,7 @@
var bytesGet = 0;
var bytesPut = 0;
- Future<void> loadBundle(LibraryCycle cycle) async {
+ void loadBundle(LibraryCycle cycle) {
if (!loadedBundles.add(cycle)) return;
performance.getDataInt('cycleCount').increment();
@@ -139,7 +139,7 @@
librariesTotal += cycle.libraries.length;
for (var directDependency in cycle.directDependencies) {
- await loadBundle(directDependency);
+ loadBundle(directDependency);
}
var unitsInformativeBytes = <Uri, Uint8List>{};
@@ -160,16 +160,13 @@
LinkResult linkResult;
try {
- linkResult = await performance.runAsync(
- 'link',
- (performance) async {
- return await link(
- elementFactory: elementFactory,
- performance: performance,
- inputLibraries: cycle.libraries,
- );
- },
- );
+ linkResult = performance.run('link', (performance) {
+ return link(
+ elementFactory: elementFactory,
+ performance: performance,
+ inputLibraries: cycle.libraries,
+ );
+ });
librariesLinked += cycle.libraries.length;
} catch (exception, stackTrace) {
_throwLibraryCycleLinkException(cycle, exception, stackTrace);
@@ -199,7 +196,7 @@
}
}
- await logger.runAsync('Prepare linked bundles', () async {
+ logger.run('Prepare linked bundles', () {
var libraryCycle = performance.run('libraryCycle', (performance) {
fileSystemState.newFileOperationPerformance = performance;
try {
@@ -208,7 +205,7 @@
fileSystemState.newFileOperationPerformance = null;
}
});
- await loadBundle(libraryCycle);
+ loadBundle(libraryCycle);
logger.writeln(
'[librariesTotal: $librariesTotal]'
'[librariesLoaded: $librariesLoaded]'
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index 4cf6c3b..53732c6 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -415,8 +415,8 @@
throw ArgumentError('$uri is not a library.');
}
- await performance.runAsync('libraryContext', (performance) async {
- await libraryContext!.load(
+ performance.run('libraryContext', (performance) {
+ libraryContext!.load(
targetLibrary: kind,
performance: performance,
);
@@ -470,7 +470,7 @@
var libraryKind = file.kind.library ?? file.kind.asLibrary;
// Load the library, link if necessary.
- await libraryContext!.load(
+ libraryContext!.load(
targetLibrary: libraryKind,
performance: performance,
);
@@ -480,7 +480,7 @@
var linkedKeysToRelease = libraryContext!.unloadAll();
// Load the library again, the reference count is `>= 2`.
- await libraryContext!.load(
+ libraryContext!.load(
targetLibrary: libraryKind,
performance: performance,
);
@@ -569,8 +569,8 @@
var lineOffset = file.lineInfo.getOffsetOfLine(completionLine);
var completionOffset = lineOffset + completionColumn;
- await performance.runAsync('libraryContext', (performance) async {
- await libraryContext!.load(
+ performance.run('libraryContext', (performance) {
+ libraryContext!.load(
targetLibrary: libraryKind,
performance: performance,
);
@@ -645,8 +645,8 @@
var file = fileContext.file;
var libraryKind = file.kind.library ?? file.kind.asLibrary;
- await performance.runAsync('libraryContext', (performance) async {
- await libraryContext!.load(
+ performance.run('libraryContext', (performance) {
+ libraryContext!.load(
targetLibrary: libraryKind,
performance: performance,
);
diff --git a/pkg/analyzer/lib/src/summary2/link.dart b/pkg/analyzer/lib/src/summary2/link.dart
index 9a238a7..542baa2 100644
--- a/pkg/analyzer/lib/src/summary2/link.dart
+++ b/pkg/analyzer/lib/src/summary2/link.dart
@@ -30,13 +30,13 @@
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:analyzer/src/utilities/uri_cache.dart';
-Future<LinkResult> link({
+LinkResult link({
required LinkedElementFactory elementFactory,
required OperationPerformanceImpl performance,
required List<LibraryFileKind> inputLibraries,
-}) async {
+}) {
var linker = Linker(elementFactory);
- await linker.link(
+ linker.link(
performance: performance,
inputLibraries: inputLibraries,
);
@@ -87,10 +87,10 @@
return elementNodes[element.asElement];
}
- Future<void> link({
+ void link({
required OperationPerformanceImpl performance,
required List<LibraryFileKind> inputLibraries,
- }) async {
+ }) {
performance.run('LibraryBuilder.build', (performance) {
for (var inputLibrary in inputLibraries) {
LibraryBuilder.build(
@@ -101,8 +101,8 @@
}
});
- await performance.runAsync('buildOutlines', (performance) async {
- await _buildOutlines(
+ performance.run('buildOutlines', (performance) {
+ _buildOutlines(
performance: performance,
);
});
@@ -189,19 +189,16 @@
}
}
- Future<void> _buildOutlines({
+ void _buildOutlines({
required OperationPerformanceImpl performance,
- }) async {
+ }) {
_createTypeSystemIfNotLinkingDartCore();
- await performance.runAsync(
- 'computeLibraryScopes',
- (performance) async {
- await _computeLibraryScopes(
- performance: performance,
- );
- },
- );
+ performance.run('computeLibraryScopes', (performance) {
+ _computeLibraryScopes(
+ performance: performance,
+ );
+ });
_createTypeSystem();
_resolveTypes();
@@ -237,9 +234,9 @@
}
}
- Future<void> _computeLibraryScopes({
+ void _computeLibraryScopes({
required OperationPerformanceImpl performance,
- }) async {
+ }) {
for (var library in builders.values) {
library.buildElements();
}
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index ce5e2c6..b9b0d3e 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -727,18 +727,18 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B1
- ResolvedUnitResult #1
+ ResolvedUnitResult #0
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #0
[status] idle
''');
@@ -748,9 +748,9 @@
collector.getResolvedUnit('B2', b);
await assertEventsText(collector, r'''
[future] getResolvedUnit A1
- ResolvedUnitResult #0
-[future] getResolvedUnit B2
ResolvedUnitResult #1
+[future] getResolvedUnit B2
+ ResolvedUnitResult #0
''');
// Ask for resolved library.
@@ -762,8 +762,8 @@
ResolvedLibraryResult #2
element: package:test/a.dart
units
- ResolvedUnitResult #0
ResolvedUnitResult #1
+ ResolvedUnitResult #0
''');
}
@@ -788,18 +788,18 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B1
- ResolvedUnitResult #1
+ ResolvedUnitResult #0
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #0
[status] idle
''');
@@ -809,9 +809,9 @@
collector.getResolvedUnit('B2', b);
await assertEventsText(collector, r'''
[future] getResolvedUnit A1
- ResolvedUnitResult #0
-[future] getResolvedUnit B2
ResolvedUnitResult #1
+[future] getResolvedUnit B2
+ ResolvedUnitResult #0
''');
// Ask for resolved library.
@@ -823,8 +823,8 @@
ResolvedLibraryResult #2
element: package:test/a.dart
units
- ResolvedUnitResult #0
ResolvedUnitResult #1
+ ResolvedUnitResult #0
''');
}
@@ -1570,17 +1570,17 @@
path: /home/test/lib/a.dart
uri: package:test/a.dart
flags: isLibrary
-[stream]
- ResolvedUnitResult #1
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getErrors B1
- ErrorsResult #2
+ ErrorsResult #1
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: isPart
[stream]
+ ResolvedUnitResult #2
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
ResolvedUnitResult #3
path: /home/test/lib/b.dart
uri: package:test/b.dart
@@ -2080,16 +2080,16 @@
[operation] analyzeFile
file: /home/test/lib/a.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedLibrary A1
- ResolvedLibraryResult #1
+ ResolvedLibraryResult #0
element: package:test/a.dart
units
- ResolvedUnitResult #0
+ ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #1
[status] idle
''');
}
@@ -2114,21 +2114,21 @@
[operation] analyzeFile
file: /home/test/lib/a.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedLibrary A1
- ResolvedLibraryResult #1
+ ResolvedLibraryResult #0
element: package:test/a.dart
units
- ResolvedUnitResult #0
+ ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
ResolvedUnitResult #2
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
+ ResolvedUnitResult #1
+[stream]
ResolvedUnitResult #2
[status] idle
''');
@@ -2139,7 +2139,7 @@
collector.getResolvedLibrary('A2', a);
await assertEventsText(collector, r'''
[future] getResolvedLibrary A2
- ResolvedLibraryResult #1
+ ResolvedLibraryResult #0
''');
// Ask `a`, returns cached.
@@ -2147,7 +2147,7 @@
collector.getResolvedUnit('A3', a);
await assertEventsText(collector, r'''
[future] getResolvedUnit A3
- ResolvedUnitResult #0
+ ResolvedUnitResult #1
''');
// Ask `b`, returns cached.
@@ -2207,16 +2207,16 @@
[operation] analyzeFile
file: /home/test/lib/a.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedLibrary A1
- ResolvedLibraryResult #1
+ ResolvedLibraryResult #0
element: package:test/a.dart
units
- ResolvedUnitResult #0
+ ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #1
[status] idle
''');
}
@@ -2235,16 +2235,16 @@
[operation] analyzeFile
file: /home/test/lib/a.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedLibraryByUri A1
- ResolvedLibraryResult #1
+ ResolvedLibraryResult #0
element: package:test/a.dart
units
- ResolvedUnitResult #0
+ ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #1
[status] idle
''');
}
@@ -2291,8 +2291,6 @@
path: /home/test/lib/a.dart
uri: package:test/a.dart
flags: exists isLibrary
-[stream]
- ResolvedUnitResult #0
[future] getResolvedUnit B1
ResolvedUnitResult #1
path: /home/test/lib/b.dart
@@ -2305,6 +2303,8 @@
ResolvedUnitResult #0
ResolvedUnitResult #1
[stream]
+ ResolvedUnitResult #0
+[stream]
ResolvedUnitResult #1
[status] idle
''');
@@ -2567,14 +2567,14 @@
path: /home/test/lib/a.dart
uri: package:test/a.dart
flags: exists isLibrary
-[stream]
- ResolvedUnitResult #0
[future] getResolvedUnit B1
ResolvedUnitResult #1
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
+ ResolvedUnitResult #0
+[stream]
ResolvedUnitResult #1
[status] idle
''');
@@ -2606,14 +2606,14 @@
path: /home/test/lib/a.dart
uri: package:test/a.dart
flags: exists isLibrary
-[stream]
- ResolvedUnitResult #0
[future] getErrors B1
ErrorsResult #1
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: isPart
[stream]
+ ResolvedUnitResult #0
+[stream]
ResolvedUnitResult #2
path: /home/test/lib/b.dart
uri: package:test/b.dart
@@ -2754,14 +2754,14 @@
path: /home/test/lib/a.dart
uri: package:test/a.dart
flags: exists isLibrary
-[stream]
- ResolvedUnitResult #0
[future] getResolvedUnit B1
ResolvedUnitResult #1
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
+ ResolvedUnitResult #0
+[stream]
ResolvedUnitResult #1
[status] idle
''');
@@ -2793,18 +2793,18 @@
path: /home/test/lib/a.dart
uri: package:test/a.dart
flags: isLibrary
-[stream]
- ResolvedUnitResult #1
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B1
- ResolvedUnitResult #2
+ ResolvedUnitResult #1
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
ResolvedUnitResult #2
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #1
[status] idle
''');
}
@@ -3002,18 +3002,18 @@
[operation] analyzeFile
file: /home/test/lib/a.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
- errors
- 7 +21 URI_DOES_NOT_EXIST
[future] getResolvedLibrary A1
- ResolvedLibraryResult #1
+ ResolvedLibraryResult #0
element: package:test/a.dart
units
- ResolvedUnitResult #0
+ ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+ errors
+ 7 +21 URI_DOES_NOT_EXIST
+[stream]
+ ResolvedUnitResult #1
[status] idle
''');
@@ -3067,13 +3067,8 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B1
- ResolvedUnitResult #1
+ ResolvedUnitResult #0
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
@@ -3081,6 +3076,11 @@
B: int
[stream]
ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #0
[status] idle
''');
@@ -3098,13 +3098,8 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #2
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B2
- ResolvedUnitResult #3
+ ResolvedUnitResult #2
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
@@ -3112,6 +3107,11 @@
B: int
[stream]
ResolvedUnitResult #3
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #2
[status] idle
''');
}
@@ -3469,17 +3469,17 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/hidden/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/hidden/a.dart
- uri: package:test/hidden/a.dart
- flags: exists isLibrary
[future] getErrors B1
- ErrorsResult #1
+ ErrorsResult #0
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: isPart
[stream]
+ ResolvedUnitResult #1
+ path: /home/test/lib/hidden/a.dart
+ uri: package:test/hidden/a.dart
+ flags: exists isLibrary
+[stream]
ResolvedUnitResult #2
path: /home/test/lib/b.dart
uri: package:test/b.dart
@@ -3516,17 +3516,17 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getErrors B1
- ErrorsResult #1
+ ErrorsResult #0
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: isPart
[stream]
+ ResolvedUnitResult #1
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
ResolvedUnitResult #2
path: /home/test/lib/b.dart
uri: package:test/b.dart
@@ -3628,18 +3628,18 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/hidden/a.dart
-[stream]
- ResolvedUnitResult #2
- path: /home/test/lib/hidden/a.dart
- uri: package:test/hidden/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B1
- ResolvedUnitResult #3
+ ResolvedUnitResult #2
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
ResolvedUnitResult #3
+ path: /home/test/lib/hidden/a.dart
+ uri: package:test/hidden/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #2
[status] idle
''');
}
@@ -3674,18 +3674,18 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/hidden/a.dart
-[stream]
- ResolvedUnitResult #0
- path: /home/test/lib/hidden/a.dart
- uri: package:test/hidden/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B1
- ResolvedUnitResult #1
+ ResolvedUnitResult #0
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
ResolvedUnitResult #1
+ path: /home/test/lib/hidden/a.dart
+ uri: package:test/hidden/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #0
[status] idle
''');
}
@@ -3778,18 +3778,18 @@
[operation] analyzeFile
file: /home/test/lib/b.dart
library: /home/test/lib/a.dart
-[stream]
- ResolvedUnitResult #1
- path: /home/test/lib/a.dart
- uri: package:test/a.dart
- flags: exists isLibrary
[future] getResolvedUnit B1
- ResolvedUnitResult #2
+ ResolvedUnitResult #1
path: /home/test/lib/b.dart
uri: package:test/b.dart
flags: exists isPart
[stream]
ResolvedUnitResult #2
+ path: /home/test/lib/a.dart
+ uri: package:test/a.dart
+ flags: exists isLibrary
+[stream]
+ ResolvedUnitResult #1
[status] idle
''');
}