Skip to content

Commit 6752d3f

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Replace LibraryElementImpl.definingCompilationUnit with firstFragment.
Change-Id: Ia6775b8fcea166e772036aafa96d96da0f8ab70b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449067 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]> Reviewed-by: Samuel Rawlins <[email protected]>
1 parent 8a71b3f commit 6752d3f

File tree

16 files changed

+54
-61
lines changed

16 files changed

+54
-61
lines changed

pkg/analysis_server_plugin/lib/src/plugin_server.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ class PluginServer {
361361

362362
RuleContextUnit? definingContextUnit;
363363
var definingUnit =
364-
(libraryResult.element as LibraryElementImpl).definingCompilationUnit;
364+
(libraryResult.element as LibraryElementImpl).firstFragment;
365365
var allUnits = <RuleContextUnit>[];
366366

367367
for (var unitResult in libraryResult.units) {

pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ class LibraryAnalyzer {
382382
}
383383

384384
void _computeLints() {
385-
var definingUnit = _libraryElement.definingCompilationUnit;
385+
var definingUnit = _libraryElement.firstFragment;
386386
var analysesToContextUnits = <FileAnalysis, RuleContextUnit>{};
387387
RuleContextUnit? definingContextUnit;
388388
WorkspacePackageImpl? workspacePackage;
@@ -671,7 +671,7 @@ class LibraryAnalyzer {
671671
_resolveDirectives(
672672
enclosingFile: null,
673673
fileKind: _library,
674-
fileElement: _libraryElement.definingCompilationUnit,
674+
fileElement: _libraryElement.firstFragment,
675675
);
676676

677677
for (var fileAnalysis in _libraryFiles.values) {

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5897,8 +5897,9 @@ class LibraryElementImpl extends ElementImpl
58975897
@override
58985898
AnalysisSessionImpl session;
58995899

5900-
/// The compilation unit that defines this library.
5901-
late LibraryFragmentImpl definingCompilationUnit;
5900+
/// The first (defining) fragment of this library.
5901+
@override
5902+
late LibraryFragmentImpl _firstFragment;
59025903

59035904
/// The language version for the library.
59045905
LibraryLanguageVersion? _languageVersion;
@@ -6106,11 +6107,15 @@ class LibraryElementImpl extends ElementImpl
61066107
}
61076108

61086109
@override
6109-
LibraryFragmentImpl get firstFragment => definingCompilationUnit;
6110+
LibraryFragmentImpl get firstFragment => _firstFragment;
6111+
6112+
set firstFragment(LibraryFragmentImpl value) {
6113+
_firstFragment = value;
6114+
}
61106115

61116116
@override
61126117
List<LibraryFragmentImpl> get fragments {
6113-
return [definingCompilationUnit, ..._partUnits];
6118+
return [_firstFragment, ..._partUnits];
61146119
}
61156120

61166121
bool get hasPartOfDirective {
@@ -6132,7 +6137,7 @@ class LibraryElementImpl extends ElementImpl
61326137

61336138
@override
61346139
bool get isInSdk {
6135-
var uri = definingCompilationUnit.source.uri;
6140+
var uri = _firstFragment.source.uri;
61366141
return DartUriResolver.isDartUri(uri);
61376142
}
61386143

@@ -6216,9 +6221,9 @@ class LibraryElementImpl extends ElementImpl
62166221
_publicNamespace = publicNamespace;
62176222
}
62186223

6219-
// TODO(scheglov): replace with `firstFragment.source`
6224+
// TODO(scheglov): prefer `firstFragment.source`
62206225
Source get source {
6221-
return definingCompilationUnit.source;
6226+
return _firstFragment.source;
62226227
}
62236228

62246229
Iterable<FragmentImpl> get topLevelElements sync* {
@@ -6240,15 +6245,12 @@ class LibraryElementImpl extends ElementImpl
62406245
/// This includes the defining compilation unit and units included using the
62416246
/// `part` directive.
62426247
List<LibraryFragmentImpl> get units {
6243-
return [definingCompilationUnit, ..._partUnits];
6248+
return [_firstFragment, ..._partUnits];
62446249
}
62456250

62466251
@override
62476252
Uri get uri => _firstFragment.source.uri;
62486253

6249-
@override
6250-
LibraryFragmentImpl get _firstFragment => definingCompilationUnit;
6251-
62526254
List<LibraryFragmentImpl> get _partUnits {
62536255
var result = <LibraryFragmentImpl>[];
62546256

@@ -6262,7 +6264,7 @@ class LibraryElementImpl extends ElementImpl
62626264
}
62636265
}
62646266

6265-
visitParts(definingCompilationUnit);
6267+
visitParts(_firstFragment);
62666268
return result;
62676269
}
62686270

@@ -6805,7 +6807,7 @@ class LibraryFragmentImpl extends FragmentImpl
68056807

68066808
@override
68076809
int get offset {
6808-
if (!identical(this, library.definingCompilationUnit)) {
6810+
if (!identical(this, library.firstFragment)) {
68096811
// Not the first fragment, so there is no name; return an offset of 0
68106812
return 0;
68116813
}
@@ -7134,7 +7136,7 @@ final class LoadLibraryFunctionProvider {
71347136
var fragment = TopLevelFunctionFragmentImpl(name: name);
71357137
fragment.isSynthetic = true;
71367138
fragment.isStatic = true;
7137-
fragment.enclosingFragment = library.definingCompilationUnit;
7139+
fragment.enclosingFragment = library.firstFragment;
71387140

71397141
return TopLevelFunctionElementImpl(elementReference, fragment)
71407142
..returnType = library.typeProvider.futureDynamicType;

pkg/analyzer/lib/src/generated/error_verifier.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6167,9 +6167,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
61676167
var importedLibrary = import.importedLibrary;
61686168
if (importedLibrary != null) {
61696169
if (import.namespace.get2(name) == element) {
6170-
indirectSources.add(
6171-
importedLibrary.definingCompilationUnit.source.uri.toString(),
6172-
);
6170+
indirectSources.add(importedLibrary.uri.toString());
61736171
}
61746172
}
61756173
}

pkg/analyzer/lib/src/summary2/bundle_reader.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class LibraryReader {
160160
);
161161

162162
// Read the library units.
163-
_libraryElement.definingCompilationUnit = _readUnitElement(
163+
_libraryElement.firstFragment = _readUnitElement(
164164
containerUnit: null,
165165
unitSource: librarySource,
166166
);
@@ -179,7 +179,7 @@ class LibraryReader {
179179

180180
var resolutionOffset = _baseResolutionOffset + _reader.readUInt30();
181181
_libraryElement.deferReadResolution(() {
182-
var unitElement = _libraryElement.definingCompilationUnit;
182+
var unitElement = _libraryElement.firstFragment;
183183
var reader = ResolutionReader(
184184
_elementFactory,
185185
_referenceReader,

pkg/analyzer/lib/src/summary2/bundle_writer.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class BundleWriter {
109109

110110
// Write the library units.
111111
// This will write also resolution data, e.g. for classes.
112-
_writeUnitElement(libraryElement.definingCompilationUnit);
112+
_writeUnitElement(libraryElement.firstFragment);
113113

114114
_writeClassElements(libraryElement.classes);
115115
_writeEnumElements(libraryElement.enums);

pkg/analyzer/lib/src/summary2/informative_data.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class InformativeDataApplier {
6262

6363
void _applyFromInfo(LibraryFragmentImpl unitElement, _InfoUnit unitInfo) {
6464
var libraryElement = unitElement.library;
65-
if (identical(libraryElement.definingCompilationUnit, unitElement)) {
65+
if (identical(libraryElement.firstFragment, unitElement)) {
6666
_applyToLibrary(libraryElement, unitInfo);
6767
}
6868

pkg/analyzer/lib/src/summary2/library_builder.dart

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,7 @@ class LibraryBuilder {
174174
/// Build elements for declarations in the library units, add top-level
175175
/// declarations to the local scope, for combining into export scopes.
176176
void buildElements() {
177-
_buildDirectives(
178-
kind: kind,
179-
containerUnit: element.definingCompilationUnit,
180-
);
177+
_buildDirectives(kind: kind, containerUnit: element.firstFragment);
181178

182179
for (var linkingUnit in units) {
183180
var elementBuilder = FragmentBuilder(
@@ -800,7 +797,7 @@ class LibraryBuilder {
800797
DefiningLinkingUnit(node: libraryUnitNode, element: unitElement),
801798
);
802799

803-
libraryElement.definingCompilationUnit = unitElement;
800+
libraryElement.firstFragment = unitElement;
804801
}
805802

806803
var builder = LibraryBuilder._(

pkg/analyzer/lib/src/test_utilities/test_library_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ class _LibraryBuilder {
163163
source: librarySource,
164164
lineInfo: LineInfo([0]),
165165
);
166-
libraryElement.definingCompilationUnit = libraryFragment;
166+
libraryElement.firstFragment = libraryFragment;
167167
_libraryElements[libraryUriStr] = libraryElement;
168168
_libraryFragments[libraryUriStr] = libraryFragment;
169169

pkg/analyzer/test/generated/elements_types_mixin.dart

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ mixin ElementsTypesMixin {
131131
fragment.isAbstract = isAbstract;
132132
fragment.isAugmentation = isAugmentation;
133133
fragment.isSealed = isSealed;
134-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
134+
fragment.enclosingFragment = testLibrary.firstFragment;
135135
fragment.typeParameters = typeParameters.map((e) => e.asElement).toList();
136136
fragment.methods = methods;
137137

@@ -158,7 +158,7 @@ mixin ElementsTypesMixin {
158158
fragment.isAbstract = isAbstract;
159159
fragment.isAugmentation = isAugmentation;
160160
fragment.isSealed = isSealed;
161-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
161+
fragment.enclosingFragment = testLibrary.firstFragment;
162162
fragment.typeParameters = typeParameters
163163
.map((e) => e.firstFragment)
164164
.toList();
@@ -195,7 +195,7 @@ mixin ElementsTypesMixin {
195195
}) {
196196
var fragment = EnumFragmentImpl(name: name);
197197
EnumElementImpl(Reference.root(), fragment);
198-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
198+
fragment.enclosingFragment = testLibrary.firstFragment;
199199
fragment.fields = constants;
200200
return fragment;
201201
}
@@ -206,7 +206,7 @@ mixin ElementsTypesMixin {
206206
}) {
207207
var fragment = EnumFragmentImpl(name: name);
208208
var element = EnumElementImpl(Reference.root(), fragment);
209-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
209+
fragment.enclosingFragment = testLibrary.firstFragment;
210210
fragment.fields = constants;
211211
return element;
212212
}
@@ -226,7 +226,7 @@ mixin ElementsTypesMixin {
226226
ExtensionElementImpl(Reference.root(), element);
227227
element.element.extendedType = extendedType;
228228
element.isAugmentation = isAugmentation;
229-
element.enclosingFragment = testLibrary.definingCompilationUnit;
229+
element.enclosingFragment = testLibrary.firstFragment;
230230
element.typeParameters = typeParameters;
231231
element.methods = methods;
232232
return element;
@@ -240,7 +240,7 @@ mixin ElementsTypesMixin {
240240
List<InterfaceTypeImpl> interfaces = const [],
241241
}) {
242242
var fragment = ExtensionTypeFragmentImpl(name: name);
243-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
243+
fragment.enclosingFragment = testLibrary.firstFragment;
244244
fragment.typeParameters = typeParameters.map((e) => e.asElement).toList();
245245

246246
var fieldFragment = FieldFragmentImpl(name: representationName);
@@ -266,7 +266,7 @@ mixin ElementsTypesMixin {
266266
List<InterfaceTypeImpl> interfaces = const [],
267267
}) {
268268
var fragment = ExtensionTypeFragmentImpl(name: name);
269-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
269+
fragment.enclosingFragment = testLibrary.firstFragment;
270270
fragment.typeParameters = typeParameters.map((e) => e.asElement).toList();
271271

272272
var fieldFragment = FieldFragmentImpl(name: representationName);
@@ -412,7 +412,7 @@ mixin ElementsTypesMixin {
412412
lineInfo: LineInfo([0]),
413413
);
414414

415-
library.definingCompilationUnit = definingUnit;
415+
library.firstFragment = definingUnit;
416416
library.typeProvider = typeSystem.typeProvider;
417417
library.typeSystem = typeSystem;
418418

@@ -476,7 +476,7 @@ mixin ElementsTypesMixin {
476476
}) {
477477
var fragment = MixinFragmentImpl(name: name);
478478
fragment.isAugmentation = isAugmentation;
479-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
479+
fragment.enclosingFragment = testLibrary.firstFragment;
480480
fragment.typeParameters = typeParameters.map((e) => e.asElement).toList();
481481
fragment.constructors = const <ConstructorFragmentImpl>[];
482482

@@ -496,7 +496,7 @@ mixin ElementsTypesMixin {
496496
}) {
497497
var fragment = MixinFragmentImpl(name: name);
498498
fragment.isAugmentation = isAugmentation;
499-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
499+
fragment.enclosingFragment = testLibrary.firstFragment;
500500
fragment.typeParameters = typeParameters.map((e) => e.asElement).toList();
501501
fragment.constructors = const <ConstructorFragmentImpl>[];
502502

@@ -640,7 +640,7 @@ mixin ElementsTypesMixin {
640640
required TypeImpl aliasedType,
641641
}) {
642642
var fragment = TypeAliasFragmentImpl(name: name, firstTokenOffset: null);
643-
fragment.enclosingFragment = testLibrary.definingCompilationUnit;
643+
fragment.enclosingFragment = testLibrary.firstFragment;
644644
fragment.typeParameters = typeParameters.map((e) => e.asElement).toList();
645645

646646
var element = TypeAliasElementImpl(Reference.root(), fragment);

0 commit comments

Comments
 (0)