Skip to content

Fasta crash on nested generic function types #31213

Closed
@sjindel-google

Description

@sjindel-google
$ cat <<EOF >test.dart

typedef C<A, K> = int Function<B>(A x, K y, B v);
typedef D<K> = C<A, K> Function<A>(int z);

dynamic producer<K>() {
  return <A>(int v1) {
    return <B>(A v2, K v3, B v4) => 0;
  };
}

main() {
  assert(producer<String>() is D<String>);
}
EOF

$ DART_CONFIGURATION=DebugX64 ./pkg/front_end/tool/fasta compile test.dart

Unhandled exception:
NoSuchMethodError: The method 'accept' was called on null.
Receiver: null
Tried calling: accept(Instance of '_InnerTypeSubstitutor')
#0      Object.noSuchMethod (dart:core-patch/dart:core/object_patch.dart:46)
#1      _TypeSubstitutor.visit (package:kernel/type_algebra.dart:389:41)
#2      _InnerTypeSubstitutor.freshTypeParameter (package:kernel/type_algebra.dart:343:19)
#3      MappedListIterable.elementAt (dart:_internal/iterable.dart:413)
#4      ListIterable.toList (dart:_internal/iterable.dart:218)
#5      _TypeSubstitutor.freshTypeParameters (package:kernel/type_algebra.dart:415:47)
#6      _TypeSubstitutor.visitFunctionType (package:kernel/type_algebra.dart:436:32)
#7      FunctionType.accept (package:kernel/ast.dart:4570:34)
#8      _TypeSubstitutor.visit (package:kernel/type_algebra.dart:389:41)
#9      Substitution.substituteType (package:kernel/type_algebra.dart:239:53)
#10     substitute (package:kernel/type_algebra.dart:19:45)
#11     KernelFunctionTypeAliasBuilder.buildTypesWithBuiltArguments (package:front_end/src/fasta/kernel/kernel_function_type_alias_builder.dart:92:12)
#12     KernelFunctionTypeAliasBuilder.buildType (package:front_end/src/fasta/kernel/kernel_function_type_alias_builder.dart:109:12)
#13     KernelNamedTypeBuilder.build (package:front_end/src/fasta/kernel/kernel_named_type_builder.dart:46:20)
#14     KernelFunctionTypeBuilder.build (package:front_end/src/fasta/kernel/kernel_function_type_builder.dart:40:21)
...

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions