CQ. Switch clients to default constructor of FunctionTypeImpl.

Also rename the public `FunctionTypeImpl` constructor formal parameter
from `parameters` to `formalParameters`, matching the API exposed by
`FunctionType`.

Change-Id: I6f9bbeed06cee708f78bb7127843222db08e1d52
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/499040
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
Konstantin Shcheglov
2026-04-28 17:13:48 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 59439606f1
commit 560f44af01
25 changed files with 47 additions and 60 deletions
@@ -1203,7 +1203,7 @@ class DeclarationHelper {
} else {
functionType = FunctionTypeImpl(
typeParameters: const [],
parameters: const [],
formalParameters: const [],
returnType: DynamicTypeImpl.instance,
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -4523,7 +4523,7 @@ class InScopeCompletionPass extends SimpleAstVisitor<void> {
.ifTypeOrNull<TypeProviderImpl>();
return FunctionTypeImpl(
typeParameters: const [],
parameters: const [],
formalParameters: const [],
returnType: typeProvider?.voidType ?? DynamicTypeImpl.instance,
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -222,7 +222,7 @@ class CreateExtensionMethod extends _CreateExtensionMember {
if (returnType is InterfaceType && returnType.isDartCoreFunction) {
returnType = FunctionTypeImpl(
typeParameters: const [],
parameters: const [],
formalParameters: const [],
returnType: DynamicTypeImpl.instance,
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -101,7 +101,7 @@ class CreateMethodOrFunction extends ResolvedCorrectionProducer {
if (parameterType is InterfaceType && parameterType.isDartCoreFunction) {
parameterType = FunctionTypeImpl(
typeParameters: const [],
parameters: const [],
formalParameters: const [],
returnType: DynamicTypeImpl.instance,
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -573,7 +573,7 @@ abstract class ResolvedCorrectionProducer
if (type is InterfaceType && type.isDartCoreFunction) {
return FunctionTypeImpl(
typeParameters: const [],
parameters: const [],
formalParameters: const [],
returnType: DynamicTypeImpl.instance,
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -2603,7 +2603,7 @@ abstract class ExecutableElementImpl extends FunctionTypedElementImpl
FunctionTypeImpl get type {
return _type ??= FunctionTypeImpl(
typeParameters: typeParameters,
parameters: formalParameters,
formalParameters: formalParameters,
returnType: returnType,
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -4616,7 +4616,7 @@ class GenericFunctionTypeElementImpl extends FunctionTypedElementImpl
FunctionTypeImpl get type {
return _type ??= FunctionTypeImpl(
typeParameters: typeParameters,
parameters: formalParameters,
formalParameters: formalParameters,
returnType: returnType,
nullabilitySuffix: _firstFragment.isNullable
? NullabilitySuffix.question
@@ -11064,7 +11064,7 @@ class TypeAliasElementImpl extends ElementImpl
FunctionTypeImpl _errorFunctionType(NullabilitySuffix nullabilitySuffix) {
return FunctionTypeImpl(
typeParameters: const [],
parameters: const [],
formalParameters: const [],
returnType: DynamicTypeImpl.instance,
nullabilitySuffix: nullabilitySuffix,
);
@@ -250,7 +250,7 @@ class GenericInferrer {
// formals as we check the parameters and return type.
var inferFnType = FunctionTypeImpl(
typeParameters: const [],
parameters: fnType.parameters,
formalParameters: fnType.parameters,
returnType: fnType.returnType,
nullabilitySuffix: fnType.nullabilitySuffix,
);
@@ -361,7 +361,7 @@ class GreatestLowerBoundHelper {
var returnType = getGreatestLowerBound(f.returnType, g.returnType);
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: fresh.typeParameters,
formalParameters: parameters,
returnType: returnType,
@@ -770,7 +770,7 @@ class LeastUpperBoundHelper {
var returnType = getLeastUpperBound(f.returnType, g.returnType);
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: fresh.typeParameters,
formalParameters: parameters,
returnType: returnType,
@@ -52,7 +52,7 @@ class NormalizeHelper {
functionType = fresh.applyToFunctionType(functionType);
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: functionType.typeParameters,
formalParameters: functionType.formalParameters.map((e) {
return e.copyWith(type: _normalize(e.type));
@@ -52,7 +52,7 @@ class ReplaceTopBottomVisitor {
);
}).toList();
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: type.typeParameters,
formalParameters: newParameters,
returnType: newReturnType,
@@ -44,7 +44,7 @@ class ReplacementVisitor
return null;
}
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: newTypeParameters ?? type.typeParameters,
formalParameters: newParameters ?? type.formalParameters,
returnType: newReturnType ?? type.returnType,
@@ -217,7 +217,7 @@ class TopMergeHelper {
R_parameters.add(T_parameter.copyWith(type: R_type, kind: R_kind));
}
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: R_typeParameters.toFixedList(),
formalParameters: R_parameters.toFixedList(),
returnType: R_returnType,
+13 -26
View File
@@ -139,7 +139,7 @@ class FunctionTypeImpl extends TypeImpl
factory FunctionTypeImpl({
required List<TypeParameterElementImpl> typeParameters,
required List<InternalFormalParameterElement> parameters,
required List<InternalFormalParameterElement> formalParameters,
required TypeImpl returnType,
required NullabilitySuffix nullabilitySuffix,
InstantiatedTypeAliasElementImpl? alias,
@@ -152,8 +152,8 @@ class FunctionTypeImpl extends TypeImpl
// Check if already sorted.
var namedParametersAlreadySorted = true;
var lastNamedParameterName = '';
for (var i = 0; i < parameters.length; ++i) {
var parameter = parameters[i];
for (var i = 0; i < formalParameters.length; ++i) {
var parameter = formalParameters[i];
if (parameter.isNamed) {
firstNamedParameterIndex ??= i;
var name = parameter.name ?? '';
@@ -171,7 +171,10 @@ class FunctionTypeImpl extends TypeImpl
}
sortedNamedParameters = firstNamedParameterIndex == null
? const []
: parameters.sublist(firstNamedParameterIndex, parameters.length);
: formalParameters.sublist(
firstNamedParameterIndex,
formalParameters.length,
);
if (!namedParametersAlreadySorted) {
// Sort named parameters.
sortedNamedParameters.sort(
@@ -179,16 +182,16 @@ class FunctionTypeImpl extends TypeImpl
);
// Combine into a new list, with sorted named parameters.
parameters = parameters.toList();
parameters.replaceRange(
formalParameters = formalParameters.toList();
formalParameters.replaceRange(
firstNamedParameterIndex!,
parameters.length,
formalParameters.length,
sortedNamedParameters,
);
}
return FunctionTypeImpl._(
typeParameters: typeParameters,
parameters: parameters,
parameters: formalParameters,
returnType: returnType,
nullabilitySuffix: nullabilitySuffix,
positionalParameterTypes: positionalParameterTypes,
@@ -198,22 +201,6 @@ class FunctionTypeImpl extends TypeImpl
);
}
factory FunctionTypeImpl.v2({
required List<TypeParameterElementImpl> typeParameters,
required List<InternalFormalParameterElement> formalParameters,
required TypeImpl returnType,
required NullabilitySuffix nullabilitySuffix,
InstantiatedTypeAliasElementImpl? alias,
}) {
return FunctionTypeImpl(
typeParameters: typeParameters,
parameters: formalParameters,
returnType: returnType,
nullabilitySuffix: nullabilitySuffix,
alias: alias,
);
}
FunctionTypeImpl._({
required this.typeParameters,
required this.parameters,
@@ -340,7 +327,7 @@ class FunctionTypeImpl extends TypeImpl
return FunctionTypeImpl(
returnType: substitution.substituteType(returnType),
typeParameters: const [],
parameters: newParameters,
formalParameters: newParameters,
nullabilitySuffix: nullabilitySuffix,
);
}
@@ -373,7 +360,7 @@ class FunctionTypeImpl extends TypeImpl
@override
FunctionTypeImpl withAlias(InstantiatedTypeAliasElementImpl alias) {
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: typeParameters,
formalParameters: parameters,
returnType: returnType,
@@ -86,7 +86,7 @@ FunctionTypeImpl replaceTypeParameters(
return p.copyWith(type: type);
}
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: newTypeParameters,
formalParameters: type.formalParameters.map(transformParameter).toList(),
returnType: substitution.substituteType(type.returnType),
@@ -112,7 +112,7 @@ class FreshTypeParameters {
FreshTypeParameters(this.freshTypeParameters, this.substitution);
FunctionTypeImpl applyToFunctionType(FunctionTypeImpl type) {
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: freshTypeParameters,
formalParameters: type.formalParameters.map((parameter) {
var type = substitute(parameter.type);
@@ -450,7 +450,7 @@ abstract class _TypeSubstitutor
if (useCounter == before) return type;
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: typeFormals,
formalParameters: parameters,
returnType: returnType,
@@ -47,7 +47,7 @@ class ConstructorElementToInfer {
FunctionType get asType {
return typeParameters.isEmpty
? element.type
: FunctionTypeImpl.v2(
: FunctionTypeImpl(
typeParameters: typeParameters,
formalParameters: element.formalParameters,
returnType: element.returnType,
@@ -534,7 +534,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
var type = FunctionTypeImpl(
typeParameters: element.typeParameters,
parameters: element.formalParameters,
formalParameters: element.formalParameters,
returnType: element.returnType,
nullabilitySuffix: _getNullability(node.question != null),
);
@@ -796,7 +796,7 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
var element = node.declaredFragment!.element;
element.type = FunctionTypeImpl(
typeParameters: element.typeParameters,
parameters: element.formalParameters,
formalParameters: element.formalParameters,
returnType: node.type?.type ?? _typeProvider.dynamicType,
nullabilitySuffix: _getNullability(
functionTypedSuffix.question != null,
@@ -81,7 +81,7 @@ class CorrectOverrideHelper {
}
if (newParameters != null) {
_thisTypeForSubtype = FunctionTypeImpl.v2(
_thisTypeForSubtype = FunctionTypeImpl(
typeParameters: type.typeParameters,
formalParameters: newParameters,
returnType: type.returnType,
@@ -528,7 +528,7 @@ class FfiVerifier extends RecursiveAstVisitor<void> {
if (dartSignature.returnType is VoidType) {
// The Dart signature has a `void` return type, so we create a new
// `FunctionType` with FFI's `Void` as the return type.
dartSignature = FunctionTypeImpl.v2(
dartSignature = FunctionTypeImpl(
typeParameters: dartSignature.typeParameters,
formalParameters: dartSignature.formalParameters,
returnType: ffiVoidType ??= annotationType.element.library
@@ -702,7 +702,7 @@ class FfiVerifier extends RecursiveAstVisitor<void> {
}
// Include receiver when validating the full function type.
dartType = FunctionTypeImpl.v2(
dartType = FunctionTypeImpl(
typeParameters: dartType.typeParameters,
formalParameters: [
FormalParameterElementImpl.synthetic(
@@ -786,7 +786,7 @@ class FfiVerifier extends RecursiveAstVisitor<void> {
}
}
var nativeType = FunctionTypeImpl.v2(
var nativeType = FunctionTypeImpl(
typeParameters: ffiSignature.typeParameters,
formalParameters: ffiParameters,
returnType: ffiSignature.returnType,
@@ -1850,7 +1850,7 @@ class FfiVerifier extends RecursiveAstVisitor<void> {
if (staticType.returnType is VoidType) {
// The Dart signature has a `void` return type, so we create a
// new `FunctionType` with FFI's `Void` as the return type.
staticType = FunctionTypeImpl.v2(
staticType = FunctionTypeImpl(
typeParameters: staticType.typeParameters,
formalParameters: staticType.formalParameters,
returnType: ffiVoidType ??= annotationType.element.library
+1 -1
View File
@@ -2912,7 +2912,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
if (receiverContextType != null) {
target = InvocationTargetExtensionOverride(
element: node.element,
type: FunctionTypeImpl.v2(
type: FunctionTypeImpl(
typeParameters: const [],
formalParameters: [
FormalParameterElementImpl.synthetic(
@@ -1738,7 +1738,7 @@ class ResolutionReader {
return FunctionTypeImpl(
typeParameters: typeParameters.map((f) => f.asElement2).toList(),
parameters: formalParameters.map((f) => f.asElement2).toList(),
formalParameters: formalParameters.map((f) => f.asElement2).toList(),
returnType: returnType,
nullabilitySuffix: nullability,
);
@@ -86,7 +86,7 @@ class FunctionTypeBuilder extends TypeBuilder {
}
var builtReturnType = _buildType(returnType);
type = FunctionTypeImpl.v2(
type = FunctionTypeImpl(
typeParameters: typeParameters,
formalParameters: formalParameters,
returnType: builtReturnType,
@@ -179,7 +179,7 @@ class NamedTypeBuilder extends TypeBuilder {
if (node is GenericFunctionType) {
return _buildType(node.typeOrThrow);
} else {
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: const <TypeParameterElementImpl>[],
formalParameters: const <InternalFormalParameterElement>[],
returnType: _dynamicType,
@@ -237,7 +237,7 @@ class NamedTypeBuilder extends TypeBuilder {
var typeParameters = _typeParameters(typeParameterList);
var formalParameters = _formalParameters(parameterList);
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
typeParameters: typeParameters,
formalParameters: formalParameters,
returnType: returnType,
@@ -120,7 +120,7 @@ class TypesBuilder {
return FunctionTypeImpl(
typeParameters: typeParameters.map((f) => f.asElement2).toList(),
parameters: formalParameters,
formalParameters: formalParameters,
returnType: returnType,
nullabilitySuffix: nullabilitySuffix,
);
@@ -460,7 +460,7 @@ class TypesBuilder {
static FunctionTypeImpl _errorFunctionType() {
return FunctionTypeImpl(
typeParameters: const [],
parameters: const [],
formalParameters: const [],
returnType: DynamicTypeImpl.instance,
nullabilitySuffix: NullabilitySuffix.none,
);
@@ -798,7 +798,7 @@ class _ParsedFunctionType implements _ParsedType {
formalParameters.createFragments();
formalParameters.resolve(functionScope);
return FunctionTypeImpl.v2(
return FunctionTypeImpl(
returnType: returnType.materialize(functionScope),
typeParameters: typeParameters.elements,
formalParameters: formalParameters.elements,