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-
75import 'package:analyzer/src/dart/ast/ast.dart' ;
86import 'package:analyzer/src/dart/element/element.dart' ;
97import 'package:analyzer/src/dart/element/scope.dart' ;
108import 'package:analyzer/src/summary2/ast_resolver.dart' ;
119import 'package:analyzer/src/summary2/library_builder.dart' ;
1210import 'package:analyzer/src/summary2/link.dart' ;
1311import 'package:analyzer/src/summary2/linking_node_scope.dart' ;
14- import 'package:analyzer/src/utilities/extensions/element.dart' ;
1512
1613class 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