Skip to content

Commit 63bb3aa

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate src/generated/exhaustiveness.dart
Change-Id: I13fc2662618f7175649481ace6256f12092a5cdf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409185 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Phil Quitslund <[email protected]>
1 parent e508372 commit 63bb3aa

File tree

1 file changed

+71
-73
lines changed

1 file changed

+71
-73
lines changed

pkg/analyzer/lib/src/generated/exhaustiveness.dart

Lines changed: 71 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
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-
75
import 'package:_fe_analyzer_shared/src/exhaustiveness/dart_template_buffer.dart';
86
import 'package:_fe_analyzer_shared/src/exhaustiveness/exhaustive.dart';
97
import '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;
1715
import 'package:analyzer/dart/analysis/features.dart';
1816
import 'package:analyzer/dart/constant/value.dart';
19-
import 'package:analyzer/dart/element/element.dart';
2017
import 'package:analyzer/dart/element/element2.dart';
2118
import 'package:analyzer/dart/element/nullability_suffix.dart';
2219
import '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.
3532
class 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

9087
class 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

128126
class 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

139137
class 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

240238
class 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

457463
class 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

478476
abstract 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

Comments
 (0)