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/exhaustiveness/dart_template_buffer.dart' ;
86import 'package:_fe_analyzer_shared/src/exhaustiveness/exhaustive.dart' ;
97import 'package:_fe_analyzer_shared/src/exhaustiveness/key.dart' ;
@@ -16,7 +14,6 @@ import 'package:_fe_analyzer_shared/src/type_inference/type_analyzer_operations.
1614 show Variance;
1715import 'package:analyzer/dart/analysis/features.dart' ;
1816import 'package:analyzer/dart/constant/value.dart' ;
19- import 'package:analyzer/dart/element/element.dart' ;
2017import 'package:analyzer/dart/element/element2.dart' ;
2118import 'package:analyzer/dart/element/nullability_suffix.dart' ;
2219import 'package:analyzer/dart/element/type.dart' ;
@@ -33,7 +30,7 @@ import 'package:pub_semver/pub_semver.dart';
3330/// can be written latter into Dart code that considers imports. It also
3431/// accumulates fragments of text, such as syntax `(` , or names of properties.
3532class AnalyzerDartTemplateBuffer
36- implements DartTemplateBuffer <DartObject , FieldElement , DartType > {
33+ implements DartTemplateBuffer <DartObject , FieldElement2 , DartType > {
3734 final List <MissingPatternPart > parts = [];
3835 bool isComplete = true ;
3936
@@ -59,17 +56,17 @@ class AnalyzerDartTemplateBuffer
5956 }
6057
6158 @override
62- void writeEnumValue (FieldElement value, String name) {
63- var enumElement = value.enclosingElement3 ;
64- if (enumElement is ! EnumElement ) {
59+ void writeEnumValue (FieldElement2 value, String name) {
60+ var enumElement = value.enclosingElement2 ;
61+ if (enumElement is ! EnumElement2 ) {
6562 isComplete = false ;
6663 return ;
6764 }
6865
6966 parts.add (
7067 MissingPatternEnumValuePart (
71- enumElement : enumElement,
72- value : value,
68+ enumElement2 : enumElement,
69+ value2 : value,
7370 ),
7471 );
7572 }
@@ -88,72 +85,73 @@ class AnalyzerDartTemplateBuffer
8885}
8986
9087class AnalyzerEnumOperations
91- implements EnumOperations <DartType , EnumElement , FieldElement , DartObject > {
88+ implements
89+ EnumOperations <DartType , EnumElement2 , FieldElement2 , DartObject > {
9290 const AnalyzerEnumOperations ();
9391
9492 @override
95- EnumElement ? getEnumClass (DartType type) {
96- Element ? element = type.element ;
97- if (element is EnumElement ) {
93+ EnumElement2 ? getEnumClass (DartType type) {
94+ var element = type.element3 ;
95+ if (element is EnumElement2 ) {
9896 return element;
9997 }
10098 return null ;
10199 }
102100
103101 @override
104- String getEnumElementName (FieldElement enumField) {
105- return '${enumField .enclosingElement3 . name }.${enumField .name }' ;
102+ String getEnumElementName (FieldElement2 enumField) {
103+ return '${enumField .enclosingElement2 . name3 }.${enumField .name3 }' ;
106104 }
107105
108106 @override
109- Iterable <FieldElement > getEnumElements (EnumElement enumClass) sync * {
110- for (FieldElement field in enumClass.fields ) {
107+ Iterable <FieldElement2 > getEnumElements (EnumElement2 enumClass) sync * {
108+ for (var field in enumClass.fields2 ) {
111109 if (field.isEnumConstant) {
112110 yield field;
113111 }
114112 }
115113 }
116114
117115 @override
118- InterfaceType getEnumElementType (FieldElement enumField) {
116+ InterfaceType getEnumElementType (FieldElement2 enumField) {
119117 return enumField.type as InterfaceType ;
120118 }
121119
122120 @override
123- DartObject ? getEnumElementValue (FieldElement enumField) {
121+ DartObject ? getEnumElementValue (FieldElement2 enumField) {
124122 return enumField.computeConstantValue ();
125123 }
126124}
127125
128126class AnalyzerExhaustivenessCache extends ExhaustivenessCache <DartType ,
129- InterfaceElement , EnumElement , FieldElement , DartObject > {
127+ InterfaceElement2 , EnumElement2 , FieldElement2 , DartObject > {
130128 final TypeSystemImpl typeSystem;
131129
132- AnalyzerExhaustivenessCache (this .typeSystem, LibraryElement enclosingLibrary)
130+ AnalyzerExhaustivenessCache (this .typeSystem, LibraryElement2 enclosingLibrary)
133131 : super (
134132 AnalyzerTypeOperations (typeSystem, enclosingLibrary),
135133 const AnalyzerEnumOperations (),
136134 AnalyzerSealedClassOperations (typeSystem));
137135}
138136
139137class AnalyzerSealedClassOperations
140- implements SealedClassOperations <DartType , InterfaceElement > {
138+ implements SealedClassOperations <DartType , InterfaceElement2 > {
141139 final TypeSystemImpl _typeSystem;
142140
143141 AnalyzerSealedClassOperations (this ._typeSystem);
144142
145143 @override
146- List <InterfaceElement > getDirectSubclasses (InterfaceElement sealedClass) {
147- List <InterfaceElement > subclasses = [];
148- LibraryElement library = sealedClass.library ;
144+ List <InterfaceElement2 > getDirectSubclasses (InterfaceElement2 sealedClass) {
145+ List <InterfaceElement2 > subclasses = [];
146+ var library = sealedClass.library2 ;
149147 outer:
150- for (Element declaration in library.topLevelElements ) {
151- if (declaration is ExtensionTypeElement ) {
148+ for (var declaration in library.children2 ) {
149+ if (declaration is ExtensionTypeElement2 ) {
152150 continue ;
153151 }
154- if (declaration != sealedClass && declaration is InterfaceElement ) {
152+ if (declaration != sealedClass && declaration is InterfaceElement2 ) {
155153 bool checkType (InterfaceType ? type) {
156- if (type? .element == sealedClass) {
154+ if (type? .element3 == sealedClass) {
157155 subclasses.add (declaration);
158156 return true ;
159157 }
@@ -173,7 +171,7 @@ class AnalyzerSealedClassOperations
173171 continue outer;
174172 }
175173 }
176- if (declaration is MixinElement ) {
174+ if (declaration is MixinElement2 ) {
177175 for (var type in declaration.superclassConstraints) {
178176 if (checkType (type)) {
179177 continue outer;
@@ -186,20 +184,20 @@ class AnalyzerSealedClassOperations
186184 }
187185
188186 @override
189- ClassElement ? getSealedClass (DartType type) {
190- Element ? element = type.element ;
191- if (element is ClassElement && element.isSealed) {
187+ ClassElement2 ? getSealedClass (DartType type) {
188+ var element = type.element3 ;
189+ if (element is ClassElement2 && element.isSealed) {
192190 return element;
193191 }
194192 return null ;
195193 }
196194
197195 @override
198196 DartType ? getSubclassAsInstanceOf (
199- InterfaceElement subClass, covariant InterfaceType sealedClassType) {
197+ InterfaceElement2 subClass, covariant InterfaceType sealedClassType) {
200198 InterfaceType thisType = subClass.thisType;
201199 InterfaceType asSealedClass =
202- thisType.asInstanceOf (sealedClassType.element )! ;
200+ thisType.asInstanceOf2 (sealedClassType.element3 )! ;
203201 if (thisType.typeArguments.isEmpty) {
204202 return thisType;
205203 }
@@ -212,10 +210,10 @@ class AnalyzerSealedClassOperations
212210 }
213211 }
214212 if (trivialSubstitution) {
215- Substitution substitution = Substitution .fromPairs (
216- subClass.typeParameters , sealedClassType.typeArguments);
217- for (int i = 0 ; i < subClass.typeParameters .length; i++ ) {
218- DartType ? bound = subClass.typeParameters [i].bound;
213+ Substitution substitution = Substitution .fromPairs2 (
214+ subClass.typeParameters2 , sealedClassType.typeArguments);
215+ for (int i = 0 ; i < subClass.typeParameters2 .length; i++ ) {
216+ DartType ? bound = subClass.typeParameters2 [i].bound;
219217 if (bound != null &&
220218 ! _typeSystem.isSubtypeOf (sealedClassType.typeArguments[i],
221219 substitution.substituteType (bound))) {
@@ -239,7 +237,7 @@ class AnalyzerSealedClassOperations
239237
240238class AnalyzerTypeOperations implements TypeOperations <DartType > {
241239 final TypeSystemImpl _typeSystem;
242- final LibraryElement _enclosingLibrary;
240+ final LibraryElement2 _enclosingLibrary;
243241
244242 final Map <InterfaceType , Map <Key , DartType >> _interfaceFieldTypesCaches = {};
245243
@@ -405,20 +403,28 @@ class AnalyzerTypeOperations implements TypeOperations<DartType> {
405403 for (InterfaceType supertype in type.allSupertypes) {
406404 fieldTypes.addAll (_getInterfaceFieldTypes (supertype));
407405 }
408- for (PropertyAccessorElement accessor in type.accessors) {
409- if (accessor.isPrivate && accessor.library != _enclosingLibrary) {
406+ for (var getter in type.getters) {
407+ if (getter.isPrivate && getter.library2 != _enclosingLibrary) {
408+ continue ;
409+ }
410+ var name = getter.name3;
411+ if (name == null ) {
410412 continue ;
411413 }
412- if (accessor.isGetter && ! accessor .isStatic) {
413- fieldTypes[NameKey (accessor. name)] = accessor .type.returnType;
414+ if (! getter .isStatic) {
415+ fieldTypes[NameKey (name)] = getter .type.returnType;
414416 }
415417 }
416- for (MethodElement method in type.methods) {
417- if (method.isPrivate && method.library != _enclosingLibrary) {
418+ for (var method in type.methods2) {
419+ if (method.isPrivate && method.library2 != _enclosingLibrary) {
420+ continue ;
421+ }
422+ var name = method.name3;
423+ if (name == null ) {
418424 continue ;
419425 }
420426 if (! method.isStatic) {
421- fieldTypes[NameKey (method. name)] = method.type;
427+ fieldTypes[NameKey (name)] = method.type;
422428 }
423429 }
424430 }
@@ -455,24 +461,16 @@ class ExhaustivenessDataForTesting {
455461}
456462
457463class MissingPatternEnumValuePart extends MissingPatternPart {
458- final EnumElement enumElement ;
459- final FieldElement value ;
464+ final EnumElement2 enumElement2 ;
465+ final FieldElement2 value2 ;
460466
461467 MissingPatternEnumValuePart ({
462- required this .enumElement ,
463- required this .value ,
468+ required this .enumElement2 ,
469+ required this .value2 ,
464470 });
465471
466- EnumElement2 get enumElement2 {
467- return (enumElement as EnumElementImpl ).element;
468- }
469-
470- FieldElement2 get value2 {
471- return (value as FieldElementImpl ).element;
472- }
473-
474472 @override
475- String toString () => value.name ;
473+ String toString () => value2.name3 ! ;
476474}
477475
478476abstract class MissingPatternPart {}
@@ -550,7 +548,7 @@ class PatternConverter with SpaceCreator<DartPattern, DartType> {
550548 {required bool nonNull}) {
551549 if (pattern is DeclaredVariablePatternImpl ) {
552550 return createVariableSpace (
553- path, contextType, pattern.declaredElement ! .type,
551+ path, contextType, pattern.declaredElement2 ! .type,
554552 nonNull: nonNull);
555553 } else if (pattern is ObjectPattern ) {
556554 var properties = < String , DartPattern > {};
@@ -562,15 +560,15 @@ class PatternConverter with SpaceCreator<DartPattern, DartType> {
562560 continue ;
563561 }
564562 properties[name] = field.pattern;
565- Element ? element = field.element ;
563+ var element = field.element2 ;
566564 DartType ? extensionPropertyType;
567- if (element is PropertyAccessorElement &&
568- (element.enclosingElement3 is ExtensionElement ||
569- element.enclosingElement3 is ExtensionTypeElement )) {
565+ if (element is PropertyAccessorElement2 &&
566+ (element.enclosingElement2 is ExtensionElement2 ||
567+ element.enclosingElement2 is ExtensionTypeElement2 )) {
570568 extensionPropertyType = element.returnType;
571- } else if (element is ExecutableElement &&
572- (element.enclosingElement3 is ExtensionElement ||
573- element.enclosingElement3 is ExtensionTypeElement )) {
569+ } else if (element is ExecutableElement2 &&
570+ (element.enclosingElement2 is ExtensionElement2 ||
571+ element.enclosingElement2 is ExtensionTypeElement2 )) {
574572 extensionPropertyType = element.type;
575573 }
576574 if (extensionPropertyType != null ) {
@@ -634,7 +632,7 @@ class PatternConverter with SpaceCreator<DartPattern, DartType> {
634632 return createRelationalSpace (path);
635633 } else if (pattern is ListPattern ) {
636634 InterfaceType type = pattern.requiredType as InterfaceType ;
637- assert (type.element == cache.typeSystem.typeProvider.listElement &&
635+ assert (type.element3 == cache.typeSystem.typeProvider.listElement2 &&
638636 type.typeArguments.length == 1 );
639637 DartType elementType = type.typeArguments[0 ];
640638 List <DartPattern > headElements = [];
@@ -661,7 +659,7 @@ class PatternConverter with SpaceCreator<DartPattern, DartType> {
661659 hasExplicitTypeArgument: pattern.typeArguments != null );
662660 } else if (pattern is MapPattern ) {
663661 InterfaceType type = pattern.requiredType as InterfaceType ;
664- assert (type.element == cache.typeSystem.typeProvider.mapElement &&
662+ assert (type.element3 == cache.typeSystem.typeProvider.mapElement2 &&
665663 type.typeArguments.length == 2 );
666664 DartType keyType = type.typeArguments[0 ];
667665 DartType valueType = type.typeArguments[1 ];
@@ -729,8 +727,8 @@ class PatternConverter with SpaceCreator<DartPattern, DartType> {
729727 }
730728 var type = value.type;
731729 if (type is InterfaceType ) {
732- var element = type.element ;
733- if (element is EnumElement ) {
730+ var element = type.element3 ;
731+ if (element is EnumElement2 ) {
734732 return Space (path, cache.getEnumElementStaticType (element, value));
735733 }
736734 }
@@ -778,7 +776,7 @@ class TypeParameterReplacer extends ReplacementVisitor {
778776 if (_variance == Variance .contravariant) {
779777 return _replaceTypeParameterTypes (_typeSystem.typeProvider.neverType);
780778 } else {
781- var element = node.element as TypeParameterElementImpl ;
779+ var element = node.element3 as TypeParameterElementImpl2 ;
782780 var defaultType = element.defaultType! ;
783781 return _replaceTypeParameterTypes (defaultType);
784782 }
0 commit comments