@@ -13,6 +13,7 @@ import 'package:analyzer/src/fine/lookup_name.dart';
1313import 'package:analyzer/src/fine/manifest_context.dart' ;
1414import 'package:analyzer/src/fine/manifest_id.dart' ;
1515import 'package:analyzer/src/fine/manifest_item.dart' ;
16+ import 'package:analyzer/src/summary2/export.dart' ;
1617import 'package:analyzer/src/summary2/linked_element_factory.dart' ;
1718import 'package:analyzer/src/util/performance/operation_performance.dart' ;
1819import 'package:analyzer/src/utilities/extensions/collection.dart' ;
@@ -24,6 +25,9 @@ class LibraryManifest {
2425 /// This does not include names that are declared in this library.
2526 final Map <LookupName , ManifestItemId > reExportMap;
2627
28+ /// The names that re-exported exclusively via deprecated exports.
29+ final Set <LookupName > reExportDeprecatedOnly;
30+
2731 final Map <LookupName , ClassItem > declaredClasses;
2832 final Map <LookupName , EnumItem > declaredEnums;
2933 final Map <LookupName , ExtensionItem > declaredExtensions;
@@ -40,6 +44,7 @@ class LibraryManifest {
4044
4145 LibraryManifest ({
4246 required this .reExportMap,
47+ required this .reExportDeprecatedOnly,
4348 required this .declaredClasses,
4449 required this .declaredEnums,
4550 required this .declaredExtensions,
@@ -56,6 +61,7 @@ class LibraryManifest {
5661 factory LibraryManifest .read (SummaryDataReader reader) {
5762 return LibraryManifest (
5863 reExportMap: reader.readLookupNameToIdMap (),
64+ reExportDeprecatedOnly: reader.readLookupNameSet (),
5965 declaredClasses: reader.readLookupNameMap (
6066 readValue: () => ClassItem .read (reader),
6167 ),
@@ -132,6 +138,7 @@ class LibraryManifest {
132138
133139 void write (BufferedSink sink) {
134140 reExportMap.write (sink);
141+ reExportDeprecatedOnly.write (sink);
135142 declaredClasses.write (sink);
136143 declaredEnums.write (sink);
137144 declaredExtensions.write (sink);
@@ -600,18 +607,22 @@ class LibraryManifestBuilder {
600607 var libraryUri = libraryElement.uri;
601608 var manifest = newManifests[libraryUri]! ;
602609
603- for (var entry in libraryElement.exportNamespace.definedNames2.entries) {
604- var name = entry.key.asLookupName;
605- var element = entry.value;
606-
607- // Skip elements that exist in nowhere.
608- var elementLibrary = element.library as LibraryElementImpl ? ;
609- if (elementLibrary == null ) {
610+ for (var exported in libraryElement.exportedReferences) {
611+ // We want only re-exports, skip declared.
612+ if (exported is ! ExportedReferenceExported ) {
610613 continue ;
611614 }
612615
613- // Skip if the element is declared in this library.
614- if (identical (elementLibrary, libraryElement)) {
616+ var reference = exported.reference;
617+ var lookupName = reference.isSetter
618+ ? '${reference .name }=' .asLookupName
619+ : reference.name.asLookupName;
620+
621+ var element = elementFactory.elementOfReference3 (reference);
622+
623+ // Skip elements that exist in nowhere.
624+ var elementLibrary = element.library;
625+ if (elementLibrary == null ) {
615626 continue ;
616627 }
617628
@@ -621,8 +632,12 @@ class LibraryManifestBuilder {
621632
622633 // We use the manifest of the library that declares this element.
623634 // So, the element must be declared in the manifest.
624- var id = elementLibraryManifest.getDeclaredId (name)! ;
625- manifest.reExportMap[name] = id;
635+ var id = elementLibraryManifest.getDeclaredId (lookupName)! ;
636+ manifest.reExportMap[lookupName] = id;
637+
638+ if (libraryElement.isFromDeprecatedExport (exported)) {
639+ manifest.reExportDeprecatedOnly.add (lookupName);
640+ }
626641 }
627642 }
628643 }
@@ -831,6 +846,7 @@ class LibraryManifestBuilder {
831846
832847 var newManifest = LibraryManifest (
833848 reExportMap: {},
849+ reExportDeprecatedOnly: < LookupName > {},
834850 declaredClasses: newClassItems,
835851 declaredEnums: newEnumItems,
836852 declaredExtensions: newExtensionItems,
@@ -1047,6 +1063,7 @@ class LibraryManifestBuilder {
10471063 return inputManifests[uri] ??
10481064 LibraryManifest (
10491065 reExportMap: {},
1066+ reExportDeprecatedOnly: < LookupName > {},
10501067 declaredClasses: {},
10511068 declaredEnums: {},
10521069 declaredExtensions: {},
0 commit comments