Skip to content

Commit 8059463

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate ConstructorInitializerResolver.
Change-Id: I4dda1c61082cec54638c2f9a523a7639e33821d0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/410120 Reviewed-by: Phil Quitslund <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 1722d67 commit 8059463

File tree

2 files changed

+41
-49
lines changed

2 files changed

+41
-49
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6635,7 +6635,7 @@ abstract class InterfaceElementImpl2 extends InstanceElementImpl2
66356635
}
66366636

66376637
@override
6638-
List<ConstructorElement2> get constructors2 {
6638+
List<ConstructorElementImpl2> get constructors2 {
66396639
_readMembers();
66406640
return constructors
66416641
.map((constructor) =>
@@ -11685,7 +11685,7 @@ mixin TypeParameterizedElementMixin on ElementImpl
1168511685
bool get isSimplyBounded => true;
1168611686

1168711687
@override
11688-
LibraryFragment get libraryFragment => enclosingUnit;
11688+
CompilationUnitElementImpl get libraryFragment => enclosingUnit;
1168911689

1169011690
ElementLinkedData? get linkedData;
1169111691

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

Lines changed: 39 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// ignore_for_file: analyzer_use_new_elements
6-
75
import 'package:analyzer/src/dart/ast/ast.dart';
86
import 'package:analyzer/src/dart/element/element.dart';
97
import 'package:analyzer/src/dart/element/scope.dart';
108
import 'package:analyzer/src/summary2/ast_resolver.dart';
119
import 'package:analyzer/src/summary2/library_builder.dart';
1210
import 'package:analyzer/src/summary2/link.dart';
1311
import 'package:analyzer/src/summary2/linking_node_scope.dart';
14-
import 'package:analyzer/src/utilities/extensions/element.dart';
1512

1613
class ConstructorInitializerResolver {
1714
final Linker _linker;
@@ -20,62 +17,57 @@ class ConstructorInitializerResolver {
2017
ConstructorInitializerResolver(this._linker, this._libraryBuilder);
2118

2219
void resolve() {
23-
for (var unitElement in _libraryBuilder.element.units) {
24-
var interfaceElements = <InterfaceElementImpl>[
25-
...unitElement.classes,
26-
...unitElement.enums,
27-
...unitElement.extensionTypes,
28-
...unitElement.mixins,
29-
];
30-
for (var interfaceElement in interfaceElements) {
31-
for (var constructorElement in interfaceElement.constructors) {
32-
_constructor(
33-
unitElement,
34-
interfaceElement.augmented.firstFragment,
35-
constructorElement,
36-
);
37-
}
20+
var libraryElement = _libraryBuilder.element;
21+
var interfaceElements = <InterfaceElementImpl2>[
22+
...libraryElement.classes,
23+
...libraryElement.enums,
24+
...libraryElement.extensionTypes,
25+
...libraryElement.mixins,
26+
];
27+
28+
for (var interfaceElement in interfaceElements) {
29+
for (var constructorElement in interfaceElement.constructors2) {
30+
_constructorElement(interfaceElement, constructorElement);
3831
}
3932
}
4033
}
4134

42-
void _constructor(
43-
CompilationUnitElementImpl unitElement,
44-
InterfaceElementImpl classElement,
45-
ConstructorElementImpl element,
35+
void _constructorElement(
36+
InterfaceElementImpl2 interfaceElement,
37+
ConstructorElementImpl2 element,
4638
) {
4739
if (element.isSynthetic) return;
4840

49-
var node = _linker.getLinkingNode(element);
50-
if (node is! ConstructorDeclarationImpl) return;
41+
for (var fragment in element.fragments) {
42+
var node = _linker.getLinkingNode(fragment);
43+
if (node is! ConstructorDeclarationImpl) return;
5144

52-
var functionScope = LinkingNodeContext.get(node).scope;
53-
var initializerScope = ConstructorInitializerScope(
54-
functionScope,
55-
element.asElement2,
56-
);
45+
var constructorScope = LinkingNodeContext.get(node).scope;
46+
var initializerScope =
47+
ConstructorInitializerScope(constructorScope, element);
5748

58-
var analysisOptions = _libraryBuilder.kind.file.analysisOptions;
59-
var astResolver = AstResolver(
60-
_linker,
61-
unitElement,
62-
initializerScope,
63-
analysisOptions,
64-
enclosingClassElement: classElement.asElement2,
65-
enclosingExecutableElement: element.asElement2,
66-
);
49+
var analysisOptions = _libraryBuilder.kind.file.analysisOptions;
50+
var astResolver = AstResolver(
51+
_linker,
52+
fragment.libraryFragment,
53+
initializerScope,
54+
analysisOptions,
55+
enclosingClassElement: interfaceElement,
56+
enclosingExecutableElement: element,
57+
);
6758

68-
var body = node.body;
69-
body.localVariableInfo = LocalVariableInfo();
59+
var body = node.body;
60+
body.localVariableInfo = LocalVariableInfo();
7061

71-
astResolver.resolveConstructorNode(node);
62+
astResolver.resolveConstructorNode(node);
7263

73-
if (node.factoryKeyword != null) {
74-
element.redirectedConstructor = node.redirectedConstructor?.staticElement;
75-
} else {
76-
for (var initializer in node.initializers) {
77-
if (initializer is RedirectingConstructorInvocationImpl) {
78-
element.redirectedConstructor = initializer.staticElement;
64+
if (node.factoryKeyword != null) {
65+
element.redirectedConstructor2 = node.redirectedConstructor?.element;
66+
} else {
67+
for (var initializer in node.initializers) {
68+
if (initializer is RedirectingConstructorInvocationImpl) {
69+
element.redirectedConstructor2 = initializer.element;
70+
}
7971
}
8072
}
8173
}

0 commit comments

Comments
 (0)