@@ -5901,6 +5901,7 @@ class LibraryElementImpl extends ElementImpl
59015901 /// The language version for the library.
59025902 LibraryLanguageVersion ? _languageVersion;
59035903
5904+ @trackedInternal
59045905 bool hasTypeProviderSystemSet = false ;
59055906
59065907 @override
@@ -5965,8 +5966,14 @@ class LibraryElementImpl extends ElementImpl
59655966 LibraryDeclarations ? _libraryDeclarations;
59665967
59675968 /// With fine-grained dependencies, the manifest of the library.
5969+ @trackedInternal
59685970 LibraryManifest ? manifest;
59695971
5972+ @trackedInternal
5973+ late final LibraryElementImplInternal internal = LibraryElementImplInternal (
5974+ this ,
5975+ );
5976+
59705977 /// Initialize a newly created library element in the given [context] to have
59715978 /// the given [name] and [offset] .
59725979 LibraryElementImpl (
@@ -6066,6 +6073,7 @@ class LibraryElementImpl extends ElementImpl
60666073
60676074 @Deprecated ('Use exportedLibraries instead' )
60686075 @override
6076+ @trackedIndirectly
60696077 List <LibraryElementImpl > get exportedLibraries2 {
60706078 return exportedLibraries;
60716079 }
@@ -6136,15 +6144,21 @@ class LibraryElementImpl extends ElementImpl
61366144 }
61376145
61386146 @override
6139- LibraryFragmentImpl get firstFragment => _firstFragment;
6147+ @trackedDirectlyOpaque
6148+ LibraryFragmentImpl get firstFragment {
6149+ globalResultRequirements? .recordOpaqueApiUse (this , 'firstFragment' );
6150+ return _firstFragment;
6151+ }
61406152
61416153 set firstFragment (LibraryFragmentImpl value) {
61426154 _firstFragment = value;
61436155 }
61446156
61456157 @override
6158+ @trackedDirectlyOpaque
61466159 List <LibraryFragmentImpl > get fragments {
6147- return [_firstFragment, ..._partUnits];
6160+ globalResultRequirements? .recordOpaqueApiUse (this , 'fragments' );
6161+ return _fragments;
61486162 }
61496163
61506164 @override
@@ -6342,6 +6356,10 @@ class LibraryElementImpl extends ElementImpl
63426356 @trackedIncludedInId
63436357 Uri get uri => _firstFragment.source.uri;
63446358
6359+ List <LibraryFragmentImpl > get _fragments {
6360+ return [_firstFragment, ..._partUnits];
6361+ }
6362+
63456363 List <LibraryFragmentImpl > get _partUnits {
63466364 var result = < LibraryFragmentImpl > [];
63476365
@@ -6360,12 +6378,15 @@ class LibraryElementImpl extends ElementImpl
63606378 }
63616379
63626380 @override
6381+ @trackedDirectlyOpaque
63636382 T ? accept <T >(ElementVisitor2 <T > visitor) {
6383+ globalResultRequirements? .recordOpaqueApiUse (this , 'accept' );
63646384 return visitor.visitLibraryElement (this );
63656385 }
63666386
63676387 @Deprecated ('Use accept instead' )
63686388 @override
6389+ @trackedIndirectly
63696390 T ? accept2 <T >(ElementVisitor2 <T > visitor) => accept (visitor);
63706391
63716392 @trackedInternal
@@ -6447,6 +6468,7 @@ class LibraryElementImpl extends ElementImpl
64476468
64486469 @Deprecated ('Use getClass instead' )
64496470 @override
6471+ @trackedIndirectly
64506472 ClassElementImpl ? getClass2 (String name) {
64516473 return getClass (name);
64526474 }
@@ -6612,7 +6634,8 @@ class LibraryElementImpl extends ElementImpl
66126634 bool isFromDeprecatedExport (ExportedReference reference) {
66136635 if (reference is ExportedReferenceExported ) {
66146636 for (var location in reference.locations) {
6615- var export = location.exportOf (this );
6637+ var fragment = _fragments[location.fragmentIndex];
6638+ var export = fragment.libraryExports[location.exportIndex];
66166639 if (! export.metadata.hasDeprecated) {
66176640 return false ;
66186641 }
@@ -6675,6 +6698,19 @@ class LibraryElementImpl extends ElementImpl
66756698 }
66766699}
66776700
6701+ /// Exposes [LibraryElementImpl] properties that normally are not intended
6702+ /// to be used during resolution, and would cause opaque API requirement
6703+ /// recorded, but necessary during the element model building or loading.
6704+ class LibraryElementImplInternal {
6705+ final LibraryElementImpl _library;
6706+
6707+ LibraryElementImplInternal (this ._library);
6708+
6709+ LibraryFragmentImpl get firstFragment => _library._firstFragment;
6710+
6711+ List <LibraryFragmentImpl > get fragments => _library._fragments;
6712+ }
6713+
66786714class LibraryExportImpl extends ElementDirectiveImpl implements LibraryExport {
66796715 @override
66806716 final List <NamespaceCombinator > combinators;
0 commit comments