Skip to content

Commit 717e968

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate ResolverVisitor.enclosingClass
Change-Id: Ie5bea90ece546f220e4e48ff0b8037b93d09f8fe Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409560 Reviewed-by: Phil Quitslund <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 61eeb2d commit 717e968

File tree

8 files changed

+30
-40
lines changed

8 files changed

+30
-40
lines changed

pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -749,16 +749,16 @@ class MethodInvocationResolver with ScopeHelpers {
749749
List<WhyNotPromotedGetter> whyNotPromotedArguments,
750750
{required TypeImpl contextType}) {
751751
var enclosingClass = _resolver.enclosingClass;
752-
if (SuperContext.of(receiver) != SuperContext.valid) {
752+
if (enclosingClass == null ||
753+
SuperContext.of(receiver) != SuperContext.valid) {
753754
_setInvalidTypeResolution(node,
754755
whyNotPromotedArguments: whyNotPromotedArguments,
755756
contextType: contextType);
756757
return null;
757758
}
758759

759-
var augmented = enclosingClass!.augmented;
760760
var target = _inheritance.getMember2(
761-
augmented.firstFragment,
761+
enclosingClass.firstFragment,
762762
_currentName!,
763763
forSuper: true,
764764
);
@@ -778,7 +778,8 @@ class MethodInvocationResolver with ScopeHelpers {
778778
// Otherwise, this is an error.
779779
// But we would like to give the user at least some resolution.
780780
// So, we try to find the interface target.
781-
target = _inheritance.getInherited2(augmented.firstFragment, _currentName!);
781+
target =
782+
_inheritance.getInherited2(enclosingClass.firstFragment, _currentName!);
782783
if (target != null) {
783784
nameNode.staticElement = target;
784785
_setResolution(node, target.type, whyNotPromotedArguments,
@@ -799,7 +800,7 @@ class MethodInvocationResolver with ScopeHelpers {
799800
_resolver.errorReporter.atNode(
800801
nameNode,
801802
CompileTimeErrorCode.UNDEFINED_SUPER_METHOD,
802-
arguments: [name, augmented.firstFragment.displayName],
803+
arguments: [name, enclosingClass.firstFragment.displayName],
803804
);
804805
return null;
805806
}

pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ class SimpleIdentifierResolver with ScopeHelpers {
187187

188188
var element = hasRead ? result.readElement2 : result.writeElement2;
189189

190-
var enclosingClass = _resolver.enclosingClass2;
190+
var enclosingClass = _resolver.enclosingClass;
191191
if (_isFactoryConstructorReturnType(node) &&
192192
!identical(element, enclosingClass)) {
193193
errorReporter.atNode(

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ class ElementResolver {
299299

300300
void visitRedirectingConstructorInvocation(
301301
covariant RedirectingConstructorInvocationImpl node) {
302-
var enclosingClass = _resolver.enclosingClass2;
302+
var enclosingClass = _resolver.enclosingClass;
303303
if (enclosingClass is! InterfaceElementImpl2) {
304304
// TODO(brianwilkerson): Report this error.
305305
return;
@@ -337,7 +337,7 @@ class ElementResolver {
337337

338338
void visitSuperConstructorInvocation(
339339
covariant SuperConstructorInvocationImpl node) {
340-
var enclosingClass = _resolver.enclosingClass2;
340+
var enclosingClass = _resolver.enclosingClass;
341341
if (enclosingClass is! InterfaceElementImpl2) {
342342
// TODO(brianwilkerson): Report this error.
343343
return;

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

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
172172

173173
/// The class containing the AST nodes being visited,
174174
/// or `null` if we are not in the scope of a class.
175-
InterfaceElementImpl? enclosingClass;
175+
InterfaceElementImpl2? enclosingClass;
176176

177177
/// The element representing the extension containing the AST nodes being
178178
/// visited, or `null` if we are not in the scope of an extension.
@@ -430,12 +430,6 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
430430
/// current node is inside a function body.
431431
BodyInferenceContext? get bodyContext => _bodyContext;
432432

433-
/// The class containing the AST nodes being visited,
434-
/// or `null` if we are not in the scope of a class.
435-
InterfaceElementImpl2? get enclosingClass2 {
436-
return enclosingClass?.asElement2;
437-
}
438-
439433
/// Return the element representing the function containing the current node,
440434
/// or `null` if the current node is not contained in a function.
441435
///
@@ -1319,13 +1313,11 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
13191313

13201314
/// Set information about enclosing declarations.
13211315
void prepareEnclosingDeclarations({
1322-
InterfaceElement? enclosingClassElement,
1316+
InterfaceElementImpl2? enclosingClassElement,
13231317
ExecutableElement? enclosingExecutableElement,
13241318
AugmentableElement? enclosingAugmentation,
13251319
}) {
1326-
// TODO(paulberry): eliminate this cast by changing the type of the
1327-
// parameter `enclosingClassElement`.
1328-
enclosingClass = enclosingClassElement as InterfaceElementImpl?;
1320+
enclosingClass = enclosingClassElement;
13291321
_setupThisType();
13301322
_enclosingFunction = enclosingExecutableElement;
13311323
this.enclosingAugmentation = enclosingAugmentation;
@@ -1349,7 +1341,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
13491341
}
13501342

13511343
void forClassElement(InterfaceElementImpl parentElement) {
1352-
enclosingClass = parentElement;
1344+
enclosingClass = parentElement.asElement2;
13531345
}
13541346

13551347
if (parent is ClassDeclarationImpl) {
@@ -2229,7 +2221,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
22292221
//
22302222
var outerType = enclosingClass;
22312223
try {
2232-
enclosingClass = node.declaredElement;
2224+
enclosingClass = declaredElement;
22332225
checkUnreachableNode(node);
22342226
node.visitChildren(this);
22352227
elementResolver.visitClassDeclaration(node);
@@ -2387,14 +2379,12 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
23872379
void visitConstructorFieldInitializer(
23882380
covariant ConstructorFieldInitializerImpl node,
23892381
) {
2390-
var augmented = enclosingClass!.augmented;
2391-
23922382
//
23932383
// We visit the expression, but do not visit the field name because it needs
23942384
// to be visited in the context of the constructor field initializer node.
23952385
//
23962386
var fieldName = node.fieldName;
2397-
var fieldElement = augmented.getField(fieldName.name);
2387+
var fieldElement = enclosingClass!.getField(fieldName.name);
23982388
fieldName.staticElement = fieldElement;
23992389
var fieldType = fieldElement?.type ?? UnknownInferredType.instance;
24002390
var expression = node.expression;
@@ -2617,7 +2607,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
26172607
//
26182608
var outerType = enclosingClass;
26192609
try {
2620-
enclosingClass = node.declaredElement;
2610+
enclosingClass = node.declaredFragment!.element;
26212611
checkUnreachableNode(node);
26222612
node.visitChildren(this);
26232613
elementResolver.visitEnumDeclaration(node);
@@ -2735,7 +2725,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
27352725
) {
27362726
var outerType = enclosingClass;
27372727
try {
2738-
enclosingClass = node.declaredElement;
2728+
enclosingClass = node.declaredFragment!.element;
27392729
checkUnreachableNode(node);
27402730
node.visitChildren(this);
27412731
elementResolver.visitExtensionTypeDeclaration(node);
@@ -3296,7 +3286,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
32963286
//
32973287
var outerType = enclosingClass;
32983288
try {
3299-
enclosingClass = node.declaredElement!;
3289+
enclosingClass = node.declaredFragment!.element;
33003290
checkUnreachableNode(node);
33013291
node.visitChildren(this);
33023292
elementResolver.visitMixinDeclaration(node);
@@ -4242,8 +4232,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
42424232
void _setupThisType() {
42434233
var enclosingClass = this.enclosingClass;
42444234
if (enclosingClass != null) {
4245-
var augmented = enclosingClass.augmented;
4246-
_thisType = augmented.firstFragment.thisType;
4235+
_thisType = enclosingClass.thisType;
42474236
} else {
42484237
var enclosingExtension = this.enclosingExtension;
42494238
if (enclosingExtension != null) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class AstResolver {
2929
final AnalysisErrorListener _errorListener =
3030
AnalysisErrorListener.NULL_LISTENER;
3131
final AnalysisOptions analysisOptions;
32-
final InterfaceElement? enclosingClassElement;
32+
final InterfaceElementImpl2? enclosingClassElement;
3333
final ExecutableElement? enclosingExecutableElement;
3434
final AugmentableElement? enclosingAugmentation;
3535
late final _resolutionVisitor = ResolutionVisitor(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class ConstructorInitializerResolver {
5858
var analysisOptions = _libraryBuilder.kind.file.analysisOptions;
5959
var astResolver = AstResolver(
6060
_linker, unitElement, initializerScope, analysisOptions,
61-
enclosingClassElement: classElement,
61+
enclosingClassElement: classElement.asElement2,
6262
enclosingExecutableElement: element);
6363

6464
var body = node.body;

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:analyzer/src/summary2/ast_resolver.dart';
1313
import 'package:analyzer/src/summary2/library_builder.dart';
1414
import 'package:analyzer/src/summary2/link.dart';
1515
import 'package:analyzer/src/summary2/linking_node_scope.dart';
16+
import 'package:analyzer/src/utilities/extensions/element.dart';
1617

1718
class DefaultValueResolver {
1819
final Linker _linker;
@@ -60,7 +61,7 @@ class DefaultValueResolver {
6061
context.forEach(element.methods, _executable);
6162
}
6263

63-
void _interface(_UnitContext context, InterfaceElement element) {
64+
void _interface(_UnitContext context, InterfaceElementImpl element) {
6465
_ClassContext(context, element)
6566
..forEach(element.constructors, _constructor)
6667
..forEach(element.methods, _executable);
@@ -81,7 +82,7 @@ class DefaultValueResolver {
8182
context.unitElement,
8283
context.scope,
8384
analysisOptions,
84-
enclosingClassElement: context.classElement,
85+
enclosingClassElement: context.classElement?.asElement2,
8586
enclosingExecutableElement: context.executableElement,
8687
);
8788
astResolver.resolveExpression(() => node.defaultValue!,
@@ -98,7 +99,7 @@ class _ClassContext extends _Context {
9899
final _UnitContext unitContext;
99100

100101
@override
101-
final InterfaceElement classElement;
102+
final InterfaceElementImpl classElement;
102103

103104
_ClassContext(this.unitContext, this.classElement);
104105

@@ -109,7 +110,7 @@ class _ClassContext extends _Context {
109110
}
110111

111112
abstract class _Context {
112-
InterfaceElement? get classElement => null;
113+
InterfaceElementImpl? get classElement => null;
113114

114115
CompilationUnitElementImpl get unitElement;
115116
}
@@ -126,7 +127,7 @@ class _ExecutableContext extends _Context {
126127
});
127128

128129
@override
129-
InterfaceElement? get classElement {
130+
InterfaceElementImpl? get classElement {
130131
return enclosingContext.classElement;
131132
}
132133

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import 'package:analyzer/src/summary2/instance_member_inferrer.dart';
1616
import 'package:analyzer/src/summary2/library_builder.dart';
1717
import 'package:analyzer/src/summary2/link.dart';
1818
import 'package:analyzer/src/summary2/linking_node_scope.dart';
19+
import 'package:analyzer/src/utilities/extensions/element.dart';
1920
import 'package:analyzer/src/utilities/extensions/object.dart';
2021
import 'package:collection/collection.dart';
2122

@@ -252,10 +253,8 @@ class _PropertyInducingElementTypeInference
252253
_status = _InferenceStatus.beingInferred;
253254

254255
var enclosingElement = _element.enclosingElement3;
255-
var enclosingInterfaceElement = enclosingElement
256-
.ifTypeOrNull<InterfaceElement>()
257-
?.augmented
258-
.firstFragment;
256+
var enclosingInterfaceElement =
257+
enclosingElement.ifTypeOrNull<InterfaceElementImpl>()?.asElement2;
259258

260259
var analysisOptions = _libraryBuilder.kind.file.analysisOptions;
261260
var astResolver = AstResolver(

0 commit comments

Comments
 (0)