Fine. Tracking for LibraryElementImpl.exportedLibraries
Change-Id: Ia2a74667f97efbbb45dde7b95e4649edbc1a55dc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449681
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/analyzer/lib/src/binary/binary_reader.dart b/pkg/analyzer/lib/src/binary/binary_reader.dart
index 941f461..704bb9b 100644
--- a/pkg/analyzer/lib/src/binary/binary_reader.dart
+++ b/pkg/analyzer/lib/src/binary/binary_reader.dart
@@ -135,6 +135,14 @@
}
}
+ List<Uri>? readOptionalUriList() {
+ if (readBool()) {
+ return readUriList();
+ } else {
+ return null;
+ }
+ }
+
String readStringReference() {
var index = readUint30();
return stringOfIndex(index);
@@ -237,6 +245,10 @@
return Uri.parse(uriStr);
}
+ List<Uri> readUriList() {
+ return readTypedList(readUri);
+ }
+
/// Temporary move to [offset] and run [operation].
void runAtOffset(int offset, void Function() operation) {
var oldOffset = this.offset;
diff --git a/pkg/analyzer/lib/src/binary/binary_writer.dart b/pkg/analyzer/lib/src/binary/binary_writer.dart
index a92c12d..9f8851f 100644
--- a/pkg/analyzer/lib/src/binary/binary_writer.dart
+++ b/pkg/analyzer/lib/src/binary/binary_writer.dart
@@ -189,6 +189,15 @@
}
}
+ void writeOptionalUriList(List<Uri>? value) {
+ if (value != null) {
+ writeBool(true);
+ writeUriList(value);
+ } else {
+ writeBool(false);
+ }
+ }
+
/// Write the [value] as UTF8 encoded byte array.
void writeStringUtf8(String value) {
var bytes = const Utf8Encoder().convert(value);
@@ -246,6 +255,10 @@
writeStringUtf8(uriStr);
}
+ void writeUriList(List<Uri> uriList) {
+ writeList(uriList, writeUri);
+ }
+
@pragma("vm:prefer-inline")
void _addByte(int byte) {
_buffer[_length++] = byte;
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index d2f0337..d3e25d4 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -106,7 +106,7 @@
// TODO(scheglov): Clean up the list of implicitly analyzed files.
class AnalysisDriver {
/// The version of data format, should be incremented on every format change.
- static const int DATA_VERSION = 555;
+ static const int DATA_VERSION = 556;
/// The number of exception contexts allowed to write. Once this field is
/// zero, we stop writing any new exception contexts in this process.
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 23c735e..b002bc7 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -6092,8 +6092,10 @@
}
@override
+ @trackedDirectly
List<LibraryElementImpl> get exportedLibraries {
- return fragments
+ globalResultRequirements?.record_library_exportedLibraries(element: this);
+ return _fragments
.expand((fragment) => fragment.libraryExports)
.map((export) => export.exportedLibrary)
.nonNulls
diff --git a/pkg/analyzer/lib/src/fine/library_manifest.dart b/pkg/analyzer/lib/src/fine/library_manifest.dart
index b22480d..81bb84a 100644
--- a/pkg/analyzer/lib/src/fine/library_manifest.dart
+++ b/pkg/analyzer/lib/src/fine/library_manifest.dart
@@ -27,6 +27,8 @@
final Uint8List featureSet;
final ManifestLibraryLanguageVersion languageVersion;
+ final List<Uri> exportedLibraryUris;
+
/// The names that are re-exported by this library.
/// This does not include names that are declared in this library.
final Map<LookupName, ManifestItemId> reExportMap;
@@ -52,6 +54,7 @@
required this.name,
required this.featureSet,
required this.languageVersion,
+ required this.exportedLibraryUris,
required this.reExportMap,
required this.reExportDeprecatedOnly,
required this.declaredClasses,
@@ -72,6 +75,7 @@
name: reader.readOptionalStringUtf8(),
featureSet: reader.readUint8List(),
languageVersion: ManifestLibraryLanguageVersion.read(reader),
+ exportedLibraryUris: reader.readUriList(),
reExportMap: reader.readLookupNameToIdMap(),
reExportDeprecatedOnly: reader.readLookupNameSet(),
declaredClasses: reader.readLookupNameMap(
@@ -152,6 +156,7 @@
sink.writeOptionalStringUtf8(name);
sink.writeUint8List(featureSet);
languageVersion.write(sink);
+ sink.writeUriList(exportedLibraryUris);
reExportMap.write(sink);
reExportDeprecatedOnly.write(sink);
declaredClasses.write(sink);
@@ -865,6 +870,9 @@
languageVersion: ManifestLibraryLanguageVersion.encode(
libraryElement.languageVersion,
),
+ exportedLibraryUris: libraryElement.exportedLibraries
+ .map((e) => e.uri)
+ .toList(),
reExportMap: {},
reExportDeprecatedOnly: <LookupName>{},
declaredClasses: newClassItems,
@@ -1085,6 +1093,7 @@
name: null,
featureSet: Uint8List(0),
languageVersion: ManifestLibraryLanguageVersion.empty(),
+ exportedLibraryUris: [],
reExportMap: {},
reExportDeprecatedOnly: <LookupName>{},
declaredClasses: {},
diff --git a/pkg/analyzer/lib/src/fine/requirement_failure.dart b/pkg/analyzer/lib/src/fine/requirement_failure.dart
index 4c4f689..df74b03 100644
--- a/pkg/analyzer/lib/src/fine/requirement_failure.dart
+++ b/pkg/analyzer/lib/src/fine/requirement_failure.dart
@@ -298,6 +298,24 @@
}
}
+class LibraryExportedUrisMismatch extends RequirementFailure {
+ final Uri libraryUri;
+ final List<Uri> expected;
+ final List<Uri> actual;
+
+ LibraryExportedUrisMismatch({
+ required this.libraryUri,
+ required this.expected,
+ required this.actual,
+ });
+
+ @override
+ String toString() {
+ return 'LibraryExportedUrisMismatch(libraryUri: $libraryUri, '
+ 'expected: $expected, actual: $actual)';
+ }
+}
+
class LibraryFeatureSetMismatch extends RequirementFailure {
final Uri libraryUri;
final Uint8List? expected;
@@ -326,6 +344,12 @@
required this.expected,
required this.actual,
});
+
+ @override
+ String toString() {
+ return 'LibraryLanguageVersionMismatch(libraryUri: $libraryUri, '
+ 'expected: $expected, actual: $actual)';
+ }
}
class LibraryMissing extends RequirementFailure {
diff --git a/pkg/analyzer/lib/src/fine/requirements.dart b/pkg/analyzer/lib/src/fine/requirements.dart
index 39f0ce0..0cf5de4 100644
--- a/pkg/analyzer/lib/src/fine/requirements.dart
+++ b/pkg/analyzer/lib/src/fine/requirements.dart
@@ -375,6 +375,8 @@
Uint8List? featureSet;
ManifestLibraryLanguageVersion? languageVersion;
+ List<Uri>? exportedLibraryUris;
+
/// TopName => ID
final Map<LookupName, ManifestItemId?> exportedTopLevels;
@@ -416,6 +418,7 @@
required this.name,
required this.featureSet,
required this.languageVersion,
+ required this.exportedLibraryUris,
required this.exportedTopLevels,
required this.instances,
required this.interfaces,
@@ -448,6 +451,7 @@
name: null,
featureSet: null,
languageVersion: null,
+ exportedLibraryUris: null,
exportedTopLevels: {},
instances: {},
interfaces: {},
@@ -481,6 +485,7 @@
name: reader.readOptionalStringUtf8(),
featureSet: reader.readOptionalUint8List(),
languageVersion: ManifestLibraryLanguageVersion.readOptional(reader),
+ exportedLibraryUris: reader.readOptionalUriList(),
exportedTopLevels: reader.readNameToOptionalIdMap(),
instances: reader.readMap(
readKey: () => LookupName.read(reader),
@@ -522,6 +527,7 @@
sink.writeOptionalStringUtf8(name);
sink.writeOptionalUint8List(featureSet);
sink.writeOptionalObject(languageVersion, (it) => it.write(sink));
+ sink.writeOptionalUriList(exportedLibraryUris);
sink.writeNameToIdMap(exportedTopLevels);
sink.writeMap(
@@ -1314,6 +1320,17 @@
);
}
}
+
+ if (libraryRequirements.exportedLibraryUris case var expected?) {
+ var actual = libraryManifest.exportedLibraryUris;
+ if (!const ListEquality<Uri>().equals(expected, actual)) {
+ return LibraryExportedUrisMismatch(
+ libraryUri: libraryUri,
+ expected: expected,
+ actual: actual,
+ );
+ }
+ }
}
for (var exportRequirement in exportRequirements) {
@@ -1823,6 +1840,20 @@
requirements.exportedTopLevels[mainName] = id;
}
+ void record_library_exportedLibraries({required LibraryElementImpl element}) {
+ if (_recordingLockLevel != 0) {
+ return;
+ }
+
+ var manifest = element.manifest;
+ if (manifest == null) {
+ return;
+ }
+
+ var requirements = _getLibraryRequirements(element);
+ requirements.exportedLibraryUris = manifest.exportedLibraryUris;
+ }
+
void record_library_featureSet({required LibraryElementImpl element}) {
if (_recordingLockLevel != 0) {
return;
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 5abcecf..fb9af1f 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -19315,6 +19315,7 @@
package:test/test.dart
reExportMap
A: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -19394,6 +19395,7 @@
interface: #M7
reExportMap
A: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -19496,6 +19498,7 @@
interface: #M5
reExportMap
A: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -19553,6 +19556,7 @@
reExportMap
A: #M0
C: #M6
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -19621,6 +19625,7 @@
A1: #M0
A2: #M2
A3: #M4
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/b.dart
@@ -19637,6 +19642,7 @@
A2: #M2
A3: #M4
B: #M6
+ exportedLibraryUris: package:test/b.dart
requirements
exportRequirements
package:test/test.dart
@@ -19693,6 +19699,7 @@
reExportMap
A2: #M8
A3: #M4
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/b.dart
@@ -19715,6 +19722,7 @@
A2: #M8
A3: #M4
B: #M6
+ exportedLibraryUris: package:test/b.dart
requirements
exportRequirements
package:test/test.dart
@@ -19777,12 +19785,14 @@
A1: #M0
A2: #M2
A3: #M4
+ exportedLibraryUris: package:test/a.dart
package:test/test.dart
reExportMap
A1: #M0
A2: #M2
A3: #M4
B: #M6
+ exportedLibraryUris: package:test/b.dart
requirements
[status] idle
[future] getLibraryByUri T1
@@ -19812,11 +19822,13 @@
reExportMap
A2: #M8
A3: #M4
+ exportedLibraryUris: package:test/a.dart
package:test/test.dart
reExportMap
A2: #M8
A3: #M4
B: #M6
+ exportedLibraryUris: package:test/b.dart
requirements
[status] idle
[future] getLibraryByUri T2
@@ -19858,6 +19870,7 @@
interface: #M3
reExportMap
A: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/b.dart
@@ -19872,6 +19885,7 @@
reExportMap
A: #M0
B: #M2
+ exportedLibraryUris: package:test/b.dart
requirements
exportRequirements
package:test/test.dart
@@ -19981,6 +19995,7 @@
package:test/test.dart
reExportMap
E: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20083,6 +20098,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20165,6 +20181,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20270,6 +20287,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20375,6 +20393,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20456,6 +20475,7 @@
reExportMap
E1: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20502,6 +20522,7 @@
E1: #M0
E2: #M1
exportedExtensions: #M0 #M1
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20555,6 +20576,7 @@
E1: #M0
E2: #M1
exportedExtensions: #M0 #M1
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20599,6 +20621,7 @@
reExportMap
E1: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20652,6 +20675,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20747,6 +20771,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20844,6 +20869,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -20935,6 +20961,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21052,6 +21079,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21169,6 +21197,7 @@
reExportMap
E: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21268,6 +21297,7 @@
package:test/test.dart
reExportMap
E: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21356,6 +21386,7 @@
package:test/test.dart
reExportMap
M: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21427,6 +21458,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21495,6 +21527,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21540,6 +21573,7 @@
reExportMap
a: #M0
b: #M2
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21586,6 +21620,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21659,6 +21694,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21706,6 +21742,7 @@
reExportMap
a: #M0
b: #M2
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21754,6 +21791,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21827,6 +21865,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21874,6 +21913,7 @@
reExportMap
a: #M0
b: #M2
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21922,6 +21962,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -21970,6 +22011,7 @@
reExportMap
a: #M0
b: #M2
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -22019,6 +22061,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -22094,6 +22137,7 @@
reExportMap
a: #M0
b: #M1
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -22137,6 +22181,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -22183,6 +22228,7 @@
package:test/test.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -22257,6 +22303,7 @@
reExportMap
a: #M0
b: #M1
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -22305,6 +22352,7 @@
reExportMap
a: #M0
c: #M4
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -22357,6 +22405,7 @@
package:test/b.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/b.dart
@@ -22417,6 +22466,7 @@
package:test/b.dart
reExportMap
a: #M4
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/b.dart
@@ -22484,6 +22534,7 @@
package:test/test.dart
reExportMap
A: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/test.dart
@@ -27992,6 +28043,7 @@
package:test/a.dart
reExportMap
A: #M0
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28038,6 +28090,7 @@
reExportMap
A: #M0
reExportDeprecatedOnly: A
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28115,6 +28168,7 @@
reExportMap
A: #M0
reExportDeprecatedOnly: A
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28163,6 +28217,7 @@
package:test/a.dart
reExportMap
A: #M0
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28245,6 +28300,7 @@
package:test/a.dart
reExportMap
foo=: #M0
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28291,6 +28347,7 @@
reExportMap
foo=: #M0
reExportDeprecatedOnly: foo=
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28375,6 +28432,7 @@
reExportMap
foo=: #M0
reExportDeprecatedOnly: foo=
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28423,6 +28481,7 @@
package:test/a.dart
reExportMap
foo=: #M0
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -28498,6 +28557,7 @@
package:test/a.dart
reExportMap
A: #M0
+ exportedLibraryUris: package:test/x.dart
requirements
exportRequirements
package:test/a.dart
@@ -29553,6 +29613,102 @@
);
}
+ test_dependency_libraryElement_exportedLibraries() async {
+ configuration
+ ..withGetErrorsEvents = false
+ ..withStreamResolvedUnitResults = false;
+
+ _ManualRequirements.install((state) {
+ var library = state.singleUnit.importedLibraries.first;
+ library.exportedLibraries;
+ });
+
+ await _runChangeScenarioTA(
+ initialA: r'''
+export 'dart:math' show min;
+''',
+ testCode: r'''
+import 'a.dart';
+''',
+ operation: _FineOperationTestFileGetErrors(),
+ expectedInitialEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[operation] linkLibraryCycle
+ package:test/a.dart
+ reExportMap
+ min: #M0
+ exportedLibraryUris: dart:math
+ requirements
+ exportRequirements
+ package:test/a.dart
+ exports
+ dart:math
+ combinators
+ show min
+ min: #M0
+[operation] linkLibraryCycle
+ package:test/test.dart
+ requirements
+[operation] analyzeFile
+ file: /home/test/lib/test.dart
+ library: /home/test/lib/test.dart
+[operation] analyzedLibrary
+ file: /home/test/lib/test.dart
+ requirements
+ libraries
+ package:test/a.dart
+ exportedLibraryUris: dart:math
+[status] idle
+''',
+ updatedA: r'''
+export 'dart:io' show exit;
+export 'dart:math' show min;
+''',
+ expectedUpdatedEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[operation] linkLibraryCycle SDK
+[operation] linkLibraryCycle
+ package:test/a.dart
+ reExportMap
+ exit: #M1
+ min: #M0
+ exportedLibraryUris: dart:io dart:math
+ requirements
+ exportRequirements
+ package:test/a.dart
+ exports
+ dart:io
+ combinators
+ show exit
+ exit: #M1
+ dart:math
+ combinators
+ show min
+ min: #M0
+[operation] reuseLinkedBundle
+ package:test/test.dart
+[operation] checkLibraryDiagnosticsRequirements
+ library: /home/test/lib/test.dart
+ libraryExportedUrisMismatch
+ libraryUri: package:test/a.dart
+ expected: dart:math
+ actual: dart:io dart:math
+[operation] analyzeFile
+ file: /home/test/lib/test.dart
+ library: /home/test/lib/test.dart
+[operation] analyzedLibrary
+ file: /home/test/lib/test.dart
+ requirements
+ libraries
+ package:test/a.dart
+ exportedLibraryUris: dart:io dart:math
+[status] idle
+''',
+ );
+ }
+
test_dependency_libraryElement_featureSet() async {
configuration
..withGetErrorsEvents = false
@@ -35449,6 +35605,7 @@
package:test/b.dart
reExportMap
a: #M0
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/b.dart
@@ -35505,6 +35662,7 @@
package:test/b.dart
reExportMap
a: #M4
+ exportedLibraryUris: package:test/a.dart
requirements
exportRequirements
package:test/b.dart
@@ -66398,6 +66556,7 @@
reExportMap
A: #M0
exportedExtensions: #M0 #M3
+ exportedLibraryUris: package:test/a.dart
''',
updatedCodeFile: a,
updatedCode: r'''
@@ -66452,6 +66611,7 @@
reExportMap
A: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
''',
updatedCodeFile: a,
updatedCode: r'''
@@ -66510,6 +66670,7 @@
reExportMap
A: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
''',
updatedCodeFile: a,
updatedCode: r'''
@@ -66573,6 +66734,7 @@
reExportMap
A: #M0
exportedExtensions: #M0
+ exportedLibraryUris: package:test/a.dart
[operation] linkLibraryCycle
package:test/test.dart
declaredExtensions
@@ -66583,6 +66745,7 @@
reExportMap
A: #M0
exportedExtensions: #M0 #M3
+ exportedLibraryUris: package:test/b.dart
''',
updatedCodeFile: a,
updatedCode: r'''
@@ -66646,6 +66809,7 @@
reExportMap
B: #M2
exportedExtensions: #M2 #M4
+ exportedLibraryUris: package:test/a.dart
''',
updatedCodeFile: a,
updatedCode: r'''
diff --git a/pkg/analyzer/test/src/dart/analysis/result_printer.dart b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
index 26028a0..3fab92e 100644
--- a/pkg/analyzer/test/src/dart/analysis/result_printer.dart
+++ b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
@@ -73,6 +73,7 @@
_writeInstanceItems(libraryRequirements);
_writeInterfaceItems(libraryRequirements);
_writeExportedExtensions(libraryRequirements);
+ _writeExportedLibraryUris(libraryRequirements);
});
});
@@ -98,6 +99,15 @@
_writelnIdList('exportedExtensions', requirements.exportedExtensions);
}
+ void _writeExportedLibraryUris(LibraryRequirements requirements) {
+ if (requirements.exportedLibraryUris case var uriList?) {
+ if (uriList.isNotEmpty) {
+ var uriListStr = uriList.join(' ');
+ sink.writelnWithIndent('exportedLibraryUris: $uriListStr');
+ }
+ }
+ }
+
void _writeExportedTopLevels(LibraryRequirements requirements) {
var entries = requirements.exportedTopLevels.sorted;
sink.writeElements('exportedTopLevels', entries, (entry) {
@@ -679,6 +689,13 @@
'expectedIds': failure.expectedIds.asString(idProvider),
'actualIds': failure.actualIds.asString(idProvider),
});
+ case LibraryExportedUrisMismatch():
+ sink.writelnWithIndent('libraryExportedUrisMismatch');
+ sink.writeProperties({
+ 'libraryUri': failure.libraryUri,
+ 'expected': failure.expected.join(' '),
+ 'actual': failure.actual.join(' '),
+ });
case InstanceFieldIdMismatch():
sink.writelnWithIndent('instanceFieldIdMismatch');
sink.writeProperties({
@@ -1217,6 +1234,11 @@
var idListStr = exportedExtensionIds.asString(idProvider);
sink.writelnWithIndent('exportedExtensions: $idListStr');
}
+
+ if (manifest.exportedLibraryUris.isNotEmpty) {
+ var uriListStr = manifest.exportedLibraryUris.join(' ');
+ sink.writelnWithIndent('exportedLibraryUris: $uriListStr');
+ }
}
Map<String, bool> _executableItemFlags(ExecutableItem item) {