Index: pkg/kernel/lib/ast.dart |
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart |
index 7afda0c84ed66e7fdd65b766b0a9c59dc66eac6c..3cc838d63f692efbce1d971236a80bd30cab9653 100644 |
--- a/pkg/kernel/lib/ast.dart |
+++ b/pkg/kernel/lib/ast.dart |
@@ -1539,13 +1539,16 @@ class FunctionNode extends TreeNode { |
List<NamedType> named = |
namedParameters.map(_getNamedTypeOfVariable).toList(growable: false); |
named.sort(); |
+ // We need create a copy of the list of type parameters, otherwise |
+ // transformations like erasure don't work. |
+ var typeParametersCopy = new List<TypeParameter>.from(parent is Constructor |
+ ? parent.enclosingClass.typeParameters |
+ : typeParameters); |
return new FunctionType( |
positionalParameters.map(_getTypeOfVariable).toList(growable: false), |
returnType, |
namedParameters: named, |
- typeParameters: parent is Constructor |
- ? parent.enclosingClass.typeParameters |
- : typeParameters, |
+ typeParameters: typeParametersCopy, |
requiredParameterCount: requiredParameterCount); |
} |