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/dart/ast/syntactic_entity.dart' ;
8- import 'package:analyzer/dart/element/element .dart' ;
6+ import 'package:analyzer/dart/element/element2 .dart' ;
97import 'package:analyzer/dart/element/nullability_suffix.dart' ;
108import 'package:analyzer/dart/element/type.dart' ;
119import 'package:analyzer/error/error.dart' ;
@@ -18,27 +16,26 @@ import 'package:analyzer/src/dart/element/type_algebra.dart';
1816import 'package:analyzer/src/dart/element/type_system.dart' ;
1917import 'package:analyzer/src/diagnostic/diagnostic_factory.dart' ;
2018import 'package:analyzer/src/error/codes.dart' ;
21- import 'package:analyzer/src/utilities/extensions/element.dart' ;
2219
2320class CorrectOverrideHelper {
2421 final TypeSystemImpl _typeSystem;
2522
26- final ExecutableElement _thisMember;
23+ final ExecutableElement2 _thisMember;
2724 FunctionType ? _thisTypeForSubtype;
2825
2926 final DiagnosticFactory _diagnosticFactory = DiagnosticFactory ();
3027
3128 CorrectOverrideHelper ({
3229 required TypeSystemImpl typeSystem,
33- required ExecutableElement thisMember,
30+ required ExecutableElement2 thisMember,
3431 }) : _typeSystem = typeSystem,
3532 _thisMember = thisMember {
3633 _computeThisTypeForSubtype ();
3734 }
3835
3936 /// Return `true` if [_thisMember] is a correct override of [superMember] .
4037 bool isCorrectOverrideOf ({
41- required ExecutableElement superMember,
38+ required ExecutableElement2 superMember,
4239 }) {
4340 var superType = superMember.type;
4441 return _typeSystem.isSubtypeOf (_thisTypeForSubtype! , superType);
@@ -47,36 +44,35 @@ class CorrectOverrideHelper {
4744 /// If [_thisMember] is not a correct override of [superMember] , report the
4845 /// error.
4946 void verify ({
50- required ExecutableElement superMember,
47+ required ExecutableElement2 superMember,
5148 required ErrorReporter errorReporter,
5249 required SyntacticEntity errorNode,
5350 required ErrorCode errorCode,
5451 }) {
5552 var isCorrect = isCorrectOverrideOf (superMember: superMember);
5653 if (! isCorrect) {
5754 var member = _thisMember;
58- var memberName = member.name;
59- if (member is PropertyAccessorElement && member.isSetter) {
60- memberName = memberName.substring (0 , memberName.length - 1 );
55+ var memberName = member.name3;
56+ if (memberName != null ) {
57+ errorReporter.reportError (_diagnosticFactory.invalidOverride (
58+ errorReporter.source,
59+ errorCode,
60+ errorNode,
61+ _thisMember,
62+ superMember,
63+ memberName,
64+ ));
6165 }
62- errorReporter.reportError (_diagnosticFactory.invalidOverride (
63- errorReporter.source,
64- errorCode,
65- errorNode,
66- _thisMember,
67- superMember,
68- memberName,
69- ));
7066 }
7167 }
7268
7369 /// Fill [_thisTypeForSubtype] . If [_thisMember] has covariant formal
7470 /// parameters, replace their types with `Object?` or `Object` .
7571 void _computeThisTypeForSubtype () {
7672 var type = _thisMember.type;
77- var parameters = type.parameters ;
73+ var parameters = type.formalParameters ;
7874
79- List <ParameterElement >? newParameters;
75+ List <FormalParameterElement >? newParameters;
8076 for (var i = 0 ; i < parameters.length; i++ ) {
8177 var parameter = parameters[i];
8278 if (parameter.isCovariant) {
@@ -88,9 +84,9 @@ class CorrectOverrideHelper {
8884 }
8985
9086 if (newParameters != null ) {
91- _thisTypeForSubtype = FunctionTypeImpl (
92- typeFormals : type.typeFormals ,
93- parameters : newParameters,
87+ _thisTypeForSubtype = FunctionTypeImpl . v2 (
88+ typeParameters : type.typeParameters ,
89+ formalParameters : newParameters,
9490 returnType: type.returnType,
9591 nullabilitySuffix: type.nullabilitySuffix,
9692 );
@@ -104,12 +100,12 @@ class CovariantParametersVerifier {
104100 final AnalysisSessionImpl _session;
105101 final TypeSystemImpl _typeSystem;
106102
107- final ExecutableElement _thisMember;
103+ final ExecutableElement2 _thisMember;
108104
109105 CovariantParametersVerifier ({
110- required ExecutableElement thisMember,
111- }) : _session = thisMember.library .session as AnalysisSessionImpl ,
112- _typeSystem = thisMember.library .typeSystem as TypeSystemImpl ,
106+ required ExecutableElement2 thisMember,
107+ }) : _session = thisMember.library2 .session as AnalysisSessionImpl ,
108+ _typeSystem = thisMember.library2 .typeSystem as TypeSystemImpl ,
113109 _thisMember = thisMember;
114110
115111 void verify ({
@@ -133,10 +129,10 @@ class CovariantParametersVerifier {
133129 errorEntity,
134130 CompileTimeErrorCode .INVALID_OVERRIDE ,
135131 arguments: [
136- _thisMember.name ,
137- _thisMember.enclosingElement3.name ! ,
132+ _thisMember.name3 ! ,
133+ _thisMember.enclosingElement2 ! .name3 ! ,
138134 _thisMember.type,
139- superMember.enclosingElement3.name ! ,
135+ superMember.enclosingElement2 ! .name3 ! ,
140136 superMember.type,
141137 ],
142138 );
@@ -147,13 +143,12 @@ class CovariantParametersVerifier {
147143
148144 List <_SuperMember > _superMembers () {
149145 var classHierarchy = _session.classHierarchy;
150- var classElement = _thisMember.enclosingElement3 as InterfaceElementImpl ;
151- var interfaces =
152- classHierarchy.implementedInterfaces (classElement.asElement2);
146+ var classElement = _thisMember.enclosingElement2 as InterfaceElementImpl2 ;
147+ var interfaces = classHierarchy.implementedInterfaces (classElement);
153148
154149 var superMembers = < _SuperMember > [];
155150 for (var interface in interfaces) {
156- var superMember = _correspondingMember (interface .element , _thisMember);
151+ var superMember = _correspondingMember (interface .element3 , _thisMember);
157152 if (superMember != null ) {
158153 superMembers.add (
159154 _SuperMember (interface , superMember),
@@ -164,18 +159,18 @@ class CovariantParametersVerifier {
164159 return superMembers;
165160 }
166161
167- Map <ParameterElement , List <_SuperParameter >> _superParameters () {
168- var result = < ParameterElement , List <_SuperParameter >> {};
162+ Map <FormalParameterElement , List <_SuperParameter >> _superParameters () {
163+ var result = < FormalParameterElement , List <_SuperParameter >> {};
169164
170165 List <_SuperMember >? superMembers;
171- var parameters = _thisMember.parameters ;
166+ var parameters = _thisMember.formalParameters ;
172167 for (var i = 0 ; i < parameters.length; i++ ) {
173168 var parameter = parameters[i];
174169 if (parameter.isCovariant) {
175170 superMembers ?? = _superMembers ();
176171 for (var superMember in superMembers) {
177172 var superParameter = _correspondingParameter (
178- superMember.rawElement.parameters ,
173+ superMember.rawElement.formalParameters ,
179174 parameter,
180175 i,
181176 );
@@ -200,11 +195,11 @@ class CovariantParametersVerifier {
200195 Substitution result = Substitution .fromInterfaceType (superMember.interface );
201196
202197 // If the executable has type parameters, ensure that super uses the same.
203- var thisTypeParameters = _thisMember.typeParameters ;
198+ var thisTypeParameters = _thisMember.typeParameters2 ;
204199 if (thisTypeParameters.isNotEmpty) {
205- var superTypeParameters = superMember.rawElement.typeParameters ;
200+ var superTypeParameters = superMember.rawElement.typeParameters2 ;
206201 if (thisTypeParameters.length == superTypeParameters.length) {
207- var typeParametersSubstitution = Substitution .fromPairs (
202+ var typeParametersSubstitution = Substitution .fromPairs2 (
208203 superTypeParameters,
209204 thisTypeParameters.map ((e) {
210205 return e.instantiate (
@@ -221,27 +216,27 @@ class CovariantParametersVerifier {
221216
222217 /// Return a member from [classElement] that corresponds to the [proto] ,
223218 /// or `null` if no such member exist.
224- static ExecutableElement ? _correspondingMember (
225- InterfaceElement classElement,
226- ExecutableElement proto,
219+ static ExecutableElement2 ? _correspondingMember (
220+ InterfaceElement2 classElement,
221+ ExecutableElement2 proto,
227222 ) {
228- if (proto is MethodElement ) {
229- return classElement.getMethod (proto.displayName);
223+ if (proto is MethodElement2 ) {
224+ return classElement.getMethod2 (proto.displayName);
230225 }
231- if (proto is PropertyAccessorElement ) {
232- if (proto.isGetter ) {
233- return classElement.getGetter (proto.displayName);
226+ if (proto is PropertyAccessorElement2 ) {
227+ if (proto is GetterElement ) {
228+ return classElement.getGetter2 (proto.displayName);
234229 }
235- return classElement.getSetter (proto.displayName);
230+ return classElement.getSetter2 (proto.displayName);
236231 }
237232 return null ;
238233 }
239234
240235 /// Return an element of [parameters] that corresponds for the [proto] ,
241236 /// or `null` if no such parameter exist.
242- static ParameterElement ? _correspondingParameter (
243- List <ParameterElement > parameters,
244- ParameterElement proto,
237+ static FormalParameterElement ? _correspondingParameter (
238+ List <FormalParameterElement > parameters,
239+ FormalParameterElement proto,
245240 int protoIndex,
246241 ) {
247242 if (proto.isPositional) {
@@ -254,7 +249,7 @@ class CovariantParametersVerifier {
254249 } else {
255250 assert (proto.isNamed);
256251 for (var parameter in parameters) {
257- if (parameter.isNamed && parameter.name == proto.name ) {
252+ if (parameter.isNamed && parameter.name3 == proto.name3 ) {
258253 return parameter;
259254 }
260255 }
@@ -265,17 +260,17 @@ class CovariantParametersVerifier {
265260
266261class _SuperMember {
267262 final InterfaceType interface ;
268- final ExecutableElement rawElement;
263+ final ExecutableElement2 rawElement;
269264
270265 _SuperMember (this .interface , this .rawElement);
271266}
272267
273268class _SuperParameter {
274- final ParameterElement element;
269+ final FormalParameterElement element;
275270 final DartType type;
276271
277272 _SuperParameter (this .element, this .type);
278273
279- ExecutableElement get member =>
280- element.enclosingElement3 as ExecutableElement ;
274+ ExecutableElement2 get member =>
275+ element.enclosingElement2 as ExecutableElement2 ;
281276}
0 commit comments