| Index: pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
|
| index f8c928d71fca40d3834266ce3e85311abbe1aad9..419d9c67ed0a4a1dd8c135a26d6005dda7cd75c4 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
|
| @@ -4,6 +4,8 @@
|
|
|
| library fasta.kernel_function_type_alias_builder;
|
|
|
| +import 'package:front_end/src/fasta/kernel/kernel_function_type_builder.dart';
|
| +import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart';
|
| import 'package:kernel/ast.dart'
|
| show
|
| DartType,
|
| @@ -11,15 +13,15 @@ import 'package:kernel/ast.dart'
|
| FunctionType,
|
| InvalidType,
|
| TypeParameter,
|
| - Typedef;
|
| -
|
| + Typedef,
|
| + VariableDeclaration;
|
| import 'package:kernel/type_algebra.dart' show substitute;
|
|
|
| import '../fasta_codes.dart' show templateCyclicTypedef;
|
| -
|
| import 'kernel_builder.dart'
|
| show
|
| FunctionTypeAliasBuilder,
|
| + KernelFormalParameterBuilder,
|
| KernelFunctionTypeBuilder,
|
| KernelTypeBuilder,
|
| KernelTypeVariableBuilder,
|
| @@ -61,6 +63,7 @@ class KernelFunctionTypeAliasBuilder
|
| return thisType;
|
| }
|
| thisType = const InvalidType();
|
| +
|
| DartType builtType = type?.build(library) ?? const DynamicType();
|
| if (typeVariables != null) {
|
| for (KernelTypeVariableBuilder tv in typeVariables) {
|
| @@ -68,6 +71,9 @@ class KernelFunctionTypeAliasBuilder
|
| target.typeParameters.add(tv.parameter..parent = target);
|
| }
|
| }
|
| +
|
| + _buildParameters(library);
|
| +
|
| return thisType = builtType;
|
| }
|
|
|
| @@ -103,4 +109,23 @@ class KernelFunctionTypeAliasBuilder
|
| }
|
| return buildTypesWithBuiltArguments(library, builtArguments);
|
| }
|
| +
|
| + /// Build and set formal parameters of this typedef.
|
| + void _buildParameters(LibraryBuilder library) {
|
| + int requiredCount = 0;
|
| + final positional = <VariableDeclaration>[];
|
| + final named = <VariableDeclaration>[];
|
| + if (type.formals != null) {
|
| + for (KernelFormalParameterBuilder formal in type.formals) {
|
| + KernelVariableDeclaration parameter = formal.build(library);
|
| + if (formal.isPositional) {
|
| + positional.add(parameter);
|
| + if (formal.isRequired) requiredCount++;
|
| + } else if (formal.isNamed) {
|
| + named.add(parameter);
|
| + }
|
| + }
|
| + target.setParameters(requiredCount, positional, named);
|
| + }
|
| + }
|
| }
|
|
|