Index: pkg/analyzer/lib/src/summary/summarize_elements.dart |
diff --git a/pkg/analyzer/lib/src/summary/summarize_elements.dart b/pkg/analyzer/lib/src/summary/summarize_elements.dart |
index 5f4dbca910344fe99c2c1a65b11e73a137cb55f9..23af475a3284efbd753bf11a2b5a1c00ddc81b4d 100644 |
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart |
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart |
@@ -539,6 +539,31 @@ class _CompilationUnitSerializer { |
b.kind = UnlinkedExecutableKind.constructor; |
b.isConst = executableElement.isConst; |
b.isFactory = executableElement.isFactory; |
+ if (executableElement.redirectedConstructor != null) { |
+ b.isRedirectedConstructor = true; |
+ if (executableElement.isFactory) { |
+ EntityRefBuilder typeRef = serializeTypeRef( |
+ executableElement.redirectedConstructor.enclosingElement.type, |
+ executableElement); |
+ if (executableElement.redirectedConstructor.name.isNotEmpty) { |
+ String name = executableElement.redirectedConstructor.name; |
+ int typeId = typeRef.reference; |
+ LinkedReference typeLinkedRef = linkedReferences[typeId]; |
+ unlinkedReferences.add(new UnlinkedReferenceBuilder( |
+ name: name, prefixReference: typeId)); |
+ int refId = linkedReferences.length; |
+ linkedReferences.add(new LinkedReferenceBuilder( |
+ kind: ReferenceKind.constructor, unit: typeLinkedRef.unit)); |
+ b.redirectedConstructor = new EntityRefBuilder( |
+ reference: refId, typeArguments: typeRef.typeArguments); |
+ } else { |
+ b.redirectedConstructor = typeRef; |
+ } |
+ } else { |
+ b.redirectedConstructorName = |
+ executableElement.redirectedConstructor.name; |
+ } |
+ } |
if (executableElement.isConst && |
executableElement.constantInitializers != null) { |
Set<String> constructorParameterNames = |