Index: pkg/analyzer/lib/src/summary/resynthesize.dart |
diff --git a/pkg/analyzer/lib/src/summary/resynthesize.dart b/pkg/analyzer/lib/src/summary/resynthesize.dart |
index a6620cc6f5b8f6920815ab98cf92b9ebfb2964e1..61955d0494364a4c23d49780ae3adfbb03981cce 100644 |
--- a/pkg/analyzer/lib/src/summary/resynthesize.dart |
+++ b/pkg/analyzer/lib/src/summary/resynthesize.dart |
@@ -938,6 +938,9 @@ class _LibraryResynthesizer { |
case ReferenceKind.typedef: |
return new FunctionTypeAliasElementHandle( |
summaryResynthesizer, location); |
+ case ReferenceKind.genericFunctionTypedef: |
+ return new GenericTypeAliasElementHandle( |
+ summaryResynthesizer, location); |
case ReferenceKind.topLevelFunction: |
return new FunctionElementHandle(summaryResynthesizer, location); |
case ReferenceKind.topLevelPropertyAccessor: |
@@ -1314,6 +1317,11 @@ class _ReferenceInfo { |
} |
// Done. |
return type; |
+ } else if (element is GenericTypeAliasElementHandle) { |
+ GenericTypeAliasElementImpl actualElement = element.actualElement; |
+ List<DartType> argumentTypes = |
+ new List.generate(numTypeArguments, getTypeArgument); |
+ return actualElement.typeAfterSubstitution(argumentTypes); |
} else if (element is FunctionTypedElement) { |
if (element is FunctionTypeAliasElementHandle) { |
List<DartType> typeArguments; |
@@ -1839,6 +1847,11 @@ class _UnitResynthesizer { |
summaryResynthesizer, location); |
isDeclarableType = true; |
break; |
+ case ReferenceKind.genericFunctionTypedef: |
+ element = new GenericTypeAliasElementHandle( |
+ summaryResynthesizer, location); |
+ isDeclarableType = true; |
+ break; |
case ReferenceKind.variable: |
Element enclosingElement = enclosingInfo.element; |
if (enclosingElement is ExecutableElement) { |