33// BSD-style license that can be found in the LICENSE file.
44
55import 'package:analyzer/dart/ast/syntactic_entity.dart' ;
6- import 'package:analyzer/dart/element/element.dart' ;
76import 'package:analyzer/dart/element/element2.dart' ;
87import 'package:analyzer/dart/element/type.dart' ;
98import 'package:analyzer/error/listener.dart' ;
@@ -24,79 +23,79 @@ abstract class BaseDeprecatedMemberUseVerifier {
2423 : _strictCasts = strictCasts;
2524
2625 void assignmentExpression (AssignmentExpression node) {
27- _checkForDeprecated (node.readElement , node.leftHandSide);
28- _checkForDeprecated (node.writeElement , node.leftHandSide);
29- _checkForDeprecated (node.staticElement , node);
26+ _checkForDeprecated (node.readElement2 , node.leftHandSide);
27+ _checkForDeprecated (node.writeElement2 , node.leftHandSide);
28+ _checkForDeprecated (node.element , node);
3029 }
3130
3231 void binaryExpression (BinaryExpression node) {
33- _checkForDeprecated (node.staticElement , node);
32+ _checkForDeprecated (node.element , node);
3433 }
3534
3635 void constructorName (ConstructorName node) {
37- _checkForDeprecated (node.staticElement , node);
36+ _checkForDeprecated (node.element , node);
3837 }
3938
4039 void exportDirective (ExportDirective node) {
41- _checkForDeprecated (node.element ? .exportedLibrary , node);
40+ _checkForDeprecated (node.libraryExport ? .exportedLibrary2 , node);
4241 }
4342
4443 void extensionOverride (ExtensionOverride node) {
45- _checkForDeprecated (node.element , node);
44+ _checkForDeprecated (node.element2 , node);
4645 }
4746
4847 void functionExpressionInvocation (FunctionExpressionInvocation node) {
49- var callElement = node.staticElement ;
50- if (callElement is MethodElement &&
51- callElement.name == FunctionElement .CALL_METHOD_NAME ) {
48+ var callElement = node.element ;
49+ if (callElement is MethodElement2 &&
50+ callElement.name3 == MethodElement2 .CALL_METHOD_NAME ) {
5251 _checkForDeprecated (callElement, node);
5352 }
5453 }
5554
5655 void importDirective (ImportDirective node) {
57- _checkForDeprecated (node.element ? .importedLibrary , node);
56+ _checkForDeprecated (node.libraryImport ? .importedLibrary2 , node);
5857 }
5958
6059 void indexExpression (IndexExpression node) {
61- _checkForDeprecated (node.staticElement , node);
60+ _checkForDeprecated (node.element , node);
6261 }
6362
6463 void instanceCreationExpression (InstanceCreationExpression node) {
6564 _invocationArguments (
66- node.constructorName.staticElement ,
65+ node.constructorName.element ,
6766 node.argumentList,
6867 );
6968 }
7069
7170 void methodInvocation (MethodInvocation node) {
7271 _invocationArguments (
73- node.methodName.staticElement ,
72+ node.methodName.element ,
7473 node.argumentList,
7574 );
7675 }
7776
7877 void namedType (NamedType node) {
79- _checkForDeprecated (node.element , node);
78+ _checkForDeprecated (node.element2 , node);
8079 }
8180
8281 void patternField (PatternField node) {
83- _checkForDeprecated (node.element , node);
82+ _checkForDeprecated (node.element2 , node);
8483 }
8584
8685 void popInDeprecated () {
8786 _inDeprecatedMemberStack.removeLast ();
8887 }
8988
9089 void postfixExpression (PostfixExpression node) {
91- _checkForDeprecated (node.readElement , node.operand);
92- _checkForDeprecated (node.writeElement , node.operand);
93- _checkForDeprecated (node.staticElement , node);
90+ _checkForDeprecated (node.readElement2 , node.operand);
91+ _checkForDeprecated (node.writeElement2 , node.operand);
92+ _checkForDeprecated (node.element , node);
9493 }
9594
9695 void prefixExpression (PrefixExpression node) {
97- _checkForDeprecated (node.readElement , node.operand);
98- _checkForDeprecated (node.writeElement , node.operand);
99- _checkForDeprecated (node.staticElement , node);
96+ _checkForDeprecated (node.readElement2 , node.operand);
97+ _checkForDeprecated (node.writeElement2 , node.operand);
98+ _checkForDeprecated (node.element , node);
10099 }
101100
102101 void pushInDeprecatedMetadata (List <Annotation > metadata) {
@@ -110,18 +109,18 @@ abstract class BaseDeprecatedMemberUseVerifier {
110109 }
111110
112111 void redirectingConstructorInvocation (RedirectingConstructorInvocation node) {
113- _checkForDeprecated (node.staticElement , node);
114- _invocationArguments (node.staticElement , node.argumentList);
112+ _checkForDeprecated (node.element , node);
113+ _invocationArguments (node.element , node.argumentList);
115114 }
116115
117- void reportError (SyntacticEntity errorEntity, Element element,
116+ void reportError (SyntacticEntity errorEntity, Element2 element,
118117 String displayName, String ? message) {
119- reportError2 (errorEntity, element.asElement2 ! , displayName, message);
118+ reportError2 (errorEntity, element, displayName, message);
120119 }
121120
122121 void reportError2 (SyntacticEntity errorEntity, Element2 element,
123122 String displayName, String ? message) {
124- reportError (errorEntity, element.asElement ! , displayName, message);
123+ reportError (errorEntity, element, displayName, message);
125124 }
126125
127126 void simpleIdentifier (SimpleIdentifier node) {
@@ -151,14 +150,14 @@ abstract class BaseDeprecatedMemberUseVerifier {
151150 }
152151
153152 void superConstructorInvocation (SuperConstructorInvocation node) {
154- _checkForDeprecated (node.staticElement , node);
155- _invocationArguments (node.staticElement , node.argumentList);
153+ _checkForDeprecated (node.element , node);
154+ _invocationArguments (node.element , node.argumentList);
156155 }
157156
158157 /// Given some [element] , look at the associated metadata and report the use
159158 /// of the member if it is declared as deprecated. If a diagnostic is reported
160159 /// it should be reported at the given [node] .
161- void _checkForDeprecated (Element ? element, AstNode node) {
160+ void _checkForDeprecated (Element2 ? element, AstNode node) {
162161 if (! _isDeprecated (element)) {
163162 return ;
164163 }
@@ -171,7 +170,7 @@ abstract class BaseDeprecatedMemberUseVerifier {
171170 return ;
172171 }
173172
174- if (element is ParameterElement && element.isRequired) {
173+ if (element is FormalParameterElement && element.isRequired) {
175174 return ;
176175 }
177176
@@ -207,55 +206,55 @@ abstract class BaseDeprecatedMemberUseVerifier {
207206 }
208207
209208 String displayName = element! .displayName;
210- if (element is ConstructorElement ) {
209+ if (element is ConstructorElement2 ) {
211210 // TODO(jwren): We should modify ConstructorElement.displayName,
212211 // or have the logic centralized elsewhere, instead of doing this logic
213212 // here.
214- displayName = element.name == ''
213+ displayName = element.name3 == null
215214 ? '${element .displayName }.new'
216215 : element.displayName;
217- } else if (element is LibraryElement ) {
218- displayName = element.definingCompilationUnit .source.uri.toString ();
216+ } else if (element is LibraryElement2 ) {
217+ displayName = element.firstFragment .source.uri.toString ();
219218 } else if (node is MethodInvocation &&
220- displayName == FunctionElement .CALL_METHOD_NAME ) {
219+ displayName == MethodElement2 .CALL_METHOD_NAME ) {
221220 var invokeType = node.staticInvokeType as InterfaceType ;
222- var invokeClass = invokeType.element ;
223- displayName = "${invokeClass .name }.${element .displayName }" ;
221+ var invokeClass = invokeType.element3 ;
222+ displayName = "${invokeClass .name3 }.${element .displayName }" ;
224223 }
225224 var message = _deprecatedMessage (element, strictCasts: _strictCasts);
226225 reportError (errorEntity, element, displayName, message);
227226 }
228227
229- void _invocationArguments (Element ? element, ArgumentList arguments) {
230- element = element? .declaration ;
231- if (element is ExecutableElement ) {
228+ void _invocationArguments (Element2 ? element, ArgumentList arguments) {
229+ element = element? .baseElement ;
230+ if (element is ExecutableElement2 ) {
232231 _visitParametersAndArguments (
233- element.parameters ,
232+ element.formalParameters ,
234233 arguments.arguments,
235234 _checkForDeprecated,
236235 );
237236 }
238237 }
239238
240239 void _simpleIdentifier (SimpleIdentifier identifier) {
241- _checkForDeprecated (identifier.staticElement , identifier);
240+ _checkForDeprecated (identifier.element , identifier);
242241 }
243242
244243 /// Return the message in the deprecated annotation on the given [element] , or
245244 /// `null` if the element doesn't have a deprecated annotation or if the
246245 /// annotation does not have a message.
247- static String ? _deprecatedMessage (Element element,
246+ static String ? _deprecatedMessage (Element2 element,
248247 {required bool strictCasts}) {
249248 // Implicit getters/setters.
250- if (element.isSynthetic && element is PropertyAccessorElement ) {
251- var variable = element.variable2 ;
249+ if (element.isSynthetic && element is PropertyAccessorElement2 ) {
250+ var variable = element.variable3 ;
252251 if (variable == null ) {
253252 return null ;
254253 }
255254 element = variable;
256255 }
257256 var annotation = element.metadata.firstWhereOrNull ((e) => e.isDeprecated);
258- if (annotation == null || annotation.element is PropertyAccessorElement ) {
257+ if (annotation == null || annotation.element2 is PropertyAccessorElement2 ) {
259258 return null ;
260259 }
261260 var constantValue = annotation.computeConstantValue ();
@@ -272,35 +271,40 @@ abstract class BaseDeprecatedMemberUseVerifier {
272271 return false ;
273272 }
274273
275- static bool _isDeprecated (Element ? element) {
274+ static bool _isDeprecated (Element2 ? element) {
276275 if (element == null ) {
277276 return false ;
278277 }
279278
280- if (element is PropertyAccessorElement && element.isSynthetic) {
279+ if (element is PropertyAccessorElement2 && element.isSynthetic) {
281280 // TODO(brianwilkerson): Why isn't this the implementation for PropertyAccessorElement?
282- var variable = element.variable2;
283- return variable != null && variable.hasDeprecated;
281+ var variable = element.variable3;
282+ return variable != null && variable.metadata2.hasDeprecated;
283+ }
284+ if (element is Annotatable ) {
285+ return (element as Annotatable ).metadata2.hasDeprecated;
284286 }
285- return element.hasDeprecated ;
287+ return false ;
286288 }
287289
288- /// Return `true` if [element] is a [ParameterElement] declared in [node] .
289- static bool _isLocalParameter (Element ? element, AstNode ? node) {
290- if (element is ParameterElement ) {
291- var definingFunction = element.enclosingElement3 as ExecutableElement ;
290+ /// Returns whether [element] is a [FormalParameterElement] declared in
291+ /// [node] .
292+ static bool _isLocalParameter (Element2 ? element, AstNode ? node) {
293+ if (element is FormalParameterElement ) {
294+ var definingFunction = element.firstFragment.enclosingFragment? .element
295+ as ExecutableElement2 ;
292296
293297 for (; node != null ; node = node.parent) {
294298 if (node is ConstructorDeclaration ) {
295- if (node.declaredElement == definingFunction) {
299+ if (node.declaredFragment ? .element == definingFunction) {
296300 return true ;
297301 }
298302 } else if (node is FunctionExpression ) {
299- if (node.declaredElement == definingFunction) {
303+ if (node.declaredFragment ? .element == definingFunction) {
300304 return true ;
301305 }
302306 } else if (node is MethodDeclaration ) {
303- if (node.declaredElement == definingFunction) {
307+ if (node.declaredFragment ? .element == definingFunction) {
304308 return true ;
305309 }
306310 }
@@ -310,11 +314,11 @@ abstract class BaseDeprecatedMemberUseVerifier {
310314 }
311315
312316 static void _visitParametersAndArguments (
313- List <ParameterElement > parameters,
317+ List <FormalParameterElement > parameters,
314318 List <Expression > arguments,
315- void Function (ParameterElement , Expression ) f,
319+ void Function (FormalParameterElement , Expression ) f,
316320 ) {
317- Map <String , ParameterElement >? namedParameters;
321+ Map <String , FormalParameterElement >? namedParameters;
318322
319323 var positionalIndex = 0 ;
320324 for (var argument in arguments) {
@@ -323,7 +327,7 @@ abstract class BaseDeprecatedMemberUseVerifier {
323327 namedParameters = {};
324328 for (var parameter in parameters) {
325329 if (parameter.isNamed) {
326- namedParameters[parameter.name ] = parameter;
330+ namedParameters[parameter.name3 ! ] = parameter;
327331 }
328332 }
329333 }
@@ -352,9 +356,9 @@ class DeprecatedMemberUseVerifier extends BaseDeprecatedMemberUseVerifier {
352356 {required super .strictCasts});
353357
354358 @override
355- void reportError (SyntacticEntity errorEntity, Element element,
359+ void reportError (SyntacticEntity errorEntity, Element2 element,
356360 String displayName, String ? message) {
357- var library = element is LibraryElement ? element : element.library ;
361+ var library = element is LibraryElement2 ? element : element.library2 ;
358362
359363 message = message? .trim ();
360364 if (message == null || message.isEmpty || message == '.' ) {
@@ -381,12 +385,12 @@ class DeprecatedMemberUseVerifier extends BaseDeprecatedMemberUseVerifier {
381385 }
382386 }
383387
384- bool _isLibraryInWorkspacePackage (LibraryElement ? library) {
388+ bool _isLibraryInWorkspacePackage (LibraryElement2 ? library) {
385389 // Better to not make a big claim that they _are_ in the same package,
386390 // if we were unable to determine what package [_currentLibrary] is in.
387391 if (_workspacePackage == null || library == null ) {
388392 return false ;
389393 }
390- return _workspacePackage.contains (library.source);
394+ return _workspacePackage.contains (library.firstFragment. source);
391395 }
392396}
0 commit comments