@@ -10,13 +10,13 @@ import 'package:analysis_server_plugin/edit/dart/correction_producer.dart';
1010import 'package:analyzer/dart/ast/ast.dart' ;
1111import 'package:analyzer/dart/ast/syntactic_entity.dart' ;
1212import 'package:analyzer/dart/ast/token.dart' ;
13- import 'package:analyzer/dart/element/element .dart' ;
13+ import 'package:analyzer/dart/element/element2 .dart' ;
1414import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart' ;
1515import 'package:analyzer_plugin/utilities/fixes/fixes.dart' ;
1616import 'package:analyzer_plugin/utilities/range_factory.dart' ;
1717
1818/// A predicate is a one-argument function that returns a boolean value.
19- typedef _ElementPredicate = bool Function (Element argument);
19+ typedef _ElementPredicate = bool Function (Element2 argument);
2020
2121class ChangeTo extends ResolvedCorrectionProducer {
2222 /// The kind of elements that should be proposed.
@@ -82,10 +82,10 @@ class ChangeTo extends ResolvedCorrectionProducer {
8282 };
8383 }
8484
85- Iterable <ParameterElement > _formalParameterSuggestions (
86- FunctionTypedElement element,
85+ Iterable <FormalParameterElement > _formalParameterSuggestions (
86+ FunctionTypedElement2 element,
8787 Iterable <FormalParameter > formalParameters) {
88- return element.parameters .where ((superParam) =>
88+ return element.formalParameters .where ((superParam) =>
8989 superParam.isNamed &&
9090 ! formalParameters
9191 .any ((param) => superParam.name == param.name? .lexeme));
@@ -95,7 +95,7 @@ class ChangeTo extends ResolvedCorrectionProducer {
9595 var node = this .node;
9696 if (node is Annotation ) {
9797 var name = node.name;
98- if (name.staticElement == null ) {
98+ if (name.element == null ) {
9999 if (node.arguments != null ) {
100100 await _proposeClassOrMixin (builder, name);
101101 }
@@ -112,7 +112,7 @@ class ChangeTo extends ResolvedCorrectionProducer {
112112 nameToken = node.name2;
113113 } else if (node is PrefixedIdentifier &&
114114 node.parent is NamedType &&
115- node.prefix.staticElement is PrefixElement ) {
115+ node.prefix.element is PrefixElement2 ) {
116116 prefixName = node.prefix.name;
117117 nameToken = node.identifier.token;
118118 } else if (node is SimpleIdentifier ) {
@@ -122,18 +122,16 @@ class ChangeTo extends ResolvedCorrectionProducer {
122122 if (nameToken != null ) {
123123 // Prepare for selecting the closest element.
124124 var finder = _ClosestElementFinder (
125- nameToken.lexeme, (Element element) => element is InterfaceElement );
125+ nameToken.lexeme, (element) => element is InterfaceElement2 );
126126 // Check elements of this library.
127127 if (prefixName == null ) {
128- for (var unit in unitResult.libraryElement.units) {
129- finder._updateList (unit.classes);
130- }
128+ finder._updateList (unitResult.libraryElement2.classes);
131129 }
132130 // Check elements from imports.
133131 for (var importElement
134- in unitResult.libraryElement.definingCompilationUnit.libraryImports ) {
135- if (importElement.prefix ? .element.name == prefixName) {
136- var namespace = getImportNamespace (importElement);
132+ in unitResult.libraryElement2.firstFragment.libraryImports2 ) {
133+ if (importElement.prefix2 ? .element.name == prefixName) {
134+ var namespace = getImportNamespace2 (importElement);
137135 finder._updateList (namespace.values);
138136 }
139137 }
@@ -144,22 +142,21 @@ class ChangeTo extends ResolvedCorrectionProducer {
144142
145143 Future <void > _proposeClassOrMixinMember (ChangeBuilder builder, Token node,
146144 Expression ? target, _ElementPredicate predicate) async {
147- var targetIdentifierElement =
148- target is Identifier ? target.staticElement : null ;
145+ var targetIdentifierElement = target is Identifier ? target.element : null ;
149146 var finder = _ClosestElementFinder (node.lexeme, predicate);
150147 // unqualified invocation
151148 if (target == null ) {
152149 var clazz = this .node.thisOrAncestorOfType <ClassDeclaration >();
153150 if (clazz != null ) {
154- var interfaceElement = clazz.declaredElement ! ;
151+ var interfaceElement = clazz.declaredFragment ! .element ;
155152 _updateFinderWithClassMembers (finder, interfaceElement);
156153 }
157154 } else if (target is ExtensionOverride ) {
158- _updateFinderWithExtensionMembers (finder, target.element );
159- } else if (targetIdentifierElement is ExtensionElement ) {
155+ _updateFinderWithExtensionMembers (finder, target.element2 );
156+ } else if (targetIdentifierElement is ExtensionElement2 ) {
160157 _updateFinderWithExtensionMembers (finder, targetIdentifierElement);
161158 } else {
162- var interfaceElement = getTargetInterfaceElement (target);
159+ var interfaceElement = getTargetInterfaceElement2 (target);
163160 if (interfaceElement != null ) {
164161 _updateFinderWithClassMembers (finder, interfaceElement);
165162 }
@@ -194,9 +191,8 @@ class ChangeTo extends ResolvedCorrectionProducer {
194191 }
195192
196193 var type = node.type? .type;
197- await _proposeClassOrMixinMember (builder, node.name, null ,
198- (Element element) {
199- return element is FieldElement &&
194+ await _proposeClassOrMixinMember (builder, node.name, null , (element) {
195+ return element is FieldElement2 &&
200196 ! exclusions.contains (element.name) &&
201197 ! element.isSynthetic &&
202198 ! element.isExternal &&
@@ -215,26 +211,25 @@ class ChangeTo extends ResolvedCorrectionProducer {
215211 var invocation = node.parent;
216212 if (invocation is MethodInvocation && invocation.methodName == node) {
217213 var target = invocation.target;
218- if (target is SimpleIdentifier &&
219- target.staticElement is PrefixElement ) {
214+ if (target is SimpleIdentifier && target.element is PrefixElement2 ) {
220215 prefixName = target.name;
221216 }
222217 }
223218 }
224219 // Prepare for selecting the closest element.
225220 var finder = _ClosestElementFinder (
226- node.name, (Element element) => element is FunctionElement );
221+ node.name, (element) => element is TopLevelFunctionElement );
227222 // Check to this library units.
228223 if (prefixName == null ) {
229- for (var unit in unitResult.libraryElement.units ) {
230- finder._updateList (unit.functions );
224+ for (var function in unitResult.libraryElement2.functions ) {
225+ finder._update (function );
231226 }
232227 }
233228 // Check unprefixed imports.
234229 for (var importElement
235- in unitResult.libraryElement.definingCompilationUnit.libraryImports ) {
236- if (importElement.prefix ? .element.name == prefixName) {
237- var namespace = getImportNamespace (importElement);
230+ in unitResult.libraryElement2.firstFragment.libraryImports2 ) {
231+ if (importElement.prefix2 ? .element.name == prefixName) {
232+ var namespace = getImportNamespace2 (importElement);
238233 finder._updateList (namespace.values);
239234 }
240235 }
@@ -257,14 +252,14 @@ class ChangeTo extends ResolvedCorrectionProducer {
257252 // find getter or setter
258253 var wantGetter = node.inGetterContext ();
259254 var wantSetter = node.inSetterContext ();
260- await _proposeClassOrMixinMember (builder, node.token, target,
261- ( Element element) {
262- if (element is PropertyAccessorElement ) {
263- return wantGetter && element.isGetter ||
264- wantSetter && element.isSetter ;
265- } else if (element is FieldElement ) {
266- return wantGetter && element.getter != null ||
267- wantSetter && element.setter != null ;
255+ await _proposeClassOrMixinMember (builder, node.token, target, (element) {
256+ if ( element is GetterElement ) {
257+ return wantGetter;
258+ } else if (element is SetterElement ) {
259+ return wantSetter;
260+ } else if (element is FieldElement2 ) {
261+ return wantGetter && element.getter2 != null ||
262+ wantSetter && element.setter2 != null ;
268263 }
269264 return false ;
270265 });
@@ -276,7 +271,7 @@ class ChangeTo extends ResolvedCorrectionProducer {
276271 var parent = node.parent;
277272 if (parent is MethodInvocation && node is SimpleIdentifier ) {
278273 await _proposeClassOrMixinMember (builder, node.token, parent.realTarget,
279- (Element element) => element is MethodElement && ! element.isOperator);
274+ (element) => element is MethodElement2 && ! element.isOperator);
280275 }
281276 }
282277
@@ -291,27 +286,26 @@ class ChangeTo extends ResolvedCorrectionProducer {
291286 var formalParameters = constructorDeclaration.parameters.parameters
292287 .whereType <DefaultFormalParameter >();
293288
294- var finder =
295- _ClosestElementFinder (superParameter.name.lexeme, (Element e) => true );
289+ var finder = _ClosestElementFinder (superParameter.name.lexeme, (e) => true );
296290
297291 var superInvocation = constructorDeclaration.initializers.lastOrNull;
298292
299293 if (superInvocation is SuperConstructorInvocation ) {
300- var staticElement = superInvocation.staticElement ;
301- if (staticElement == null ) return ;
294+ var element = superInvocation.element ;
295+ if (element == null ) return ;
302296
303- var list = _formalParameterSuggestions (staticElement , formalParameters);
297+ var list = _formalParameterSuggestions (element , formalParameters);
304298 finder._updateList (list);
305299 } else {
306300 var targetClassNode =
307301 superParameter.thisOrAncestorOfType <ClassDeclaration >();
308302 if (targetClassNode == null ) return ;
309303
310- var targetClassElement = targetClassNode.declaredElement ! ;
304+ var targetClassElement = targetClassNode.declaredFragment ! .element ;
311305 var superType = targetClassElement.supertype;
312306 if (superType == null ) return ;
313307
314- for (var constructor in superType.constructors ) {
308+ for (var constructor in superType.constructors2 ) {
315309 if (constructor.name.isEmpty) {
316310 var list = _formalParameterSuggestions (constructor, formalParameters);
317311 finder._updateList (list);
@@ -335,20 +329,20 @@ class ChangeTo extends ResolvedCorrectionProducer {
335329 }
336330
337331 void _updateFinderWithClassMembers (
338- _ClosestElementFinder finder, InterfaceElement clazz) {
339- var members = getMembers (clazz);
332+ _ClosestElementFinder finder, InterfaceElement2 clazz) {
333+ var members = getMembers2 (clazz);
340334 finder._updateList (members);
341335 }
342336
343337 void _updateFinderWithExtensionMembers (
344- _ClosestElementFinder finder, ExtensionElement ? element) {
338+ _ClosestElementFinder finder, ExtensionElement2 ? element) {
345339 if (element != null ) {
346- finder._updateList (getExtensionMembers (element));
340+ finder._updateList (getExtensionMembers2 (element));
347341 }
348342 }
349343}
350344
351- /// Helper for finding [Element ] with name closest to the given.
345+ /// Helper for finding [Element2 ] with name closest to the given.
352346class _ClosestElementFinder {
353347 /// The maximum Levenshtein distance between the existing name and a possible
354348 /// replacement before the replacement is deemed to not be worth offering.
@@ -363,11 +357,11 @@ class _ClosestElementFinder {
363357
364358 int _distance = _maxDistance;
365359
366- Element ? _element;
360+ Element2 ? _element;
367361
368362 _ClosestElementFinder (this ._targetName, this ._predicate);
369363
370- void _update (Element element) {
364+ void _update (Element2 element) {
371365 if (_predicate (element)) {
372366 var name = element.name;
373367 if (name != null ) {
@@ -380,7 +374,7 @@ class _ClosestElementFinder {
380374 }
381375 }
382376
383- void _updateList (Iterable <Element > elements) {
377+ void _updateList (Iterable <Element2 > elements) {
384378 for (var element in elements) {
385379 _update (element);
386380 }
0 commit comments