analyzer: Simplify some type functions, towards element model migration
Remove relateTypeFormals2 - the only caller was relateTypeFormals.
Migrate to using Substitution.fromPairs2.
Change-Id: I0838fa2a5f3bcfa4eb7200a0109e61ffa9ae3990
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409720
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 356890c..83906999 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -281,7 +281,7 @@
}
return other.returnType == returnType &&
- _equalParameters(other.parameters, parameters);
+ _equalParameters(other.formalParameters, formalParameters);
}
return false;
}
@@ -441,15 +441,9 @@
FunctionType f1,
FunctionType f2,
bool Function(DartType bound2, DartType bound1) relation) {
- List<TypeParameterElement> params1 = f1.typeFormals;
- List<TypeParameterElement> params2 = f2.typeFormals;
- return relateTypeFormals2(params1, params2, relation);
- }
+ List<TypeParameterElement2> params1 = f1.typeParameters;
+ List<TypeParameterElement2> params2 = f2.typeParameters;
- static List<TypeParameterType>? relateTypeFormals2(
- List<TypeParameterElement> params1,
- List<TypeParameterElement> params2,
- bool Function(DartType bound2, DartType bound1) relation) {
int count = params1.length;
if (params2.length != count) {
return null;
@@ -457,16 +451,16 @@
// We build up a substitution matching up the type parameters
// from the two types, {variablesFresh/variables1} and
// {variablesFresh/variables2}
- List<TypeParameterElement> variables1 = <TypeParameterElement>[];
- List<TypeParameterElement> variables2 = <TypeParameterElement>[];
- var variablesFresh = <TypeParameterType>[];
+ List<TypeParameterElement2> variables1 = <TypeParameterElement2>[];
+ List<TypeParameterElement2> variables2 = <TypeParameterElement2>[];
+ List<TypeParameterType> variablesFresh = <TypeParameterType>[];
for (int i = 0; i < count; i++) {
- TypeParameterElement p1 = params1[i];
- TypeParameterElement p2 = params2[i];
+ TypeParameterElement2 p1 = params1[i];
+ TypeParameterElement2 p2 = params2[i];
TypeParameterElementImpl pFresh =
- TypeParameterElementImpl.synthetic(p2.name);
+ TypeParameterElementImpl.synthetic(p2.name3!);
- var variableFresh = pFresh.instantiate(
+ TypeParameterTypeImpl variableFresh = pFresh.instantiate(
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -476,9 +470,9 @@
DartType bound1 = p1.bound ?? DynamicTypeImpl.instance;
DartType bound2 = p2.bound ?? DynamicTypeImpl.instance;
- bound1 = Substitution.fromPairs(variables1, variablesFresh)
+ bound1 = Substitution.fromPairs2(variables1, variablesFresh)
.substituteType(bound1);
- bound2 = Substitution.fromPairs(variables2, variablesFresh)
+ bound2 = Substitution.fromPairs2(variables2, variablesFresh)
.substituteType(bound2);
if (!relation(bound2, bound1)) {
return null;
@@ -496,8 +490,8 @@
/// the same types. Named parameters must also have same names. Named
/// parameters must be sorted in the given lists.
static bool _equalParameters(
- List<ParameterElement> firstParameters,
- List<ParameterElement> secondParameters,
+ List<FormalParameterElement> firstParameters,
+ List<FormalParameterElement> secondParameters,
) {
if (firstParameters.length != secondParameters.length) {
return false;
@@ -505,15 +499,17 @@
for (var i = 0; i < firstParameters.length; ++i) {
var firstParameter = firstParameters[i];
var secondParameter = secondParameters[i];
- // ignore: deprecated_member_use_from_same_package
- if (firstParameter.parameterKind != secondParameter.parameterKind) {
+ if (firstParameter.isPositional != secondParameter.isPositional) {
+ return false;
+ }
+ if (firstParameter.isOptional != secondParameter.isOptional) {
return false;
}
if (firstParameter.type != secondParameter.type) {
return false;
}
if (firstParameter.isNamed &&
- firstParameter.name != secondParameter.name) {
+ firstParameter.name3 != secondParameter.name3) {
return false;
}
}