Parts. Move changes to prepare for removing deprecated 'enclosingElement'.
Change-Id: I79804b8907627e54d993a905c62ffc36e6d348b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/384963
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/lib/src/protocol_server.dart b/pkg/analysis_server/lib/src/protocol_server.dart
index e575e3fe..4f7423e 100644
--- a/pkg/analysis_server/lib/src/protocol_server.dart
+++ b/pkg/analysis_server/lib/src/protocol_server.dart
@@ -291,7 +291,7 @@
var path = <Element>[];
if (element is engine.PrefixElement) {
- element = element.enclosingElement.definingCompilationUnit;
+ element = element.enclosingElement3;
}
for (var e in element.withAncestors) {
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 40bc01b..292da89 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -2316,6 +2316,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class PrefixElement implements _ExistingElement {
/// The library, or library augmentation that encloses this element.
+ @Deprecated('Use enclosingElement3 instead')
@override
LibraryOrAugmentationElement get enclosingElement;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index f0ccc82..32233ed 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -1060,7 +1060,7 @@
}
@override
- AnalysisSession get session => enclosingElement.session;
+ AnalysisSession get session => library.session;
@override
List<SetterFragment> get setters => accessors
@@ -1455,7 +1455,7 @@
@override
Element2? get enclosingElement2 =>
- (firstFragment._enclosingElement as InstanceFragment).element;
+ (firstFragment._enclosingElement3 as InstanceFragment).element;
@override
bool get isConst => firstFragment.isConst;
@@ -2266,7 +2266,7 @@
@override
AnalysisContext get context {
- return _enclosingElement!.context;
+ return library!.context;
}
@override
@@ -2294,7 +2294,7 @@
@override
Element2? get enclosingElement2 {
- var candidate = _enclosingElement;
+ var candidate = _enclosingElement3;
if (candidate is CompilationUnitElementImpl ||
candidate is AugmentableElement) {
throw UnsupportedError('Cannot get an enclosingElement2 for a fragment');
@@ -2313,7 +2313,7 @@
/// Return the enclosing unit element (which might be the same as `this`), or
/// `null` if this element is not contained in any compilation unit.
CompilationUnitElementImpl get enclosingUnit {
- return _enclosingElement!.enclosingUnit;
+ return _enclosingElement3!.enclosingUnit;
}
@override
@@ -2922,6 +2922,13 @@
@override
E? thisOrAncestorOfType2<E extends Element2>() {
+ if (E == LibraryElement2 || E == LibraryElementImpl) {
+ if (enclosingElement3 case LibraryElementImpl library) {
+ return library as E;
+ }
+ return thisOrAncestorOfType<CompilationUnitElementImpl>()?.library as E?;
+ }
+
Element2 element = this;
while (element is! E) {
var ancestor = element.enclosingElement2;
@@ -3798,7 +3805,7 @@
@override
Element2? get enclosingElement2 =>
- (firstFragment._enclosingElement as InstanceFragment).element;
+ (firstFragment._enclosingElement3 as InstanceFragment).element;
@override
GetterElement? get getter => firstFragment.getter?.element as GetterElement?;
@@ -3926,7 +3933,7 @@
@override
Element2? get enclosingElement2 =>
- (firstFragment._enclosingElement as Fragment).element;
+ (firstFragment._enclosingElement3 as Fragment).element;
@override
// TODO(augmentations): Implement the merge of formal parameters.
@@ -7264,7 +7271,7 @@
@override
Element2? get enclosingElement2 =>
- (firstFragment._enclosingElement as InstanceFragment).element;
+ (firstFragment._enclosingElement3 as InstanceFragment).element;
@override
bool get isOperator => firstFragment.isOperator;
@@ -9084,7 +9091,7 @@
TopLevelFunctionElement get baseElement => this;
@override
- Element2? get enclosingElement2 => firstFragment._enclosingElement?.library2;
+ Element2? get enclosingElement2 => firstFragment._enclosingElement3?.library2;
@override
bool get isDartCoreIdentical => firstFragment.isDartCoreIdentical;
@@ -9744,7 +9751,7 @@
@override
Element2? get enclosingElement2 =>
- (firstFragment._enclosingElement as Fragment).element;
+ (firstFragment._enclosingElement3 as Fragment).element;
@override
ElementKind get kind => ElementKind.TYPE_PARAMETER;
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index a73a9b6..5ae5c94 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -125,6 +125,7 @@
constructor.isConst = isConst;
constructor.parameters = _requiredParameters(argumentTypes);
constructor.enclosingElement = definingClass;
+ constructor.enclosingElement3 = definingClass;
if (!constructor.isSynthetic) {
constructor.constantInitializers = <ConstructorInitializer>[];
}
@@ -228,6 +229,7 @@
List<ParameterElement> parameters) {
MethodElementImpl method = MethodElementImpl(methodName, 0);
method.enclosingElement = enclosingElement;
+ method.enclosingElement3 = enclosingElement;
method.parameters = parameters;
method.returnType = returnType;
return method;
diff --git a/pkg/analyzer/lib/src/summary2/bundle_reader.dart b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
index 420deb8..f92c38b 100644
--- a/pkg/analyzer/lib/src/summary2/bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/bundle_reader.dart
@@ -1296,7 +1296,7 @@
for (var import in containerUnit.libraryImports_unresolved) {
var prefixElement = import.prefix?.element;
if (prefixElement is PrefixElementImpl) {
- prefixElement.enclosingElement = containerLibrary;
+ prefixElement.enclosingElement = containerUnit;
prefixElement.enclosingElement3 = containerUnit;
}
}
@@ -1564,6 +1564,7 @@
} else {
property = TopLevelVariableElementImpl(name, -1)
..enclosingElement = enclosingElement
+ ..enclosingElement3 = enclosingElement
..reference = reference
..isSynthetic = true;
reference.element ??= property;
@@ -1575,6 +1576,7 @@
} else {
property = FieldElementImpl(name, -1)
..enclosingElement = enclosingElement
+ ..enclosingElement3 = enclosingElement
..reference = reference
..isStatic = accessor.isStatic
..isSynthetic = true;
diff --git a/pkg/analyzer/lib/src/summary2/informative_data.dart b/pkg/analyzer/lib/src/summary2/informative_data.dart
index 6843c2d..91a07da 100644
--- a/pkg/analyzer/lib/src/summary2/informative_data.dart
+++ b/pkg/analyzer/lib/src/summary2/informative_data.dart
@@ -92,11 +92,9 @@
var unitReader = SummaryDataReader(unitInfoBytes);
var unitInfo = _InfoUnit(_infoDeclarationStore, unitReader);
- var enclosing = unitElement.enclosingElement;
- if (enclosing is LibraryElementImpl) {
- if (identical(enclosing.definingCompilationUnit, unitElement)) {
- _applyToLibrary(enclosing, unitInfo);
- }
+ var libraryElement = unitElement.library;
+ if (identical(libraryElement.definingCompilationUnit, unitElement)) {
+ _applyToLibrary(libraryElement, unitInfo);
}
unitElement.setCodeRange(unitInfo.codeOffset, unitInfo.codeLength);
diff --git a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
index e7dde2f..502ca30 100644
--- a/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
+++ b/pkg/analyzer/lib/src/summary2/metadata_resolver.dart
@@ -22,7 +22,7 @@
this._linker,
this._unitElement,
this._libraryBuilder,
- ) : _containerScope = _unitElement.enclosingElement.scope {
+ ) : _containerScope = _unitElement.scope {
_scope = _containerScope;
}
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index acfb791..184fc4f 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -43,7 +43,7 @@
unit.extensionTypes.forEach(_resolveInterfaceFields);
unit.mixins.forEach(_resolveInterfaceFields);
- _scope = unit.enclosingElement.scope;
+ _scope = unit.scope;
unit.topLevelVariables.forEach(_resolveVariable);
}
}
@@ -140,7 +140,7 @@
unit.extensionTypes.forEach(_addClassElementFields);
unit.mixins.forEach(_addClassElementFields);
- _scope = unit.enclosingElement.scope;
+ _scope = unit.scope;
unit.topLevelVariables.forEach(_addVariableNode);
}
}
diff --git a/pkg/analyzer/test/generated/elements_types_mixin.dart b/pkg/analyzer/test/generated/elements_types_mixin.dart
index d03cba2..a704a7a 100644
--- a/pkg/analyzer/test/generated/elements_types_mixin.dart
+++ b/pkg/analyzer/test/generated/elements_types_mixin.dart
@@ -136,7 +136,6 @@
element.isAbstract = isAbstract;
element.isAugmentation = isAugmentation;
element.isSealed = isSealed;
- element.enclosingElement = testLibrary.definingCompilationUnit;
element.enclosingElement3 = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.supertype = superType ?? typeProvider.objectType;
@@ -169,7 +168,6 @@
required List<ConstFieldElementImpl> constants,
}) {
var element = EnumElementImpl(name, 0);
- element.enclosingElement = testLibrary.definingCompilationUnit;
element.enclosingElement3 = testLibrary.definingCompilationUnit;
element.fields = constants;
return element;
@@ -191,7 +189,6 @@
var element = ExtensionElementImpl(name, 0);
element.augmented.extendedType = extendedType;
element.isAugmentation = isAugmentation;
- element.enclosingElement = testLibrary.definingCompilationUnit;
element.enclosingElement3 = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.methods = methods;
@@ -206,7 +203,6 @@
List<InterfaceType> interfaces = const [],
}) {
var element = ExtensionTypeElementImpl(name, -1);
- element.enclosingElement = testLibrary.definingCompilationUnit;
element.enclosingElement3 = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.interfaces = interfaces;
@@ -417,7 +413,6 @@
}) {
var element = MixinElementImpl(name, 0);
element.isAugmentation = isAugmentation;
- element.enclosingElement = testLibrary.definingCompilationUnit;
element.enclosingElement3 = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.superclassConstraints = constraints ?? [typeProvider.objectType];
@@ -571,7 +566,6 @@
required DartType aliasedType,
}) {
var element = TypeAliasElementImpl(name, 0);
- element.enclosingElement = testLibrary.definingCompilationUnit;
element.enclosingElement3 = testLibrary.definingCompilationUnit;
element.typeParameters = typeParameters;
element.aliasedType = aliasedType;
diff --git a/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart b/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart
index dafde51..7baeadd 100644
--- a/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart
+++ b/pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart
@@ -667,18 +667,10 @@
DartType implementsTypeArgument,
String expectedConstraint,
) {
- var library = library_(
- uriStr: 'package:test/test.dart',
- analysisContext: analysisContext,
- analysisSession: analysisContext.analysisSession,
- typeSystem: typeSystem,
- );
-
// class A<T> {}
var A = class_(name: 'A', typeParameters: [
typeParameter('T'),
]);
- A.enclosingElement = library.definingCompilationUnit;
// class B<T> extends A<T> {}
var B_T = typeParameter('T');
@@ -688,7 +680,6 @@
typeParameters: [B_T],
superType: interfaceTypeNone(A, typeArguments: [B_T_none]),
);
- B.enclosingElement = library.definingCompilationUnit;
// class Cx extends A<> implements B<> {}
var C = class_(
@@ -704,7 +695,6 @@
)
],
);
- C.enclosingElement = library.definingCompilationUnit;
_checkMatch(
[T],
diff --git a/pkg/analyzer/test/src/summary/macro_test.dart b/pkg/analyzer/test/src/summary/macro_test.dart
index 6fda2ee..2f573c9 100644
--- a/pkg/analyzer/test/src/summary/macro_test.dart
+++ b/pkg/analyzer/test/src/summary/macro_test.dart
@@ -4356,7 +4356,7 @@
topLevelVariables
const x
reference: <none>
- type: InvalidType
+ type: int
firstFragment: <testLibrary>::@fragment::package:test/test.macro.dart::@topLevelVariable::x
getter: <none>
getters
@@ -4401,7 +4401,7 @@
topLevelVariables
const x
reference: <none>
- type: InvalidType
+ type: int
firstFragment: <testLibrary>::@fragment::package:test/test.macro.dart::@topLevelVariable::x
getter: <none>
getters
@@ -4452,12 +4452,12 @@
topLevelVariables
const x
reference: <none>
- type: InvalidType
+ type: int
firstFragment: <testLibrary>::@fragment::package:test/test.macro.dart::@topLevelVariable::x
getter: <none>
const y
reference: <none>
- type: InvalidType
+ type: int
firstFragment: <testLibrary>::@fragment::package:test/test.macro.dart::@topLevelVariable::y
getter: <none>
getters
@@ -4504,7 +4504,7 @@
topLevelVariables
const x
reference: <none>
- type: InvalidType
+ type: Type
firstFragment: <testLibrary>::@fragment::package:test/test.macro.dart::@topLevelVariable::x
getter: <none>
getters
@@ -4965,7 +4965,7 @@
name: PrefixedIdentifier
prefix: SimpleIdentifier
token: prefix0 @78
- staticElement: <null>
+ staticElement: <testLibrary>::@fragment::package:test/test.macro.dart::@prefix::prefix0
staticType: null
period: . @85
identifier: SimpleIdentifier
@@ -4977,7 +4977,7 @@
arguments: ArgumentList
leftParenthesis: ( @87
rightParenthesis: ) @88
- element: package:test/a.dart::<fragment>::@class::A
+ element: package:test/a.dart::<fragment>::@class::A::@constructor::new
returnType: void
''');
}
@@ -5074,7 +5074,7 @@
name: PrefixedIdentifier
prefix: SimpleIdentifier
token: prefix0 @78
- staticElement: <null>
+ staticElement: <testLibrary>::@fragment::package:test/test.macro.dart::@prefix::prefix0
staticType: null
period: . @85
identifier: SimpleIdentifier
@@ -5086,7 +5086,7 @@
arguments: ArgumentList
leftParenthesis: ( @87
rightParenthesis: ) @88
- element: package:test/a.dart::<fragment>::@class::A
+ element: package:test/a.dart::<fragment>::@class::A::@constructor::new
firstFragment: <testLibrary>::@fragment::package:test/test.macro.dart::@accessor::foo
''');
}
@@ -5141,7 +5141,7 @@
name: PrefixedIdentifier
prefix: SimpleIdentifier
token: prefix0 @78
- staticElement: <null>
+ staticElement: <testLibrary>::@fragment::package:test/test.macro.dart::@prefix::prefix0
staticType: null
period: . @85
identifier: SimpleIdentifier
@@ -5153,7 +5153,7 @@
arguments: ArgumentList
leftParenthesis: ( @87
rightParenthesis: ) @88
- element: package:test/a.dart::<fragment>::@class::A
+ element: package:test/a.dart::<fragment>::@class::A::@constructor::new
parameters
requiredPositional _
reference: <none>
@@ -5212,16 +5212,16 @@
name: PrefixedIdentifier
prefix: SimpleIdentifier
token: prefix0 @86
- staticElement: <null>
+ staticElement: <testLibrary>::@fragment::package:test/test.macro.dart::@prefix::prefix0
staticType: null
period: . @93
identifier: SimpleIdentifier
token: a @94
- staticElement: <null>
+ staticElement: package:test/a.dart::<fragment>::@getter::a
staticType: null
- staticElement: <null>
+ staticElement: package:test/a.dart::<fragment>::@getter::a
staticType: null
- element: <null>
+ element: package:test/a.dart::<fragment>::@getter::a
firstFragment: <testLibrary>::@fragment::package:test/test.macro.dart::@accessor::foo
''');
}