Index: pkg/compiler/lib/src/js_emitter/program_builder.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder.dart |
index b2cb77f6ca656567e6c12a931d89fc4cd8b75fdb..0b901412ee4ef0eb11f20b8a15237cb5429b5103 100644 |
--- a/pkg/compiler/lib/src/js_emitter/program_builder.dart |
+++ b/pkg/compiler/lib/src/js_emitter/program_builder.dart |
@@ -547,7 +547,9 @@ class ProgramBuilder { |
js.Expression functionType; |
if (canTearOff || canBeReflected) { |
- functionType = _generateFunctionType(memberType); |
+ OutputUnit outputUnit = |
+ _compiler.deferredLoadTask.outputUnitForElement(element); |
+ functionType = _generateFunctionType(memberType, outputUnit); |
} |
int requiredParameterCount; |
@@ -569,12 +571,13 @@ class ProgramBuilder { |
functionType: functionType); |
} |
- js.Expression _generateFunctionType(DartType type) { |
+ js.Expression _generateFunctionType(DartType type, OutputUnit outputUnit) { |
if (type.containsTypeVariables) { |
js.Expression thisAccess = js.js(r'this.$receiver'); |
return backend.rti.getSignatureEncoding(type, thisAccess); |
} else { |
- return js.number(backend.emitter.metadataCollector.reifyType(type)); |
+ return js.number(backend.emitter.metadataCollector. |
+ reifyTypeForOutputUnit(type, outputUnit)); |
} |
} |
@@ -718,7 +721,9 @@ class ProgramBuilder { |
js.Expression functionType; |
DartType type = element.type; |
if (needsTearOff || canBeReflected) { |
- functionType = _generateFunctionType(type); |
+ OutputUnit outputUnit = |
+ _compiler.deferredLoadTask.outputUnitForElement(element); |
+ functionType = _generateFunctionType(type, outputUnit); |
} |
int requiredParameterCount; |