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:_fe_analyzer_shared/src/type_inference/type_analyzer_operations.dart' ;
8- import 'package:analyzer/dart/element/element .dart' ;
6+ import 'package:analyzer/dart/element/element2 .dart' ;
97import 'package:analyzer/dart/element/type.dart' ;
108import 'package:analyzer/src/dart/ast/ast.dart' ;
119import 'package:analyzer/src/dart/ast/extensions.dart' ;
@@ -14,7 +12,6 @@ import 'package:analyzer/src/summary2/function_type_builder.dart';
1412import 'package:analyzer/src/summary2/link.dart' ;
1513import 'package:analyzer/src/summary2/named_type_builder.dart' ;
1614import 'package:analyzer/src/summary2/record_type_builder.dart' ;
17- import 'package:analyzer/src/utilities/extensions/element.dart' ;
1815
1916class VarianceBuilder {
2017 final Linker _linker;
@@ -57,42 +54,46 @@ class VarianceBuilder {
5754 }
5855 }
5956
60- Variance _compute (TypeParameterElement variable, DartType ? type) {
57+ Variance _compute (TypeParameterElement2 variable, DartType ? type) {
6158 if (type is TypeParameterType ) {
62- if (type.element == variable) {
59+ if (type.element3 == variable) {
6360 return Variance .covariant ;
6461 } else {
6562 return Variance .unrelated;
6663 }
6764 } else if (type is NamedTypeBuilder ) {
68- var element = type.element3.asElement ;
65+ var element = type.element3;
6966 var arguments = type.arguments;
70- if (element is InterfaceElement ) {
67+ if (element is InterfaceElementImpl2 ) {
7168 var result = Variance .unrelated;
7269 if (arguments.isNotEmpty) {
73- var parameters = element.typeParameters;
74- for (var i = 0 ; i < arguments.length && i < parameters.length; i++ ) {
75- var parameter = parameters[i] as TypeParameterElementImpl ;
70+ var typeParameters = element.typeParameters2;
71+ for (var i = 0 ;
72+ i < arguments.length && i < typeParameters.length;
73+ i++ ) {
74+ var typeParameter = typeParameters[i];
7675 result = result.meet (
77- parameter .variance.combine (
76+ typeParameter .variance.combine (
7877 _compute (variable, arguments[i]),
7978 ),
8079 );
8180 }
8281 }
8382 return result;
84- } else if (element is TypeAliasElementImpl ) {
83+ } else if (element is TypeAliasElementImpl2 ) {
8584 _typeAliasElement (element);
8685
8786 var result = Variance .unrelated;
8887
8988 if (arguments.isNotEmpty) {
90- var parameters = element.typeParameters;
91- for (var i = 0 ; i < arguments.length && i < parameters.length; i++ ) {
92- var parameter = parameters[i];
93- var parameterVariance = parameter.variance;
89+ var typeParameters = element.typeParameters2;
90+ for (var i = 0 ;
91+ i < arguments.length && i < typeParameters.length;
92+ i++ ) {
93+ var typeParameter = typeParameters[i];
94+ var typeParameterVariance = typeParameter.variance;
9495 result = result.meet (
95- parameterVariance .combine (
96+ typeParameterVariance .combine (
9697 _compute (variable, arguments[i]),
9798 ),
9899 );
@@ -104,8 +105,8 @@ class VarianceBuilder {
104105 return _computeFunctionType (
105106 variable,
106107 returnType: type.returnType,
107- typeFormals : type.typeParameters. map ((e) => e.asElement). toList () ,
108- parameters : type.formalParameters. map ((e) => e.asElement). toList () ,
108+ typeParameters : type.typeParameters,
109+ formalParameters : type.formalParameters,
109110 );
110111 } else if (type is RecordTypeBuilder ) {
111112 var result = Variance .unrelated;
@@ -120,10 +121,10 @@ class VarianceBuilder {
120121 }
121122
122123 Variance _computeFunctionType (
123- TypeParameterElement variable, {
124+ TypeParameterElement2 variable, {
124125 required DartType ? returnType,
125- required List <TypeParameterElement >? typeFormals ,
126- required List <ParameterElement > parameters ,
126+ required List <TypeParameterElement2 >? typeParameters ,
127+ required List <FormalParameterElement > formalParameters ,
127128 }) {
128129 var result = Variance .unrelated;
129130
@@ -133,19 +134,19 @@ class VarianceBuilder {
133134
134135 // If [variable] is referenced in a bound at all, it makes the
135136 // variance of [variable] in the entire type invariant.
136- if (typeFormals != null ) {
137- for (var parameter in typeFormals ) {
138- var bound = parameter .bound;
137+ if (typeParameters != null ) {
138+ for (var typeParameter in typeParameters ) {
139+ var bound = typeParameter .bound;
139140 if (bound != null && _compute (variable, bound) != Variance .unrelated) {
140141 result = Variance .invariant;
141142 }
142143 }
143144 }
144145
145- for (var parameter in parameters ) {
146+ for (var typeParameter in formalParameters ) {
146147 result = result.meet (
147148 Variance .contravariant.combine (
148- _compute (variable, parameter .type),
149+ _compute (variable, typeParameter .type),
149150 ),
150151 );
151152 }
@@ -161,8 +162,8 @@ class VarianceBuilder {
161162
162163 // Recursion detected, recover.
163164 if (_visit.contains (node)) {
164- for (var parameter in parameterList.typeParameters) {
165- _setVariance (parameter , Variance .covariant );
165+ for (var typeParameter in parameterList.typeParameters) {
166+ _setVariance (typeParameter , Variance .covariant );
166167 }
167168 return ;
168169 }
@@ -174,16 +175,14 @@ class VarianceBuilder {
174175
175176 _visit.add (node);
176177 try {
177- for (var parameter in parameterList.typeParameters) {
178+ for (var typeParameter in parameterList.typeParameters) {
178179 var variance = _computeFunctionType (
179- parameter.declaredElement ! ,
180+ typeParameter.declaredFragment ! .element ,
180181 returnType: node.returnType? .type,
181- typeFormals: null ,
182- parameters: FunctionTypeBuilder .getParameters (node.parameters)
183- .map ((e) => e.asElement)
184- .toList (),
182+ typeParameters: null ,
183+ formalParameters: FunctionTypeBuilder .getParameters (node.parameters),
185184 );
186- _setVariance (parameter , variance);
185+ _setVariance (typeParameter , variance);
187186 }
188187 } finally {
189188 _visit.remove (node);
@@ -198,8 +197,8 @@ class VarianceBuilder {
198197
199198 // Recursion detected, recover.
200199 if (_visit.contains (node)) {
201- for (var parameter in parameterList.typeParameters) {
202- _setVariance (parameter , Variance .covariant );
200+ for (var typeParameter in parameterList.typeParameters) {
201+ _setVariance (typeParameter , Variance .covariant );
203202 }
204203 return ;
205204 }
@@ -213,24 +212,24 @@ class VarianceBuilder {
213212
214213 // Not a function type, recover.
215214 if (type == null ) {
216- for (var parameter in parameterList.typeParameters) {
217- _setVariance (parameter , Variance .covariant );
215+ for (var typeParameter in parameterList.typeParameters) {
216+ _setVariance (typeParameter , Variance .covariant );
218217 }
219218 }
220219
221220 _visit.add (node);
222221 try {
223- for (var parameter in parameterList.typeParameters) {
224- var variance = _compute (parameter.declaredElement ! , type);
225- _setVariance (parameter , variance);
222+ for (var typeParameter in parameterList.typeParameters) {
223+ var variance = _compute (typeParameter.declaredFragment ! .element , type);
224+ _setVariance (typeParameter , variance);
226225 }
227226 } finally {
228227 _visit.remove (node);
229228 }
230229 }
231230
232- void _typeAliasElement (TypeAliasElementImpl element) {
233- var node = _linker.getLinkingNode (element);
231+ void _typeAliasElement (TypeAliasElementImpl2 element) {
232+ var node = _linker.getLinkingNode2 (element);
234233 if (node == null ) {
235234 // Not linking.
236235 } else if (node is GenericTypeAliasImpl ) {
@@ -242,23 +241,22 @@ class VarianceBuilder {
242241 }
243242 }
244243
245- void _typeParameters (TypeParameterList ? parameterList) {
244+ void _typeParameters (TypeParameterListImpl ? parameterList) {
246245 if (parameterList == null ) {
247246 return ;
248247 }
249248
250- for (var parameter in parameterList.typeParameters) {
251- var parameterImpl = parameter as TypeParameterImpl ;
252- var varianceKeyword = parameterImpl.varianceKeyword;
249+ for (var typeParameter in parameterList.typeParameters) {
250+ var varianceKeyword = typeParameter.varianceKeyword;
253251 if (varianceKeyword != null ) {
254252 var variance = Variance .fromKeywordString (varianceKeyword.lexeme);
255- _setVariance (parameter , variance);
253+ _setVariance (typeParameter , variance);
256254 }
257255 }
258256 }
259257
260258 static void _setVariance (TypeParameter node, Variance variance) {
261- var element = node.declaredElement as TypeParameterElementImpl ;
259+ var element = node.declaredFragment ! .element as TypeParameterElementImpl2 ;
262260 element.variance = variance;
263261 }
264262}
0 commit comments