Elements. Use more TypeImpl, and less casts.
Change-Id: I98e3818380cb58d04aa5017a3047bb156ab4c9b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/412500
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 882156a..7659b1e 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -5686,7 +5686,7 @@
final EnumConstantArgumentsImpl? arguments;
@override
- ConstructorElement? constructorElement;
+ ConstructorElementMixin? constructorElement;
/// Initializes a newly created enum constant declaration.
///
@@ -5704,10 +5704,10 @@
@experimental
@override
- ConstructorElement2? get constructorElement2 =>
+ ConstructorElementMixin2? get constructorElement2 =>
constructorElement?.asElement2;
- set constructorElement2(ConstructorElement2? value) {
+ set constructorElement2(ConstructorElementMixin2? value) {
constructorElement = value?.asElement;
}
@@ -10860,10 +10860,10 @@
TypeArgumentListImpl? _typeArguments;
@override
- List<DartType>? typeArgumentTypes;
+ List<TypeImpl>? typeArgumentTypes;
@override
- DartType? staticInvokeType;
+ TypeImpl? staticInvokeType;
/// Initializes a newly created invocation.
InvocationExpressionImpl({
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index aea2c42..dfd4c7d 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -130,7 +130,7 @@
}
@override
- void visitConstantPattern(ConstantPattern node) {
+ void visitConstantPattern(covariant ConstantPatternImpl node) {
var expression = node.expression.unParenthesized;
if (expression.typeOrThrow is InvalidType) {
return;
@@ -517,7 +517,7 @@
/// Returns `false` if we can prove that `constant == value` always returns
/// `false`, taking into account the fact that [constantType] has primitive
/// equality.
- bool _canBeEqual(DartType constantType, DartType valueType) {
+ bool _canBeEqual(TypeImpl constantType, TypeImpl valueType) {
if (constantType is InterfaceType) {
if (valueType is InterfaceTypeImpl) {
if (constantType.isDartCoreInt && valueType.isDartCoreDouble) {
@@ -776,7 +776,7 @@
/// Check if the object [obj] matches the type [type] according to runtime
/// type checking rules.
- bool _runtimeTypeMatch(DartObjectImpl obj, DartType type) {
+ bool _runtimeTypeMatch(DartObjectImpl obj, TypeImpl type) {
return _currentLibrary.typeSystem.runtimeTypeMatch(obj, type);
}
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index e1016ce..056ea78 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -2910,7 +2910,8 @@
if (baseParameter.isInitializingFormal) {
var field = (parameter as FieldFormalParameterElement).field;
if (field != null) {
- var fieldType = field.type;
+ // TODO(scheglov): eliminate this cast
+ var fieldType = field.type as TypeImpl;
if (fieldType != parameter.type) {
// We've already checked that the argument can be assigned to the
// parameter; we also need to check that it can be assigned to
@@ -3192,7 +3193,7 @@
/// type-checking rules.
bool runtimeTypeMatch(
DartObjectImpl obj,
- DartType type,
+ TypeImpl type,
) {
type = type.extensionTypeErasure;
var objType = obj.type;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 38472e9..36d1372 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -1808,6 +1808,9 @@
ConstructorElementImpl2 get baseElement;
@override
+ InterfaceElementImpl2 get enclosingElement2;
+
+ @override
InterfaceTypeImpl get returnType;
}
@@ -1974,10 +1977,9 @@
return null;
}
+ // TODO(scheglov): eliminate this cast
+ superDefault as DartObjectImpl;
var superDefaultType = superDefault.type;
- if (superDefaultType == null) {
- return null;
- }
var typeSystem = library?.typeSystem;
if (typeSystem == null) {
@@ -3745,12 +3747,12 @@
}
@override
- List<FieldElement> get constants {
+ List<FieldElementOrMember> get constants {
return fields.where((field) => field.isEnumConstant).toList();
}
@override
- List<FieldElement2> get constants2 =>
+ List<FieldElement2OrMember> get constants2 =>
constants.map((e) => e.asElement2).toList();
@override
@@ -4328,7 +4330,7 @@
ConstructorElement2 get primaryConstructor2 => primaryConstructor.element;
@override
- FieldElement2 get representation2 => representation.asElement2;
+ FieldElement2OrMember get representation2 => representation.asElement2;
@override
T? accept2<T>(ElementVisitor2<T> visitor) {
@@ -4489,7 +4491,7 @@
}
@override
- GetterElement? get getter2 => firstFragment.getter?.element as GetterElement?;
+ GetterElementImpl? get getter2 => firstFragment.getter?.element;
@override
bool get hasImplicitType => firstFragment.hasImplicitType;
@@ -4533,7 +4535,7 @@
String? get name3 => firstFragment.name2;
@override
- SetterElement? get setter2 => firstFragment.setter?.element as SetterElement?;
+ SetterElementImpl? get setter2 => firstFragment.setter?.element;
@override
TypeImpl get type => firstFragment.type;
@@ -4611,8 +4613,9 @@
FieldFormalParameterElementImpl2(super.firstFragment);
@override
- FieldElement2? get field2 => switch (firstFragment) {
- FieldFormalParameterElementImpl(:FieldFragment field) => field.element,
+ FieldElementImpl2? get field2 => switch (firstFragment) {
+ FieldFormalParameterElementImpl(:FieldElementImpl field) =>
+ field.element,
_ => null,
};
@@ -5940,11 +5943,11 @@
InstanceElementImpl get firstFragment;
@override
- List<GetterElement> get getters2 {
+ List<GetterElement2OrMember> get getters2 {
_readMembers();
return accessors
.where((e) => e.isGetter)
- .map((e) => e.asElement2 as GetterElement?)
+ .map((e) => e.asElement2 as GetterElement2OrMember)
.nonNulls
.toList();
}
@@ -6484,7 +6487,7 @@
}
@override
- PropertyAccessorElement? getSetter(String setterName) {
+ PropertyAccessorElementOrMember? getSetter(String setterName) {
return getSetterFromAccessors(setterName, accessors);
}
@@ -6708,8 +6711,8 @@
}
}
- static PropertyAccessorElement? getSetterFromAccessors(
- String setterName, List<PropertyAccessorElement> accessors) {
+ static PropertyAccessorElementOrMember? getSetterFromAccessors(
+ String setterName, List<PropertyAccessorElementOrMember> accessors) {
// Do we need the check for isSetter below?
if (!setterName.endsWith('=')) {
setterName += '=';
@@ -7443,12 +7446,12 @@
}
@override
- List<GetterElement> get getters {
- var declarations = <GetterElement>{};
+ List<GetterElement2OrMember> get getters {
+ var declarations = <GetterElement2OrMember>{};
for (var unit in units) {
declarations.addAll(unit._accessors
.where((accessor) => accessor.isGetter)
- .map((accessor) => (accessor as GetterFragment).element));
+ .map((accessor) => accessor.element as GetterElement2OrMember));
}
return declarations.toList();
}
@@ -10441,7 +10444,13 @@
/// Common base class for all analyzer-internal classes that implement
/// [PropertyInducingElement2].
abstract class PropertyInducingElement2OrMember
- implements VariableElement2OrMember, PropertyInducingElement2 {}
+ implements VariableElement2OrMember, PropertyInducingElement2 {
+ @override
+ GetterElement2OrMember? get getter2;
+
+ @override
+ SetterElement2OrMember? get setter2;
+}
/// A concrete implementation of a [PropertyInducingElement].
abstract class PropertyInducingElementImpl
@@ -10936,7 +10945,7 @@
}
@override
- FormalParameterElement? get superConstructorParameter2 {
+ FormalParameterElementMixin? get superConstructorParameter2 {
return firstFragment.superConstructorParameter?.asElement2;
}
@@ -11097,7 +11106,8 @@
}
@override
- GetterElement? get getter2 => firstFragment.getter2?.element;
+ GetterElementImpl? get getter2 =>
+ firstFragment.getter2?.element as GetterElementImpl?;
@override
bool get hasImplicitType => firstFragment.hasImplicitType;
@@ -11129,7 +11139,8 @@
String? get name3 => firstFragment.name2;
@override
- SetterElement? get setter2 => firstFragment.setter2?.element;
+ SetterElementImpl? get setter2 =>
+ firstFragment.setter2?.element as SetterElementImpl?;
@override
TypeImpl get type => firstFragment.type;
diff --git a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
index d277536..93dd7ee 100644
--- a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
@@ -399,7 +399,7 @@
void _checkArgumentsNotMatchingBounds({
required SyntacticEntity? errorEntity,
required ErrorReporter? errorReporter,
- required List<DartType> typeArguments,
+ required List<TypeImpl> typeArguments,
}) {
for (int i = 0; i < _typeFormals.length; i++) {
var parameter = _typeFormals[i];
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
index 7a0a97b..01d4535 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart
@@ -83,16 +83,14 @@
/// not `null`, add a new [Conflict] to it.
ExecutableElementOrMember? combineSignatures({
required InterfaceElement targetClass,
- required List<ExecutableElement> candidates,
+ required List<ExecutableElementOrMember> candidates,
required bool doTopMerge,
required Name name,
List<Conflict>? conflicts,
}) {
// If just one candidate, it is always valid.
if (candidates.length == 1) {
- // TODO(paulberry): eliminate this cast by changing the type of the
- // parameter `candidates`.
- return candidates[0] as ExecutableElementOrMember;
+ return candidates[0];
}
var targetLibrary = targetClass.library as LibraryElementImpl;
@@ -100,10 +98,7 @@
var validOverrides = <ExecutableElementOrMember>[];
for (var i = 0; i < candidates.length; i++) {
- // TODO(paulberry): eliminate this cast by changing the type of the
- // parameter `candidates`.
- ExecutableElementOrMember? validOverride =
- candidates[i] as ExecutableElementOrMember;
+ ExecutableElementOrMember? validOverride = candidates[i];
var validOverrideType = validOverride.type;
for (var j = 0; j < candidates.length; j++) {
var candidate = candidates[j];
@@ -136,7 +131,7 @@
}
/// Return the result of [getInherited2] with [type] substitution.
- ExecutableElement? getInherited(InterfaceType type, Name name) {
+ ExecutableElementOrMember? getInherited(InterfaceType type, Name name) {
var rawElement = getInherited2(type.element, name);
if (rawElement == null) {
return null;
@@ -228,7 +223,7 @@
_findMostSpecificFromNamedCandidates(
element,
inheritedMap,
- element is ExtensionTypeElement
+ element is ExtensionTypeElementImpl
? interface.redeclared
: interface.overridden,
doTopMerge: false,
@@ -417,7 +412,8 @@
/// Return all members of mixins, superclasses, and interfaces that a member
/// with the given [name], defined in the [element], would override; or `null`
/// if no members would be overridden.
- List<ExecutableElementOrMember>? getOverridden2(InterfaceElement element, Name name) {
+ List<ExecutableElementOrMember>? getOverridden2(
+ InterfaceElement element, Name name) {
var interface = getInterface(element);
return interface.overridden[name];
}
@@ -535,7 +531,7 @@
List<Conflict> _findMostSpecificFromNamedCandidates(
InterfaceElement targetClass,
Map<Name, ExecutableElement> map,
- Map<Name, List<ExecutableElement>> namedCandidates, {
+ Map<Name, List<ExecutableElementOrMember>> namedCandidates, {
required bool doTopMerge,
}) {
var conflicts = <Conflict>[];
@@ -623,7 +619,8 @@
// }
// So, each mixin always replaces members in the interface.
// And there are individual override conflicts for each mixin.
- var candidatesFromSuperAndMixin = <Name, List<ExecutableElement>>{};
+ var candidatesFromSuperAndMixin =
+ <Name, List<ExecutableElementOrMember>>{};
var mixinConflicts = <Conflict>[];
for (var entry in mixinInterface.map.entries) {
var name = entry.key;
@@ -807,7 +804,7 @@
}
}
- var redeclared = <Name, List<ExecutableElement>>{};
+ var redeclared = <Name, List<ExecutableElementOrMember>>{};
var conflicts = <Conflict>[];
// Add extension type members.
@@ -915,7 +912,7 @@
}
// Ensure unique overridden elements.
- var uniqueRedeclared = <Name, List<ExecutableElement>>{};
+ var uniqueRedeclared = <Name, List<ExecutableElementOrMember>>{};
for (var entry in redeclared.entries) {
var name = entry.key;
var elements = entry.value;
@@ -1267,7 +1264,7 @@
/// The map of names to the signatures from superinterfaces that a member
/// declaration in this extension type redeclares.
- final Map<Name, List<ExecutableElement>> redeclared;
+ final Map<Name, List<ExecutableElementOrMember>> redeclared;
/// The map of names to the signatures from superinterfaces that a member
/// declaration in this extension type redeclares.
@@ -1308,7 +1305,7 @@
/// The map of names to their signature in the interface.
@experimental
- Map<Name, ExecutableElement2> get map2 {
+ Map<Name, ExecutableElement2OrMember> get map2 {
return map.mapValue((element) => element.asElement2);
}
@@ -1420,7 +1417,7 @@
_ExtensionTypeCandidates(this.name);
- List<ExecutableElement> get all {
+ List<ExecutableElementOrMember> get all {
return [...methods, ...getters, ...setters];
}
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 8b3f83f..395605a 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -55,7 +55,7 @@
String get displayName => declaration.displayName;
@override
- InterfaceElement2 get enclosingElement2 => _element2.enclosingElement2;
+ InterfaceElementImpl2 get enclosingElement2 => _element2.enclosingElement2;
@override
InterfaceElement get enclosingElement3 => declaration.enclosingElement3;
@@ -507,7 +507,7 @@
) : super._();
@override
- FieldElement? get field {
+ FieldElementOrMember? get field {
var field = (declaration as FieldFormalParameterElement).field;
if (field == null) {
return null;
@@ -597,7 +597,7 @@
}
@override
- GetterElement? get getter2 {
+ GetterElement2OrMember? get getter2 {
var baseGetter = declaration.getter;
if (baseGetter == null) {
return null;
@@ -656,7 +656,7 @@
}
@override
- SetterElement? get setter2 {
+ SetterElement2OrMember? get setter2 {
var baseSetter = declaration.setter;
if (baseSetter == null) {
return null;
@@ -709,7 +709,8 @@
/// from the [definingType], create a field member representing the given
/// field. Return the member that was created, or the base field if no member
/// was created.
- static FieldElement from(FieldElement field, InterfaceType definingType) {
+ static FieldElementOrMember from(
+ FieldElementOrMember field, InterfaceType definingType) {
if (definingType.typeArguments.isEmpty) {
return field;
}
@@ -1511,8 +1512,8 @@
/// arguments from the [definingType], create an accessor member representing
/// the given accessor. Return the member that was created, or the base
/// accessor if no member was created.
- static PropertyAccessorElement? from(
- PropertyAccessorElement? accessor, InterfaceType definingType) {
+ static PropertyAccessorElementOrMember? from(
+ PropertyAccessorElementOrMember? accessor, InterfaceType definingType) {
if (accessor == null || definingType.typeArguments.isEmpty) {
return accessor;
}
diff --git a/pkg/analyzer/lib/src/dart/element/subtype.dart b/pkg/analyzer/lib/src/dart/element/subtype.dart
index ff61e6b..388702f 100644
--- a/pkg/analyzer/lib/src/dart/element/subtype.dart
+++ b/pkg/analyzer/lib/src/dart/element/subtype.dart
@@ -6,7 +6,6 @@
show Variance;
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
@@ -31,28 +30,25 @@
_objectNone = _typeSystem.objectNone,
_objectQuestion = _typeSystem.objectQuestion;
- /// Return `true` if [T0_] is a subtype of [T1_].
- bool isSubtypeOf(DartType T0_, DartType T1_) {
+ /// Return `true` if [T0] is a subtype of [T1].
+ bool isSubtypeOf(TypeImpl T0, TypeImpl T1) {
// Reflexivity: if `T0` and `T1` are the same type then `T0 <: T1`.
- if (identical(T0_, T1_)) {
+ if (identical(T0, T1)) {
return true;
}
// `_` is treated as a top and a bottom type during inference.
- if (identical(T0_, UnknownInferredType.instance) ||
- identical(T1_, UnknownInferredType.instance)) {
+ if (identical(T0, UnknownInferredType.instance) ||
+ identical(T1, UnknownInferredType.instance)) {
return true;
}
// `InvalidType` is treated as a top and a bottom type.
- if (identical(T0_, InvalidTypeImpl.instance) ||
- identical(T1_, InvalidTypeImpl.instance)) {
+ if (identical(T0, InvalidTypeImpl.instance) ||
+ identical(T1, InvalidTypeImpl.instance)) {
return true;
}
- var T0 = T0_ as TypeImpl;
- var T1 = T1_ as TypeImpl;
-
var T1_nullability = T1.nullabilitySuffix;
var T0_nullability = T0.nullabilitySuffix;
@@ -115,7 +111,7 @@
// Extension types require explicit `Object` implementation.
if (T0 is InterfaceTypeImpl && T0.element3 is ExtensionTypeElement2) {
for (var interface in T0.interfaces) {
- if (isSubtypeOf(interface, T1_)) {
+ if (isSubtypeOf(interface, T1)) {
return true;
}
}
@@ -303,19 +299,19 @@
}
bool _interfaceArguments(
- InterfaceElement2 element,
- InterfaceType subType,
- InterfaceType superType,
+ InterfaceElementImpl2 element,
+ InterfaceTypeImpl subType,
+ InterfaceTypeImpl superType,
) {
- List<TypeParameterElement2> parameters = element.typeParameters2;
- List<DartType> subArguments = subType.typeArguments;
- List<DartType> superArguments = superType.typeArguments;
+ var parameters = element.typeParameters2;
+ var subArguments = subType.typeArguments;
+ var superArguments = superType.typeArguments;
assert(subArguments.length == superArguments.length);
assert(parameters.length == subArguments.length);
- for (int i = 0; i < subArguments.length; i++) {
- var parameter = parameters[i] as TypeParameterElementImpl2;
+ for (var i = 0; i < subArguments.length; i++) {
+ var parameter = parameters[i];
var subArgument = subArguments[i];
var superArgument = superArguments[i];
@@ -344,7 +340,7 @@
}
/// Check that [f] is a subtype of [g].
- bool _isFunctionSubtypeOf(FunctionTypeImpl f, FunctionType g) {
+ bool _isFunctionSubtypeOf(FunctionTypeImpl f, FunctionTypeImpl g) {
var fresh =
_typeSystem.relateTypeParameters2(f.typeParameters, g.typeParameters);
if (fresh == null) {
@@ -440,7 +436,10 @@
return true;
}
- bool _isInterfaceSubtypeOf(InterfaceType subType, InterfaceType superType) {
+ bool _isInterfaceSubtypeOf(
+ InterfaceTypeImpl subType,
+ InterfaceTypeImpl superType,
+ ) {
// Note: we should never reach `_isInterfaceSubtypeOf` with `i2 == Object`,
// because top types are eliminated before `isSubtypeOf` calls this.
// TODO(scheglov): Replace with assert().
@@ -468,7 +467,7 @@
if (identical(interface.element3, superElement)) {
var substitution = Substitution.fromInterfaceType(subType);
var substitutedInterface =
- substitution.substituteType(interface) as InterfaceType;
+ substitution.substituteType(interface) as InterfaceTypeImpl;
return _interfaceArguments(
superElement,
substitutedInterface,
@@ -481,7 +480,7 @@
}
/// Check that [subType] is a subtype of [superType].
- bool _isRecordSubtypeOf(RecordType subType, RecordType superType) {
+ bool _isRecordSubtypeOf(RecordTypeImpl subType, RecordTypeImpl superType) {
var subPositional = subType.positionalFields;
var superPositional = superType.positionalFields;
if (subPositional.length != superPositional.length) {
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index a531e33..881069a 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -217,11 +217,11 @@
};
@override
- List<DartType> get normalParameterTypes =>
+ List<TypeImpl> get normalParameterTypes =>
positionalParameterTypes.sublist(0, requiredPositionalParameterCount);
@override
- List<DartType> get optionalParameterTypes =>
+ List<TypeImpl> get optionalParameterTypes =>
positionalParameterTypes.sublist(requiredPositionalParameterCount);
@override
@@ -645,7 +645,7 @@
@override
List<PropertyAccessorElement> get accessors {
if (_accessors == null) {
- List<PropertyAccessorElement> accessors = element.accessors;
+ var accessors = element.accessors;
var members = <PropertyAccessorElement>[];
for (int i = 0; i < accessors.length; i++) {
members.add(PropertyAccessorMember.from(accessors[i], this)!);
@@ -937,7 +937,7 @@
}
@override
- PropertyAccessorElement? getGetter(String getterName) =>
+ PropertyAccessorElementOrMember? getGetter(String getterName) =>
PropertyAccessorMember.from(element.getGetter(getterName), this);
@override
@@ -999,7 +999,7 @@
}
} else {
var result = inheritance.getInherited(this, nameObj);
- if (result is PropertyAccessorElement) {
+ if (result is PropertyAccessorElementOrMember) {
return result;
}
}
@@ -1036,7 +1036,7 @@
}
@override
- MethodElement? lookUpMethod2(
+ MethodElementOrMember? lookUpMethod2(
String name,
LibraryElement library, {
bool concrete = false,
@@ -1054,7 +1054,7 @@
}
} else {
var result = inheritance.getInherited(this, nameObj);
- if (result is MethodElement) {
+ if (result is MethodElementOrMember) {
return result;
}
}
@@ -1074,7 +1074,7 @@
}
@override
- MethodElement2? lookUpMethod3(
+ MethodElement2OrMember? lookUpMethod3(
String name,
LibraryElement2 library, {
bool concrete = false,
@@ -1109,7 +1109,7 @@
}
} else {
var result = inheritance.getInherited(this, nameObj);
- if (result is PropertyAccessorElement) {
+ if (result is PropertyAccessorElementOrMember) {
return result;
}
}
diff --git a/pkg/analyzer/lib/src/dart/element/type_system.dart b/pkg/analyzer/lib/src/dart/element/type_system.dart
index ab9201b..a3784d7 100644
--- a/pkg/analyzer/lib/src/dart/element/type_system.dart
+++ b/pkg/analyzer/lib/src/dart/element/type_system.dart
@@ -520,8 +520,8 @@
///
/// This does not find extension methods (which are not defined on an
/// interface type); it is meant to find implicit call references.
- FunctionType? getCallMethodType(DartType t) {
- if (t is InterfaceType) {
+ FunctionTypeImpl? getCallMethodType(DartType t) {
+ if (t is InterfaceTypeImpl) {
return t
.lookUpMethod3(MethodElement2.CALL_METHOD_NAME, t.element3.library2)
?.type;
@@ -859,8 +859,11 @@
}
@override
- bool isAssignableTo(DartType fromType, DartType toType,
- {bool strictCasts = false}) {
+ bool isAssignableTo(
+ covariant TypeImpl fromType,
+ covariant TypeImpl toType, {
+ bool strictCasts = false,
+ }) {
// An actual subtype
if (isSubtypeOf(fromType, toType)) {
return true;
@@ -872,7 +875,7 @@
}
// A 'call' method tearoff.
- if (fromType is InterfaceType &&
+ if (fromType is InterfaceTypeImpl &&
!isNullable(fromType) &&
acceptsFunctionType(toType)) {
var callMethodType = getCallMethodType(fromType);
@@ -920,7 +923,7 @@
/// Implements:
/// https://github.com/dart-lang/language
/// See `resources/type-system/subtyping.md#type-equality`
- bool isEqualTo(DartType left, DartType right) {
+ bool isEqualTo(TypeImpl left, TypeImpl right) {
return isSubtypeOf(left, right) && isSubtypeOf(right, left);
}
@@ -1281,7 +1284,10 @@
/// https://github.com/dart-lang/language
/// See `resources/type-system/subtyping.md`
@override
- bool isSubtypeOf(DartType leftType, DartType rightType) {
+ bool isSubtypeOf(
+ covariant TypeImpl leftType,
+ covariant TypeImpl rightType,
+ ) {
return _subtypeHelper.isSubtypeOf(leftType, rightType);
}
@@ -1498,9 +1504,9 @@
/// left operand has the type [leftType] and whose right operand has the type
/// [rightType], given that resolution has so far produced the [currentType].
TypeImpl refineBinaryExpressionType(
- DartType leftType,
+ TypeImpl leftType,
TokenType operator,
- DartType rightType,
+ TypeImpl rightType,
TypeImpl currentType,
MethodElement2? operatorElement) {
if (operatorElement == null) return currentType;
@@ -1514,9 +1520,9 @@
/// [invocationContext], and the context type produced so far by resolution is
/// [currentType].
TypeImpl refineNumericInvocationContext2(
- DartType? targetType,
+ TypeImpl? targetType,
Element2? methodElement,
- DartType invocationContext,
+ TypeImpl invocationContext,
TypeImpl currentType) {
if (targetType != null && methodElement is MethodElement2) {
return _refineNumericInvocationContextNullSafe(
@@ -1534,9 +1540,9 @@
///
// TODO(scheglov): I expected that [methodElement] is [MethodElement].
TypeImpl refineNumericInvocationType(
- DartType targetType,
+ TypeImpl targetType,
Element2? methodElement,
- List<DartType> argumentTypes,
+ List<TypeImpl> argumentTypes,
TypeImpl currentType) {
if (methodElement is MethodElement2) {
return _refineNumericInvocationTypeNullSafe(
@@ -1554,7 +1560,7 @@
/// be used to instantiate both function types, allowing further comparison.
RelatedTypeParameters2? relateTypeParameters2(
List<TypeParameterElementImpl2> typeParameters1,
- List<TypeParameterElement2> typeParameters2,
+ List<TypeParameterElementImpl2> typeParameters2,
) {
if (typeParameters1.length != typeParameters2.length) {
return null;
@@ -1824,9 +1830,9 @@
}
TypeImpl _refineNumericInvocationContextNullSafe(
- DartType targetType,
+ TypeImpl targetType,
MethodElement2 methodElement,
- DartType invocationContext,
+ TypeImpl invocationContext,
TypeImpl currentType) {
// If the method being invoked comes from an extension, don't refine the
// type because we can only make guarantees about methods defined in the
@@ -1926,9 +1932,9 @@
}
TypeImpl _refineNumericInvocationTypeNullSafe(
- DartType targetType,
+ TypeImpl targetType,
MethodElement2 methodElement,
- List<DartType> argumentTypes,
+ List<TypeImpl> argumentTypes,
TypeImpl currentType) {
// If the method being invoked comes from an extension, don't refine the
// type because we can only make guarantees about methods defined in the
diff --git a/pkg/analyzer/lib/src/dart/element/well_bounded.dart b/pkg/analyzer/lib/src/dart/element/well_bounded.dart
index 5acc140..6324e93 100644
--- a/pkg/analyzer/lib/src/dart/element/well_bounded.dart
+++ b/pkg/analyzer/lib/src/dart/element/well_bounded.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
@@ -73,18 +74,18 @@
return _isSuperBounded(type);
}
- TypeBoundedResult _isRegularBounded(DartType type) {
+ TypeBoundedResult _isRegularBounded(TypeImpl type) {
List<TypeArgumentIssue>? issues;
String? elementName;
- List<TypeParameterElement2> typeParameters;
- List<DartType> typeArguments;
+ List<TypeParameterElementImpl2> typeParameters;
+ List<TypeImpl> typeArguments;
var alias = type.alias;
if (alias != null) {
elementName = alias.element2.name3;
typeParameters = alias.element2.typeParameters2;
typeArguments = alias.typeArguments;
- } else if (type is InterfaceType) {
+ } else if (type is InterfaceTypeImpl) {
elementName = type.element3.name3;
typeParameters = type.element3.typeParameters2;
typeArguments = type.typeArguments;
diff --git a/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart b/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart
index 7fef4bf..ae364e2 100644
--- a/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/applicable_extensions.dart
@@ -18,7 +18,7 @@
class InstantiatedExtensionWithMember {
final _NotInstantiatedExtensionWithMember candidate;
final MapSubstitution substitution;
- final DartType extendedType;
+ final TypeImpl extendedType;
InstantiatedExtensionWithMember(
this.candidate,
@@ -71,7 +71,7 @@
R instantiate({
required MapSubstitution substitution,
- required DartType extendedType,
+ required TypeImpl extendedType,
});
}
@@ -87,7 +87,7 @@
@override
InstantiatedExtensionWithMember instantiate({
required MapSubstitution substitution,
- required DartType extendedType,
+ required TypeImpl extendedType,
}) {
return InstantiatedExtensionWithMember(this, substitution, extendedType);
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
index 513792d..a656434 100644
--- a/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart
@@ -116,9 +116,9 @@
}
void _checkForInvalidAssignment(
- DartType writeType,
+ TypeImpl writeType,
Expression right,
- DartType rightType, {
+ TypeImpl rightType, {
required Map<SharedTypeView, NonPromotionReason> Function()? whyNotPromoted,
}) {
if (writeType is! VoidType && _checkForUseOfVoidResult(right)) {
@@ -131,10 +131,10 @@
return;
}
- if (writeType is RecordType &&
+ if (writeType is RecordTypeImpl &&
writeType.positionalFields.length == 1 &&
rightType is! RecordType &&
- right is ParenthesizedExpression) {
+ right is ParenthesizedExpressionImpl) {
var field = writeType.positionalFields.first;
if (_typeSystem.isAssignableTo(field.type, rightType,
strictCasts: strictCasts)) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
index 25aa44a..e88b9f0 100644
--- a/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart
@@ -280,7 +280,7 @@
void _resolveRightOperand(
BinaryExpressionImpl node,
- DartType contextType,
+ TypeImpl contextType,
) {
var left = node.leftOperand;
@@ -317,7 +317,7 @@
}
void _resolveUserDefinable(BinaryExpressionImpl node,
- {required DartType contextType}) {
+ {required TypeImpl contextType}) {
var left = node.leftOperand;
if (left is AugmentedExpressionImpl) {
@@ -354,7 +354,7 @@
void _resolveUserDefinableAugmented(
BinaryExpressionImpl node, {
required AugmentedExpressionImpl left,
- required DartType contextType,
+ required TypeImpl contextType,
}) {
var methodName = node.operator.lexeme;
diff --git a/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart b/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
index fa2bcf0..a1c78f6 100644
--- a/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart
@@ -17,7 +17,7 @@
/// The imposed return type, from the typing context.
/// Might be `null` if an empty typing context.
- final DartType? imposedType;
+ final TypeImpl? imposedType;
/// The context type, computed from [imposedType].
/// Might be `null` if an empty typing context.
diff --git a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
index 8742ef4..8a00bab 100644
--- a/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/constructor_reference_resolver.dart
@@ -5,6 +5,7 @@
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/error/codes.dart';
@@ -31,7 +32,8 @@
var element = node.constructorName.element;
if (element != null && !element.isFactory) {
var enclosingElement = element.enclosingElement2;
- if (enclosingElement is ClassElement2 && enclosingElement.isAbstract) {
+ if (enclosingElement is ClassElementImpl2 &&
+ enclosingElement.isAbstract) {
_resolver.errorReporter.atNode(
node,
CompileTimeErrorCode
diff --git a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
index eca3161..d9112eb 100644
--- a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
@@ -260,7 +260,7 @@
void _checkTypeArgumentsMatchingBounds(
List<TypeParameterElementImpl2> typeParameters,
TypeArgumentList? typeArgumentList,
- List<DartType> typeArgumentTypes,
+ List<TypeImpl> typeArgumentTypes,
Substitution substitution,
) {
if (typeArgumentList != null) {
@@ -333,7 +333,7 @@
/// If the number of explicit type arguments is different than the number
/// of extension's type parameters, or inference fails, returns `dynamic`
/// for all type parameters.
- List<DartType>? _inferTypeArguments(
+ List<TypeImpl>? _inferTypeArguments(
ExtensionOverrideImpl node, TypeImpl receiverType,
{required TypeConstraintGenerationDataForTesting? dataForTesting,
required AstNodeImpl? nodeForTesting}) {
@@ -345,7 +345,7 @@
var arguments = typeArguments.arguments;
if (arguments.length == typeParameters.length) {
if (typeParameters.isEmpty) {
- return const <DartType>[];
+ return const <TypeImpl>[];
}
return arguments.map((a) => a.typeOrThrow).toList();
} else {
@@ -385,7 +385,7 @@
/// Instantiate the extended type of the [extension] to the bounds of the
/// type formals of the extension.
- DartType _instantiateToBounds(ExtensionElement2 extension) {
+ TypeImpl _instantiateToBounds(ExtensionElement2 extension) {
extension as ExtensionElementImpl2;
var typeParameters = extension.typeParameters2;
return Substitution.fromPairs2(
@@ -436,11 +436,11 @@
}
/// Ask the type system for a subtype check.
- bool _isSubtypeOf(DartType type1, DartType type2) =>
+ bool _isSubtypeOf(TypeImpl type1, TypeImpl type2) =>
_typeSystem.isSubtypeOf(type1, type2);
- List<DartType> _listOfDynamic(List<Object?> parameters) {
- return List<DartType>.filled(parameters.length, DynamicTypeImpl.instance);
+ List<TypeImpl> _listOfDynamic(List<Object?> parameters) {
+ return List<TypeImpl>.filled(parameters.length, DynamicTypeImpl.instance);
}
static bool _isCascadeTarget(ExtensionOverride node) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart
index 841e859..03ff427 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart
@@ -193,7 +193,7 @@
_resolve(node, rawType, whyNotPromotedArguments, contextType: contextType);
}
- void _unresolved(FunctionExpressionInvocationImpl node, DartType type,
+ void _unresolved(FunctionExpressionInvocationImpl node, TypeImpl type,
List<WhyNotPromotedGetter> whyNotPromotedArguments,
{required TypeImpl contextType}) {
_setExplicitTypeArgumentTypes(node);
@@ -218,7 +218,7 @@
.map((typeArgument) => typeArgument.typeOrThrow)
.toList();
} else {
- node.typeArgumentTypes = const <DartType>[];
+ node.typeArgumentTypes = const <TypeImpl>[];
}
}
}
diff --git a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
index abee317..44592796 100644
--- a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
@@ -159,7 +159,7 @@
var typeArgumentList = _typeArguments;
var originalType = rawType;
- List<DartType>? typeArgumentTypes;
+ List<TypeImpl>? typeArgumentTypes;
GenericInferrer? inferrer;
Substitution? substitution;
if (_isGenericInferenceDisabled) {
@@ -171,7 +171,7 @@
substitution =
Substitution.fromPairs(rawType.typeFormals, typeArgumentTypes);
} else {
- typeArgumentTypes = const <DartType>[];
+ typeArgumentTypes = const <TypeImpl>[];
}
} else if (typeArgumentList != null) {
if (rawType != null &&
@@ -216,7 +216,7 @@
Substitution.fromPairs(rawType.typeFormals, typeArgumentTypes);
}
} else if (rawType == null || rawType.typeFormals.isEmpty) {
- typeArgumentTypes = const <DartType>[];
+ typeArgumentTypes = const <TypeImpl>[];
} else {
var typeParameters = [for (var tp in rawType.typeFormals) tp.element];
rawType =
@@ -331,7 +331,7 @@
}
List<FormalParameterElement>? _storeResult(
- List<DartType>? typeArgumentTypes, FunctionTypeImpl? invokeType) {
+ List<TypeImpl>? typeArgumentTypes, FunctionTypeImpl? invokeType) {
return invokeType?.formalParameters;
}
}
@@ -424,7 +424,7 @@
@override
List<FormalParameterElement>? _storeResult(
- List<DartType>? typeArgumentTypes, FunctionTypeImpl? invokeType) {
+ List<TypeImpl>? typeArgumentTypes, FunctionTypeImpl? invokeType) {
node.typeArgumentTypes = typeArgumentTypes;
node.staticInvokeType = invokeType ?? DynamicTypeImpl.instance;
return super._storeResult(typeArgumentTypes, invokeType);
diff --git a/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart
index 6c6f492..693df05 100644
--- a/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart
@@ -77,7 +77,7 @@
///
// TODO(scheglov): this is duplicate
void _checkForInvalidAssignmentIncDec(
- PostfixExpression node, Expression operand, DartType type) {
+ PostfixExpressionImpl node, Expression operand, TypeImpl type) {
var operandWriteType = node.writeType!;
if (!_typeSystem.isAssignableTo(type, operandWriteType,
strictCasts: _resolver.analysisOptions.strictCasts)) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart
index 5d6be72..937cc3c 100644
--- a/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart
@@ -99,7 +99,7 @@
///
// TODO(scheglov): this is duplicate
void _checkForInvalidAssignmentIncDec(
- PrefixExpressionImpl node, DartType type) {
+ PrefixExpressionImpl node, TypeImpl type) {
var operandWriteType = node.writeType!;
if (!_typeSystem.isAssignableTo(type, operandWriteType,
strictCasts: _resolver.analysisOptions.strictCasts)) {
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 0c2bccf..fa1bfb4 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -13,7 +13,6 @@
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/scope.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/dart/element/type_provider.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
@@ -1825,7 +1824,7 @@
void _verifyExtensionElementImplements(
ExtensionTypeElementImpl declaredElement,
NamedTypeImpl node,
- DartType type,
+ TypeImpl type,
) {
var typeSystem = _libraryElement.typeSystem;
diff --git a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
index 6e29942..16a1fc7 100644
--- a/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:_fe_analyzer_shared/src/types/shared_type.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
@@ -78,7 +77,7 @@
var expression = node.expression;
var expressionType = expression.typeOrThrow;
- DartType impliedReturnType;
+ TypeImpl impliedReturnType;
if (isYieldEach) {
impliedReturnType = expressionType;
} else if (bodyContext.isSynchronous) {
@@ -124,7 +123,7 @@
// Since the declared return type might have been "dynamic", we need to
// also check that the implied return type is assignable to generic
// Iterable/Stream.
- DartType requiredReturnType;
+ TypeImpl requiredReturnType;
if (bodyContext.isSynchronous) {
requiredReturnType = _typeProvider.iterableDynamicType;
} else {
diff --git a/pkg/analyzer/lib/src/error/bool_expression_verifier.dart b/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
index 7d26f0f..4052ed8 100644
--- a/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
+++ b/pkg/analyzer/lib/src/error/bool_expression_verifier.dart
@@ -5,7 +5,6 @@
import 'package:_fe_analyzer_shared/src/flow_analysis/flow_analysis.dart';
import 'package:_fe_analyzer_shared/src/types/shared_type.dart';
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
@@ -20,7 +19,7 @@
final ErrorReporter _errorReporter;
final NullableDereferenceVerifier _nullableDereferenceVerifier;
- final InterfaceType _boolType;
+ final InterfaceTypeImpl _boolType;
BoolExpressionVerifier({
required ResolverVisitor resolver,
diff --git a/pkg/analyzer/lib/src/error/correct_override.dart b/pkg/analyzer/lib/src/error/correct_override.dart
index fd76e89..c366c9b 100644
--- a/pkg/analyzer/lib/src/error/correct_override.dart
+++ b/pkg/analyzer/lib/src/error/correct_override.dart
@@ -21,7 +21,7 @@
final TypeSystemImpl _typeSystem;
final ExecutableElement2OrMember _thisMember;
- FunctionType? _thisTypeForSubtype;
+ FunctionTypeImpl? _thisTypeForSubtype;
final DiagnosticFactory _diagnosticFactory = DiagnosticFactory();
@@ -35,7 +35,7 @@
/// Return `true` if [_thisMember] is a correct override of [superMember].
bool isCorrectOverrideOf({
- required ExecutableElement2 superMember,
+ required ExecutableElement2OrMember superMember,
}) {
var superType = superMember.type;
return _typeSystem.isSubtypeOf(_thisTypeForSubtype!, superType);
@@ -44,7 +44,7 @@
/// If [_thisMember] is not a correct override of [superMember], report the
/// error.
void verify({
- required ExecutableElement2 superMember,
+ required ExecutableElement2OrMember superMember,
required ErrorReporter errorReporter,
required SyntacticEntity errorNode,
required ErrorCode errorCode,
@@ -100,10 +100,10 @@
final AnalysisSessionImpl _session;
final TypeSystemImpl _typeSystem;
- final ExecutableElement2 _thisMember;
+ final ExecutableElement2OrMember _thisMember;
CovariantParametersVerifier({
- required ExecutableElement2 thisMember,
+ required ExecutableElement2OrMember thisMember,
}) : _session = thisMember.library2.session as AnalysisSessionImpl,
_typeSystem = thisMember.library2.typeSystem as TypeSystemImpl,
_thisMember = thisMember;
@@ -159,8 +159,8 @@
return superMembers;
}
- Map<FormalParameterElement, List<_SuperParameter>> _superParameters() {
- var result = <FormalParameterElement, List<_SuperParameter>>{};
+ Map<FormalParameterElementMixin, List<_SuperParameter>> _superParameters() {
+ var result = <FormalParameterElementMixin, List<_SuperParameter>>{};
List<_SuperMember>? superMembers;
var parameters = _thisMember.formalParameters;
@@ -267,7 +267,7 @@
class _SuperParameter {
final FormalParameterElement element;
- final DartType type;
+ final TypeImpl type;
_SuperParameter(this.element, this.type);
diff --git a/pkg/analyzer/lib/src/error/dead_code_verifier.dart b/pkg/analyzer/lib/src/error/dead_code_verifier.dart
index c87361a..f976e01 100644
--- a/pkg/analyzer/lib/src/error/dead_code_verifier.dart
+++ b/pkg/analyzer/lib/src/error/dead_code_verifier.dart
@@ -6,12 +6,12 @@
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element2.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/source/source_range.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/dart/resolver/flow_analysis_visitor.dart';
import 'package:analyzer/src/dart/resolver/scope.dart';
@@ -378,7 +378,7 @@
}
}
- void verifyCatchClause(CatchClause node) {
+ void verifyCatchClause(CatchClauseImpl node) {
var verifier = _catchClausesVerifiers.last;
if (verifier._done) return;
@@ -506,7 +506,7 @@
final List<CatchClause> catchClauses;
bool _done = false;
- final List<DartType> _visitedTypes = <DartType>[];
+ final List<TypeImpl> _visitedTypes = [];
_CatchClausesVerifier(
this._typeSystem,
@@ -514,7 +514,7 @@
this.catchClauses,
);
- void nextCatchClause(CatchClause catchClause) {
+ void nextCatchClause(CatchClauseImpl catchClause) {
var currentType = catchClause.exceptionType?.type;
// Found catch clause that doesn't have an exception type.
diff --git a/pkg/analyzer/lib/src/error/error_handler_verifier.dart b/pkg/analyzer/lib/src/error/error_handler_verifier.dart
index d9b3cb3..f138efb 100644
--- a/pkg/analyzer/lib/src/error/error_handler_verifier.dart
+++ b/pkg/analyzer/lib/src/error/error_handler_verifier.dart
@@ -9,6 +9,7 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
+import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
@@ -94,7 +95,7 @@
if (callbackType == null) {
return;
}
- if (callbackType is FunctionType) {
+ if (callbackType is FunctionTypeImpl) {
// TODO(srawlins): Also check return type of the 'onError' named
// argument to [Future<T>.then].
_checkErrorHandlerFunctionType(
@@ -117,7 +118,7 @@
if (callbackType == null) {
return;
}
- if (callbackType is FunctionType) {
+ if (callbackType is FunctionTypeImpl) {
_checkErrorHandlerFunctionType(
callback, callbackType, _typeProvider.voidType,
checkFirstParameterType: callback is FunctionExpression);
@@ -139,7 +140,7 @@
if (callbackType == null) {
return;
}
- if (callbackType is FunctionType) {
+ if (callbackType is FunctionTypeImpl) {
_checkErrorHandlerFunctionType(
callback, callbackType, _typeProvider.voidType,
checkFirstParameterType: callback.expression is FunctionExpression);
@@ -160,7 +161,7 @@
if (callbackType == null) {
return;
}
- if (callbackType is FunctionType) {
+ if (callbackType is FunctionTypeImpl) {
_checkErrorHandlerFunctionType(
callback, callbackType, _typeProvider.voidType,
checkFirstParameterType: callback is FunctionExpression);
@@ -178,7 +179,7 @@
/// Certain error handlers are allowed to specify a different type for their
/// first parameter.
void _checkErrorHandlerFunctionType(Expression expression,
- FunctionType expressionType, DartType expectedFunctionReturnType,
+ FunctionTypeImpl expressionType, DartType expectedFunctionReturnType,
{bool checkFirstParameterType = true}) {
void report() {
_errorReporter.atNode(
@@ -223,7 +224,7 @@
var expectedReturnType = _typeProvider.futureOrType(targetFutureType);
if (callback is FunctionExpressionImpl) {
// TODO(migration): should be FunctionType, not nullable
- var callbackType = callback.staticType as FunctionType;
+ var callbackType = callback.staticType as FunctionTypeImpl;
_checkErrorHandlerFunctionType(
callback, callbackType, expectedReturnType);
var catchErrorOnErrorExecutable = EnclosingExecutableContext(
@@ -237,7 +238,7 @@
callback.body.accept(returnStatementVerifier);
} else {
var callbackType = callback.staticType;
- if (callbackType is FunctionType) {
+ if (callbackType is FunctionTypeImpl) {
_checkReturnType(expectedReturnType, callbackType.returnType, callback);
_checkErrorHandlerFunctionType(
callback, callbackType, expectedReturnType);
@@ -249,7 +250,7 @@
}
void _checkReturnType(
- DartType expectedType, DartType functionReturnType, Expression callback) {
+ TypeImpl expectedType, TypeImpl functionReturnType, Expression callback) {
if (!_typeSystem.isAssignableTo(functionReturnType, expectedType,
strictCasts: _strictCasts)) {
_errorReporter.atNode(
diff --git a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
index 79fff63..398e21e 100644
--- a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
+++ b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart
@@ -3,9 +3,10 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/element/element2.dart';
-import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
+import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart';
@@ -22,18 +23,19 @@
}) : _typeSystem = typeSystem,
_errorReporter = errorReporter;
- void checkExtension(ExtensionElement2 element) {
+ void checkExtension(ExtensionElementImpl2 element) {
for (var getter in element.getters2) {
_checkLocalGetter(getter);
}
}
- void checkExtensionType(ExtensionTypeElement2 element, Interface interface) {
+ void checkExtensionType(
+ ExtensionTypeElementImpl2 element, Interface interface) {
checkInterface(element, interface);
checkStaticGetters(element.getters2);
}
- void checkInterface(InterfaceElement2 element, Interface interface) {
+ void checkInterface(InterfaceElementImpl2 element, Interface interface) {
var libraryUri = element.library2.uri;
var interfaceMap = interface.map2;
@@ -50,7 +52,7 @@
if (!_typeSystem.isSubtypeOf(getterType, setterType)) {
Element2 errorElement;
if (getter.enclosingElement2 == element) {
- if (element is ExtensionTypeElement2 &&
+ if (element is ExtensionTypeElementImpl2 &&
element.representation2.getter2 == getter) {
errorElement = setter;
} else {
@@ -85,7 +87,7 @@
}
}
- void checkStaticGetters(List<GetterElement> getters) {
+ void checkStaticGetters(List<GetterElement2OrMember> getters) {
for (var getter in getters) {
if (getter.isStatic) {
_checkLocalGetter(getter);
@@ -93,7 +95,7 @@
}
}
- void _checkLocalGetter(GetterElement getter) {
+ void _checkLocalGetter(GetterElement2OrMember getter) {
var name = getter.name3;
if (name == null) {
return;
@@ -120,12 +122,12 @@
}
/// Return the return type of the [getter].
- static DartType _getGetterType(GetterElement getter) {
+ static TypeImpl _getGetterType(GetterElement2OrMember getter) {
return getter.returnType;
}
/// Return the type of the first parameter of the [setter].
- static DartType? _getSetterType(SetterElement setter) {
+ static TypeImpl? _getSetterType(SetterElement2OrMember setter) {
var parameters = setter.formalParameters;
if (parameters.isNotEmpty) {
return parameters[0].type;
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index c151e6f..8f72ae4 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -297,7 +297,7 @@
GetterSetterTypesVerifier(
typeSystem: typeSystem,
errorReporter: reporter,
- ).checkInterface(fragment.asElement2, interface);
+ ).checkInterface((fragment as InterfaceElementImpl).asElement2, interface);
if (declaration is ClassElement && !declaration.isAbstract ||
declaration is EnumElement) {
diff --git a/pkg/analyzer/lib/src/error/literal_element_verifier.dart b/pkg/analyzer/lib/src/error/literal_element_verifier.dart
index 59aeddb..b96037a 100644
--- a/pkg/analyzer/lib/src/error/literal_element_verifier.dart
+++ b/pkg/analyzer/lib/src/error/literal_element_verifier.dart
@@ -51,7 +51,7 @@
/// Check that the given [type] is assignable to the [elementType], otherwise
/// report the list or set error on the [errorNode].
- void _checkAssignableToElementType(DartType type, AstNode errorNode) {
+ void _checkAssignableToElementType(TypeImpl type, AstNode errorNode) {
var elementType = this.elementType;
if (!typeSystem.isAssignableTo(type, elementType!,
diff --git a/pkg/analyzer/lib/src/error/return_type_verifier.dart b/pkg/analyzer/lib/src/error/return_type_verifier.dart
index aae43ae..1a06e47 100644
--- a/pkg/analyzer/lib/src/error/return_type_verifier.dart
+++ b/pkg/analyzer/lib/src/error/return_type_verifier.dart
@@ -3,12 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_provider.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
@@ -82,7 +82,7 @@
return;
}
- void checkElement(ClassElement2 expectedElement, ErrorCode errorCode) {
+ void checkElement(ClassElementImpl2 expectedElement, ErrorCode errorCode) {
void reportError() {
enclosingExecutable.hasLegalReturnType = false;
_errorReporter.atNode(
@@ -291,8 +291,8 @@
);
}
- bool _isLegalReturnType(ClassElement2 expectedElement) {
- DartType returnType = enclosingExecutable.returnType;
+ bool _isLegalReturnType(ClassElementImpl2 expectedElement) {
+ var returnType = enclosingExecutable.returnType;
//
// When checking an async/sync*/async* method, we know the exact type
// that will be returned (e.g. Future, Iterable, or Stream).
diff --git a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
index 32dff3f..8d6ff67 100644
--- a/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
+++ b/pkg/analyzer/lib/src/error/type_arguments_verifier.dart
@@ -13,6 +13,7 @@
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/extensions.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart';
@@ -34,12 +35,12 @@
TypeSystemImpl get _typeSystem =>
_libraryElement.typeSystem as TypeSystemImpl;
- void checkConstructorReference(ConstructorReference node) {
+ void checkConstructorReference(ConstructorReferenceImpl node) {
var classElement = node.constructorName.type.element2;
- List<TypeParameterElement2> typeParameters;
- if (classElement is TypeAliasElement2) {
+ List<TypeParameterElementImpl2> typeParameters;
+ if (classElement is TypeAliasElementImpl2) {
typeParameters = classElement.typeParameters2;
- } else if (classElement is InterfaceElement2) {
+ } else if (classElement is InterfaceElementImpl2) {
typeParameters = classElement.typeParameters2;
} else {
return;
@@ -99,7 +100,7 @@
}
}
- void checkEnumConstantDeclaration(EnumConstantDeclaration node) {
+ void checkEnumConstantDeclaration(EnumConstantDeclarationImpl node) {
var constructorElement = node.constructorElement2;
if (constructorElement == null) {
return;
@@ -293,9 +294,9 @@
return;
}
- List<TypeParameterElement2> typeParameters;
+ List<TypeParameterElementImpl2> typeParameters;
String? elementName;
- List<DartType> typeArguments;
+ List<TypeImpl> typeArguments;
var alias = type.alias;
if (alias != null) {
elementName = alias.element2.name3;
@@ -329,7 +330,7 @@
var typeArgument = typeArguments[i];
- if (typeArgument is FunctionType &&
+ if (typeArgument is FunctionTypeImpl &&
typeArgument.typeParameters.isNotEmpty) {
if (!_libraryElement.featureSet.isEnabled(Feature.generic_metadata)) {
_errorReporter.atNode(
@@ -421,7 +422,7 @@
// Prepare type arguments for checking for super-bounded.
var invertedType = _typeSystem.replaceTopAndBottom(type);
- List<DartType> invertedTypeArguments;
+ List<TypeImpl> invertedTypeArguments;
var invertedAlias = invertedType.alias;
if (invertedAlias != null) {
invertedTypeArguments = invertedAlias.typeArguments;
@@ -499,9 +500,9 @@
// <TFrom, TTo extends Iterable<TFrom>>
// <T extends Cloneable<T>>
//
- DartType argType = typeArgs[i];
+ var argType = typeArgs[i];
- if (argType is FunctionType && argType.typeParameters.isNotEmpty) {
+ if (argType is FunctionTypeImpl && argType.typeParameters.isNotEmpty) {
if (!_libraryElement.featureSet.isEnabled(Feature.generic_metadata)) {
_errorReporter.atNode(
typeArgumentList[i],
diff --git a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
index 935a8c0..bba1e30 100644
--- a/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
+++ b/pkg/analyzer/lib/src/generated/error_detection_helpers.dart
@@ -41,8 +41,8 @@
/// argument.
void checkForArgumentTypeNotAssignable(
Expression expression,
- DartType expectedStaticType,
- DartType actualStaticType,
+ TypeImpl expectedStaticType,
+ TypeImpl actualStaticType,
ErrorCode errorCode,
{Map<SharedTypeView, NonPromotionReason> Function()? whyNotPromoted}) {
if (expectedStaticType is! VoidType &&
@@ -73,8 +73,8 @@
void checkForAssignableExpressionAtType(
Expression expression,
- DartType actualStaticType,
- DartType expectedStaticType,
+ TypeImpl actualStaticType,
+ TypeImpl expectedStaticType,
ErrorCode errorCode,
{Map<SharedTypeView, NonPromotionReason> Function()? whyNotPromoted}) {
if (expectedStaticType is! VoidType &&
@@ -94,7 +94,7 @@
return node;
}
- if (expectedStaticType is RecordType &&
+ if (expectedStaticType is RecordTypeImpl &&
expectedStaticType.positionalFields.length == 1 &&
actualStaticType is! RecordType &&
expression is ParenthesizedExpression) {
@@ -111,8 +111,8 @@
}
if (errorCode == CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE) {
var additionalInfo = <String>[];
- if (expectedStaticType is RecordType &&
- actualStaticType is RecordType) {
+ if (expectedStaticType is RecordTypeImpl &&
+ actualStaticType is RecordTypeImpl) {
var actualPositionalFields = actualStaticType.positionalFields.length;
var expectedPositionalFields =
expectedStaticType.positionalFields.length;
@@ -169,16 +169,17 @@
/// See [CompileTimeErrorCode.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE], and
/// [CompileTimeErrorCode.FIELD_INITIALIZER_NOT_ASSIGNABLE].
void checkForFieldInitializerNotAssignable(
- ConstructorFieldInitializer initializer, FieldElement2 fieldElement,
+ ConstructorFieldInitializerImpl initializer,
+ FieldElement2OrMember fieldElement,
{required bool isConstConstructor,
required Map<SharedTypeView, NonPromotionReason> Function()?
whyNotPromoted}) {
// prepare field type
- DartType fieldType = fieldElement.type;
+ var fieldType = fieldElement.type;
// prepare expression type
Expression expression = initializer.expression;
// test the static type of the expression
- DartType staticType = expression.typeOrThrow;
+ var staticType = expression.typeOrThrow;
if (typeSystem.isAssignableTo(staticType, fieldType,
strictCasts: strictCasts)) {
if (fieldType is! VoidType) {
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 9182bbd..8779e9e 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -168,7 +168,7 @@
final CompilationUnitElementImpl _currentUnit;
/// The type representing the type 'int'.
- late final InterfaceType _intType;
+ late final InterfaceTypeImpl _intType;
/// The options for verification.
final AnalysisOptions options;
@@ -217,7 +217,7 @@
/// The class containing the AST nodes being visited, or `null` if we are not
/// in the scope of a class.
- InterfaceElement2? _enclosingClass;
+ InterfaceElementImpl2? _enclosingClass;
/// The element of the extension being visited, or `null` if we are not
/// in the scope of an extension.
@@ -628,13 +628,13 @@
}
@override
- void visitConstructorReference(ConstructorReference node) {
+ void visitConstructorReference(covariant ConstructorReferenceImpl node) {
_typeArgumentsVerifier.checkConstructorReference(node);
_checkForInvalidGenerativeConstructorReference(node.constructorName);
}
@override
- void visitDefaultFormalParameter(DefaultFormalParameter node) {
+ void visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
var defaultValue = node.defaultValue;
if (defaultValue != null) {
checkForAssignableExpressionAtType(
@@ -649,7 +649,8 @@
}
@override
- void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
+ void visitEnumConstantDeclaration(
+ covariant EnumConstantDeclarationImpl node) {
var element = node.declaredElement as FieldElementImpl;
_checkAugmentations(
@@ -1332,7 +1333,7 @@
}
@override
- void visitPostfixExpression(PostfixExpression node) {
+ void visitPostfixExpression(covariant PostfixExpressionImpl node) {
var operand = node.operand;
if (node.operator.type == TokenType.BANG) {
checkForUseOfVoidResult(node);
@@ -1356,9 +1357,9 @@
}
@override
- void visitPrefixExpression(PrefixExpression node) {
- TokenType operatorType = node.operator.type;
- Expression operand = node.operand;
+ void visitPrefixExpression(covariant PrefixExpressionImpl node) {
+ var operatorType = node.operator.type;
+ var operand = node.operand;
if (operatorType != TokenType.BANG) {
if (operatorType.isIncrementOperator) {
_checkForAssignmentToFinal(operand);
@@ -1705,7 +1706,7 @@
void _checkAugmentationTypeParameters({
required Token nameToken,
required TypeParameterList? typeParameterList,
- required List<TypeParameterElement> declarationTypeParameters,
+ required List<TypeParameterElementImpl> declarationTypeParameters,
}) {
if (declarationTypeParameters.isEmpty) {
if (typeParameterList != null) {
@@ -1897,7 +1898,7 @@
InterfaceElementImpl declarationElement,
NamedCompilationUnitMember node,
NamedType? superclass,
- WithClause? withClause,
+ WithClauseImpl? withClause,
ImplementsClause? implementsClause) {
// Only check for all of the inheritance logic around clauses if there
// isn't an error code such as "Cannot extend double" already on the
@@ -1996,7 +1997,7 @@
///
/// See [CompileTimeErrorCode.MIXIN_CLASS_DECLARES_CONSTRUCTOR],
/// [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT].
- bool _checkForAllMixinErrorCodes(WithClause? withClause) {
+ bool _checkForAllMixinErrorCodes(WithClauseImpl? withClause) {
if (withClause == null) {
return false;
}
@@ -2005,7 +2006,7 @@
for (int mixinNameIndex = 0;
mixinNameIndex < withClause.mixinTypes.length;
mixinNameIndex++) {
- NamedType mixinName = withClause.mixinTypes[mixinNameIndex];
+ var mixinName = withClause.mixinTypes[mixinNameIndex];
DartType mixinType = mixinName.typeOrThrow;
if (mixinType is InterfaceType) {
mixinTypeIndex++;
@@ -2048,7 +2049,7 @@
/// Check for errors related to the redirected constructors.
void _checkForAllRedirectConstructorErrorCodes(
- ConstructorDeclaration declaration) {
+ ConstructorDeclarationImpl declaration) {
// Prepare redirected constructor node
var redirectedConstructor = declaration.redirectedConstructor;
if (redirectedConstructor == null) {
@@ -2076,12 +2077,12 @@
}
return;
}
- FunctionType redirectedType = redirectedElement.type;
- DartType redirectedReturnType = redirectedType.returnType;
+ var redirectedType = redirectedElement.type;
+ var redirectedReturnType = redirectedType.returnType;
// Report specific problem when return type is incompatible
- FunctionType constructorType = declaration.declaredFragment!.element.type;
- DartType constructorReturnType = constructorType.returnType;
+ var constructorType = declaration.declaredFragment!.element.type;
+ var constructorReturnType = constructorType.returnType;
if (!typeSystem.isAssignableTo(redirectedReturnType, constructorReturnType,
strictCasts: strictCasts)) {
errorReporter.atNode(
@@ -3162,8 +3163,8 @@
}
// The type of the loop variable.
- DartType variableType;
- if (variableElement is VariableElement2) {
+ TypeImpl variableType;
+ if (variableElement is VariableElementImpl2) {
variableType = variableElement.type;
} else {
return false;
@@ -3192,7 +3193,7 @@
return false;
}
- DartType? sequenceElementType;
+ TypeImpl? sequenceElementType;
{
var sequenceElement = awaitKeyword != null
? _typeProvider.streamElement
@@ -3935,7 +3936,7 @@
/// the argument value is implicit.
///
/// See [CompileTimeErrorCode.ARGUMENT_TYPE_NOT_ASSIGNABLE].
- void _checkForIntNotAssignable(Expression argument) {
+ void _checkForIntNotAssignable(ExpressionImpl argument) {
var parameterElement = argument.correspondingParameter;
var parameterType = parameterElement?.type;
if (parameterType != null) {
@@ -4178,7 +4179,7 @@
}
}
- void _checkForMainFunction2(FunctionDeclaration functionDeclaration) {
+ void _checkForMainFunction2(FunctionDeclarationImpl functionDeclaration) {
if (functionDeclaration.name.lexeme != 'main') {
return;
}
@@ -4429,8 +4430,8 @@
/// the [mixinIndex] position in the mixins list are satisfied by the
/// [_enclosingClass], or a previous mixin.
bool _checkForMixinSuperclassConstraints(
- int mixinIndex, NamedType mixinName) {
- InterfaceType mixinType = mixinName.type as InterfaceType;
+ int mixinIndex, NamedTypeImpl mixinName) {
+ var mixinType = mixinName.type as InterfaceTypeImpl;
for (var constraint in mixinType.superclassConstraints) {
var superType = _enclosingClass!.supertype as InterfaceTypeImpl;
superType = superType.withNullability(NullabilitySuffix.none);
@@ -5758,7 +5759,7 @@
return;
}
var element = parameter.declaredFragment?.element;
- if (element is FieldFormalParameterElement2) {
+ if (element is FieldFormalParameterElementImpl2) {
var fieldElement = element.field2;
if (fieldElement == null || fieldElement.isSynthetic) {
errorReporter.atNode(
@@ -5768,9 +5769,9 @@
);
} else {
var parameterElement = parameter.declaredFragment?.element;
- if (parameterElement is FieldFormalParameterElement2) {
- DartType declaredType = parameterElement.type;
- DartType fieldType = fieldElement.type;
+ if (parameterElement is FieldFormalParameterElementImpl2) {
+ var declaredType = parameterElement.type;
+ var fieldType = fieldElement.type;
if (fieldElement.isSynthetic) {
errorReporter.atNode(
parameter,
@@ -5900,9 +5901,7 @@
void _checkForWrongTypeParameterVarianceInField(FieldDeclaration node) {
if (_enclosingClass != null) {
for (var typeParameter in _enclosingClass!.asElement.typeParameters) {
- // TODO(kallentu): : Clean up TypeParameterElementImpl casting once
- // variance is added to the interface.
- if (!(typeParameter as TypeParameterElementImpl).isLegacyCovariant) {
+ if (!typeParameter.isLegacyCovariant) {
var fields = node.fields;
var fieldElement = fields.variables.first.declaredElement!;
var fieldName = fields.variables.first.name;
@@ -5930,9 +5929,7 @@
}
for (var typeParameter in _enclosingClass!.asElement.typeParameters) {
- // TODO(kallentu): : Clean up TypeParameterElementImpl casting once
- // variance is added to the interface.
- if ((typeParameter as TypeParameterElementImpl).isLegacyCovariant) {
+ if (typeParameter.isLegacyCovariant) {
continue;
}
@@ -5980,12 +5977,8 @@
void checkOne(DartType? superInterface) {
if (superInterface != null) {
for (var typeParameter in _enclosingClass!.asElement.typeParameters) {
- // TODO(kallentu): : Clean up TypeParameterElementImpl casting once
- // variance is added to the interface.
- var typeParameterElementImpl =
- typeParameter as TypeParameterElementImpl;
var superVariance =
- typeParameterElementImpl.computeVarianceInType(superInterface);
+ typeParameter.computeVarianceInType(superInterface);
// Let `D` be a class or mixin declaration, let `S` be a direct
// superinterface of `D`, and let `X` be a type parameter declared by
// `D`.
@@ -5995,16 +5988,15 @@
// contravariant or unrelated position.
// If `X` is an `inout` type parameter, it can occur in `S` in any
// position.
- if (!superVariance
- .greaterThanOrEqual(typeParameterElementImpl.variance)) {
- if (!typeParameterElementImpl.isLegacyCovariant) {
+ if (!superVariance.greaterThanOrEqual(typeParameter.variance)) {
+ if (!typeParameter.isLegacyCovariant) {
errorReporter.atElement(
typeParameter,
CompileTimeErrorCode
.WRONG_EXPLICIT_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE,
arguments: [
typeParameter.name,
- typeParameterElementImpl.variance.keyword,
+ typeParameter.variance.keyword,
superVariance.keyword,
superInterface,
],
diff --git a/pkg/analyzer/lib/src/generated/ffi_verifier.dart b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
index 97a4833..27c4e89 100644
--- a/pkg/analyzer/lib/src/generated/ffi_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/ffi_verifier.dart
@@ -118,7 +118,7 @@
{required this.strictCasts});
@override
- void visitClassDeclaration(ClassDeclaration node) {
+ void visitClassDeclaration(covariant ClassDeclarationImpl node) {
inCompound = false;
compound = null;
// Only the Allocator, Opaque and Struct class may be extended.
@@ -248,9 +248,10 @@
}
@override
- void visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+ void visitFunctionExpressionInvocation(
+ covariant FunctionExpressionInvocationImpl node) {
var element = node.element;
- if (element is MethodElement2) {
+ if (element is MethodElement2OrMember) {
var enclosingElement = element.enclosingElement2;
if (enclosingElement.isAllocatorExtension &&
element.name3 == _allocateExtensionMethodName) {
@@ -261,7 +262,7 @@
}
@override
- void visitIndexExpression(IndexExpression node) {
+ void visitIndexExpression(covariant IndexExpressionImpl node) {
var element = node.element;
if (element is MethodElement2) {
var enclosingElement = element.enclosingElement2;
@@ -334,7 +335,7 @@
@override
void visitMethodInvocation(covariant MethodInvocationImpl node) {
var element = node.methodName.element;
- if (element is MethodElement2) {
+ if (element is MethodElement2OrMember) {
var enclosingElement = element.enclosingElement2;
if (enclosingElement.isPointer) {
if (element.name3 == 'fromFunction') {
@@ -375,7 +376,7 @@
}
@override
- void visitPrefixedIdentifier(PrefixedIdentifier node) {
+ void visitPrefixedIdentifier(covariant PrefixedIdentifierImpl node) {
var element = node.element;
if (element != null) {
var enclosingElement = element.enclosingElement2;
@@ -394,7 +395,7 @@
}
@override
- void visitPropertyAccess(PropertyAccess node) {
+ void visitPropertyAccess(covariant PropertyAccessImpl node) {
var element = node.propertyName.element;
if (element != null) {
var enclosingElement = element.enclosingElement2;
@@ -429,7 +430,7 @@
super.visitTopLevelVariableDeclaration(node);
}
- DartType? _canonicalFfiTypeForDartType(DartType dartType) {
+ TypeImpl? _canonicalFfiTypeForDartType(TypeImpl dartType) {
if (dartType.isPointer || dartType.isCompoundSubtype || dartType.isArray) {
return dartType;
} else {
@@ -550,13 +551,13 @@
Token errorToken,
Element2 declarationElement,
NodeList<Annotation> metadata,
- DartType ffiSignature,
+ TypeImpl ffiSignature,
DartObject annotationValue,
bool allowVariableLength,
) {
- DartType type;
+ TypeImpl type;
- if (declarationElement is FieldElement2) {
+ if (declarationElement is FieldElement2OrMember) {
if (!declarationElement.isStatic) {
_errorReporter.atToken(
errorToken,
@@ -564,9 +565,9 @@
);
}
type = declarationElement.type;
- } else if (declarationElement is TopLevelVariableElement2) {
+ } else if (declarationElement is TopLevelVariableElementImpl2) {
type = declarationElement.type;
- } else if (declarationElement is PropertyAccessorElement2) {
+ } else if (declarationElement is PropertyAccessorElement2OrMember) {
var variable = declarationElement.variable3;
if (variable == null) {
return;
@@ -628,7 +629,7 @@
void _checkFfiNativeFunction(
Token errorToken,
- ExecutableElement2 declarationElement,
+ ExecutableElement2OrMember declarationElement,
FunctionTypeImpl ffiSignature,
DartObject annotationValue,
List<FormalParameter> formalParameters,
@@ -815,8 +816,8 @@
/// Validates that the given type is a valid dart:ffi native function
/// signature.
- bool _isValidFfiNativeFunctionType(DartType nativeType) {
- if (nativeType is FunctionType && !nativeType.isDartCoreFunction) {
+ bool _isValidFfiNativeFunctionType(TypeImpl nativeType) {
+ if (nativeType is FunctionTypeImpl && !nativeType.isDartCoreFunction) {
if (nativeType.namedParameterTypes.isNotEmpty ||
nativeType.optionalParameterTypes.isNotEmpty) {
return false;
@@ -826,8 +827,7 @@
return false;
}
- for (DartType typeArg
- in nativeType.normalParameterTypes.flattenVarArgs()) {
+ for (var typeArg in nativeType.normalParameterTypes.flattenVarArgs()) {
if (!_isValidFfiNativeType(typeArg, allowHandle: true)) {
return false;
}
@@ -839,14 +839,14 @@
/// Validates that the given [nativeType] is a valid dart:ffi native type.
bool _isValidFfiNativeType(
- DartType? nativeType, {
+ TypeImpl? nativeType, {
bool allowVoid = false,
bool allowEmptyStruct = false,
bool allowArray = false,
bool allowHandle = false,
bool allowOpaque = false,
}) {
- if (nativeType is InterfaceType) {
+ if (nativeType is InterfaceTypeImpl) {
var primitiveType = _primitiveNativeType(nativeType);
switch (primitiveType) {
case _PrimitiveDartType.void_:
@@ -899,7 +899,7 @@
if (allowArray && nativeType.isArray) {
return _isValidFfiNativeType(nativeType.typeArguments.single);
}
- } else if (nativeType is FunctionType) {
+ } else if (nativeType is FunctionTypeImpl) {
return _isValidFfiNativeFunctionType(nativeType);
}
return false;
@@ -1166,12 +1166,12 @@
);
}
- void _validateAllocate(FunctionExpressionInvocation node) {
+ void _validateAllocate(FunctionExpressionInvocationImpl node) {
var typeArgumentTypes = node.typeArgumentTypes;
if (typeArgumentTypes == null || typeArgumentTypes.length != 1) {
return;
}
- DartType dartType = typeArgumentTypes[0];
+ var dartType = typeArgumentTypes[0];
if (!_isValidFfiNativeType(dartType,
allowVoid: true, allowEmptyStruct: true)) {
AstNode errorNode = node;
@@ -1234,7 +1234,8 @@
/// Validate the invocation of the instance method
/// `Pointer<T>.asFunction<F>()`.
- void _validateAsFunction(MethodInvocation node, MethodElement2 element) {
+ void _validateAsFunction(
+ covariant MethodInvocationImpl node, MethodElement2OrMember element) {
var typeArguments = node.typeArguments?.arguments;
AstNode errorNode = typeArguments != null ? typeArguments[0] : node;
if (typeArguments != null && typeArguments.length == 1) {
@@ -1244,12 +1245,12 @@
}
var target = node.realTarget!;
var targetType = target.staticType;
- if (targetType is InterfaceType && targetType.isPointer) {
- DartType T = targetType.typeArguments[0];
+ if (targetType is InterfaceTypeImpl && targetType.isPointer) {
+ var T = targetType.typeArguments[0];
if (!T.isNativeFunction) {
return;
}
- DartType pointerTypeArg = (T as InterfaceType).typeArguments.single;
+ var pointerTypeArg = (T as InterfaceTypeImpl).typeArguments.single;
if (pointerTypeArg is TypeParameterType) {
_errorReporter.atNode(
target,
@@ -1267,8 +1268,8 @@
return;
}
- DartType TPrime = T.typeArguments[0];
- DartType F = node.typeArgumentTypes![0];
+ var TPrime = T.typeArguments[0];
+ var F = node.typeArgumentTypes![0];
var isLeaf = _isLeaf(node.argumentList.arguments);
if (!_validateCompatibleFunctionTypes(
_FfiTypeCheckDirection.nativeToDart, F, TPrime)) {
@@ -1291,15 +1292,15 @@
/// types, and subtyping is allowed in either direction.
bool _validateCompatibleFunctionTypes(
_FfiTypeCheckDirection direction,
- DartType dartType,
- DartType nativeType, {
+ TypeImpl dartType,
+ TypeImpl nativeType, {
bool nativeFieldWrappersAsPointer = false,
bool permissiveReturnType = false,
}) {
// We require both to be valid function types.
- if (dartType is! FunctionType ||
+ if (dartType is! FunctionTypeImpl ||
dartType.isDartCoreFunction ||
- nativeType is! FunctionType ||
+ nativeType is! FunctionTypeImpl ||
nativeType.isDartCoreFunction) {
return false;
}
@@ -1360,14 +1361,14 @@
/// [_FfiTypeCheckDirection.dartToNative].
bool _validateCompatibleNativeType(
_FfiTypeCheckDirection direction,
- DartType dartType,
- DartType nativeType, {
+ TypeImpl dartType,
+ TypeImpl nativeType, {
bool nativeFieldWrappersAsPointer = false,
bool allowFunctions = false,
}) {
var nativeReturnType = _primitiveNativeType(nativeType);
if (nativeReturnType == _PrimitiveDartType.int ||
- (nativeType is InterfaceType &&
+ (nativeType is InterfaceTypeImpl &&
nativeType.superclass?.element3.name3 ==
_abiSpecificIntegerClassName)) {
return dartType.isDartCoreInt;
@@ -1390,7 +1391,8 @@
case _FfiTypeCheckDirection.nativeToDart:
return typeSystem.isSubtypeOf(typeSystem.objectNone, dartType);
}
- } else if (dartType is InterfaceType && nativeType is InterfaceType) {
+ } else if (dartType is InterfaceTypeImpl &&
+ nativeType is InterfaceTypeImpl) {
if (nativeFieldWrappersAsPointer &&
_extendsNativeFieldWrapperClass1(dartType)) {
// Must be `Pointer<Void>`, `Handle` already checked above.
@@ -1406,9 +1408,9 @@
return direction == _FfiTypeCheckDirection.dartToNative
? typeSystem.isSubtypeOf(dartType, nativeType)
: typeSystem.isSubtypeOf(nativeType, dartType);
- } else if (dartType is FunctionType &&
+ } else if (dartType is FunctionTypeImpl &&
allowFunctions &&
- nativeType is InterfaceType &&
+ nativeType is InterfaceTypeImpl &&
nativeType.isNativeFunction) {
var nativeFunction = nativeType.typeArguments[0];
return _validateCompatibleFunctionTypes(
@@ -1421,12 +1423,12 @@
}
}
- void _validateCreate(MethodInvocation node, String errorClass) {
+ void _validateCreate(MethodInvocationImpl node, String errorClass) {
var typeArgumentTypes = node.typeArgumentTypes;
if (typeArgumentTypes == null || typeArgumentTypes.length != 1) {
return;
}
- DartType dartType = typeArgumentTypes[0];
+ var dartType = typeArgumentTypes[0];
if (!_isValidFfiNativeType(dartType)) {
AstNode errorNode = node;
_errorReporter.atNode(
@@ -1439,8 +1441,8 @@
void _validateElementAt(MethodInvocation node) {
var targetType = node.realTarget?.staticType;
- if (targetType is InterfaceType && targetType.isPointer) {
- DartType T = targetType.typeArguments[0];
+ if (targetType is InterfaceTypeImpl && targetType.isPointer) {
+ var T = targetType.typeArguments[0];
if (!_isValidFfiNativeType(T, allowVoid: true, allowEmptyStruct: true)) {
AstNode errorNode = node;
@@ -1576,7 +1578,8 @@
/// Validate the invocation of the static method
/// `Pointer<T>.fromFunction(f, e)`.
- void _validateFromFunction(MethodInvocation node, MethodElement2 element) {
+ void _validateFromFunction(
+ MethodInvocationImpl node, MethodElement2 element) {
int argCount = node.argumentList.arguments.length;
if (argCount < 1 || argCount > 2) {
// There are other diagnostics reported against the invocation and the
@@ -1584,7 +1587,7 @@
return;
}
- DartType T = node.typeArgumentTypes![0];
+ var T = node.typeArgumentTypes![0];
if (!_isValidFfiNativeFunctionType(T)) {
AstNode errorNode = node.methodName;
var typeArgument = node.typeArguments?.arguments[0];
@@ -1599,8 +1602,8 @@
return;
}
- Expression f = node.argumentList.arguments[0];
- DartType FT = f.typeOrThrow;
+ var f = node.argumentList.arguments[0];
+ var FT = f.typeOrThrow;
if (!_validateCompatibleFunctionTypes(
_FfiTypeCheckDirection.dartToNative, FT, T)) {
_errorReporter.atNode(
@@ -1612,7 +1615,7 @@
}
// TODO(brianwilkerson): Validate that `f` is a top-level function.
- DartType R = (T as FunctionType).returnType;
+ var R = (T as FunctionTypeImpl).returnType;
if (_primitiveNativeType(R) == _PrimitiveDartType.void_ ||
R.isPointer ||
R.isHandle ||
@@ -1674,7 +1677,7 @@
/// Validate the invocation of the instance method
/// `DynamicLibrary.lookupFunction<S, F>()`.
- void _validateLookupFunction(MethodInvocation node) {
+ void _validateLookupFunction(MethodInvocationImpl node) {
var typeArguments = node.typeArguments?.arguments;
if (typeArguments == null || typeArguments.length != 2) {
// There are other diagnostics reported against the invocation and the
@@ -1682,9 +1685,9 @@
return;
}
- List<DartType> argTypes = node.typeArgumentTypes!;
- DartType S = argTypes[0];
- DartType F = argTypes[1];
+ var argTypes = node.typeArgumentTypes!;
+ var S = argTypes[0];
+ var F = argTypes[1];
if (!_isValidFfiNativeFunctionType(S)) {
AstNode errorNode = typeArguments[0];
_errorReporter.atNode(
@@ -1744,7 +1747,7 @@
// When referencing a function, the target type must be a
// `NativeFunction<T>` so that `T` matches the type from the
// annotation.
- if (targetType case InterfaceType(isNativeFunction: true)) {
+ if (targetType case InterfaceTypeImpl(isNativeFunction: true)) {
var targetFunctionType = targetType.typeArguments[0];
if (!typeSystem.isEqualTo(nativeType, targetFunctionType)) {
_errorReporter.atNode(
@@ -1779,7 +1782,7 @@
);
}
- if (targetType case InterfaceType(isNativeFunction: true)) {
+ if (targetType case InterfaceTypeImpl(isNativeFunction: true)) {
var targetFunctionType = targetType.typeArguments[0];
if (!typeSystem.isEqualTo(staticType, targetFunctionType)) {
_errorReporter.atNode(
@@ -1840,6 +1843,8 @@
}
var typeArg = (node.staticType as ParameterizedType).typeArguments[0];
+ // TODO(scheglov): eliminate this cast
+ typeArg as TypeImpl;
if (!_isValidFfiNativeFunctionType(typeArg)) {
_errorReporter.atNode(
node.constructorName,
@@ -1861,7 +1866,7 @@
return;
}
- var natRetType = (typeArg as FunctionType).returnType;
+ var natRetType = (typeArg as FunctionTypeImpl).returnType;
if (isolateLocal) {
if (_primitiveNativeType(natRetType) == _PrimitiveDartType.void_ ||
natRetType.isPointer ||
@@ -1957,8 +1962,8 @@
}
}
- void _validateRefIndexed(IndexExpression node) {
- var targetType = node.realTarget.staticType;
+ void _validateRefIndexed(IndexExpressionImpl node) {
+ var targetType = node.realTarget.typeOrThrow;
if (!_isValidFfiNativeType(targetType,
allowEmptyStruct: true, allowArray: true)) {
AstNode errorNode = node;
@@ -1972,7 +1977,7 @@
/// Validate the invocation of the extension method
/// `Pointer<T extends Struct>.ref`.
- void _validateRefPrefixedIdentifier(PrefixedIdentifier node) {
+ void _validateRefPrefixedIdentifier(PrefixedIdentifierImpl node) {
var targetType = node.prefix.staticType;
if (!_isValidFfiNativeType(targetType, allowEmptyStruct: true)) {
AstNode errorNode = node;
@@ -1984,8 +1989,8 @@
}
}
- void _validateRefPropertyAccess(PropertyAccess node) {
- var targetType = node.realTarget.staticType;
+ void _validateRefPropertyAccess(PropertyAccessImpl node) {
+ var targetType = node.realTarget.typeOrThrow;
if (!_isValidFfiNativeType(targetType, allowEmptyStruct: true)) {
AstNode errorNode = node;
_errorReporter.atNode(
@@ -1999,8 +2004,8 @@
/// Validate the invocation of the
/// `Pointer<T extends Struct>.refWithFinalizer` and
/// `Pointer<T extends Union>.refWithFinalizer` extension methods.
- void _validateRefWithFinalizer(MethodInvocation node) {
- var targetType = node.realTarget?.staticType;
+ void _validateRefWithFinalizer(MethodInvocationImpl node) {
+ var targetType = node.realTarget?.typeOrThrow;
if (!_isValidFfiNativeType(targetType, allowEmptyStruct: true)) {
_errorReporter.atNode(
node,
@@ -2010,12 +2015,12 @@
}
}
- void _validateSizeOf(MethodInvocation node) {
+ void _validateSizeOf(MethodInvocationImpl node) {
var typeArgumentTypes = node.typeArgumentTypes;
if (typeArgumentTypes == null || typeArgumentTypes.length != 1) {
return;
}
- DartType T = typeArgumentTypes[0];
+ var T = typeArgumentTypes[0];
if (!_isValidFfiNativeType(T, allowVoid: true, allowEmptyStruct: true)) {
AstNode errorNode = node;
_errorReporter.atNode(
@@ -2725,7 +2730,7 @@
}
}
-extension on List<DartType> {
+extension on List<TypeImpl> {
/// Removes the VarArgs from a DartType list.
///
/// ```
@@ -2733,7 +2738,7 @@
/// [Int8, VarArgs<(Int8,)>] -> [Int8, Int8]
/// [Int8, VarArgs<(Int8, Int8)>] -> [Int8, Int8, Int8]
/// ```
- List<DartType> flattenVarArgs() {
+ List<TypeImpl> flattenVarArgs() {
if (isEmpty) {
return this;
}
@@ -2741,8 +2746,8 @@
if (!last.isVarArgs) {
return this;
}
- var typeArgument = (last as InterfaceType).typeArguments.single;
- if (typeArgument is! RecordType) {
+ var typeArgument = (last as InterfaceTypeImpl).typeArguments.single;
+ if (typeArgument is! RecordTypeImpl) {
return this;
}
if (typeArgument.namedFields.isNotEmpty) {
diff --git a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
index dc533eb..a1d2199 100644
--- a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
+++ b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
@@ -178,7 +178,7 @@
/// same contexttype
/// </blockquote>
void visitIntegerLiteral(IntegerLiteralImpl node,
- {required DartType contextType}) {
+ {required TypeImpl contextType}) {
var strictCasts = _resolver.analysisOptions.strictCasts;
if (_typeSystem.isAssignableTo(_typeProvider.intType, contextType,
strictCasts: strictCasts) ||
diff --git a/pkg/analyzer/lib/src/test_utilities/find_element2.dart b/pkg/analyzer/lib/src/test_utilities/find_element2.dart
index 2e484a5..78b43a5 100644
--- a/pkg/analyzer/lib/src/test_utilities/find_element2.dart
+++ b/pkg/analyzer/lib/src/test_utilities/find_element2.dart
@@ -4,6 +4,7 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element2.dart';
+import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/test_utilities/function_ast_visitor.dart';
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:collection/collection.dart';
@@ -479,10 +480,10 @@
return topVar(name).setter2!;
}
- TopLevelVariableElement2 topVar(String name) {
+ TopLevelVariableElementImpl2 topVar(String name) {
for (var variable in libraryElement.topLevelVariables) {
if (variable.name3 == name) {
- return variable;
+ return variable as TopLevelVariableElementImpl2;
}
}
throw StateError('Not found: $name');
diff --git a/pkg/analyzer/lib/src/utilities/extensions/element.dart b/pkg/analyzer/lib/src/utilities/extensions/element.dart
index e8edfbb..4df71ba 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/element.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/element.dart
@@ -460,6 +460,16 @@
}
}
+extension FieldElementOrMemberExtension on FieldElementOrMember {
+ FieldElement2OrMember get asElement2 {
+ return switch (this) {
+ FieldElementImpl(:var element) => element,
+ FieldMember member => member,
+ _ => throw UnsupportedError('Unsupported type: $runtimeType'),
+ };
+ }
+}
+
extension FormalParameterElementExtension on FormalParameterElement {
ParameterElement get asElement {
if (this case ParameterMember member) {
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
index 6a51b9f..4f84398 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_test.dart
@@ -121,13 +121,12 @@
// No code needs to be analyzed but we still need to call
// assertNoErrorsInCode to get the typeProvider initialized.
await assertNoErrorsInCode('');
- InterfaceType intType = typeProvider.intType;
- DartType dynamicType = typeProvider.dynamicType;
- InterfaceType futureDynamicType = typeProvider.futureDynamicType;
- InterfaceType futureIntType = typeProvider.futureType(intType);
- InterfaceType futureFutureDynamicType =
- typeProvider.futureType(futureDynamicType);
- InterfaceType futureFutureIntType = typeProvider.futureType(futureIntType);
+ var intType = typeProvider.intType;
+ var dynamicType = typeProvider.dynamicType;
+ var futureDynamicType = typeProvider.futureDynamicType;
+ var futureIntType = typeProvider.futureType(intType);
+ var futureFutureDynamicType = typeProvider.futureType(futureDynamicType);
+ var futureFutureIntType = typeProvider.futureType(futureIntType);
// flatten(int) = int
expect(_flatten(intType), intType);
// flatten(dynamic) = dynamic
@@ -406,5 +405,5 @@
expect(node.staticType, same(typeProvider.bottomType));
}
- TypeImpl _flatten(DartType type) => typeSystem.flatten(type as TypeImpl);
+ TypeImpl _flatten(TypeImpl type) => typeSystem.flatten(type);
}
diff --git a/pkg/analyzer/test/src/dart/element/assignable_test.dart b/pkg/analyzer/test/src/dart/element/assignable_test.dart
index 45afa00..239626b 100644
--- a/pkg/analyzer/test/src/dart/element/assignable_test.dart
+++ b/pkg/analyzer/test/src/dart/element/assignable_test.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/dart/element/type.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -18,12 +18,12 @@
class IsAssignableToTest extends AbstractTypeSystemTest {
bool get strictCasts => analysisContext.analysisOptions.strictCasts;
- void isAssignable(DartType from, DartType to) {
+ void isAssignable(TypeImpl from, TypeImpl to) {
expect(
typeSystem.isAssignableTo(from, to, strictCasts: strictCasts), isTrue);
}
- void isNotAssignable(DartType from, DartType to) {
+ void isNotAssignable(TypeImpl from, TypeImpl to) {
expect(
typeSystem.isAssignableTo(from, to, strictCasts: strictCasts), isFalse);
}