Index: pkg/compiler/lib/src/js_backend/codegen_listener.dart |
diff --git a/pkg/compiler/lib/src/js_backend/codegen_listener.dart b/pkg/compiler/lib/src/js_backend/codegen_listener.dart |
index 8de2576f6b08f215dff7ae197a22dbfec32b87b7..705fbfa8a8ab46e7311f28da4042eaa3b93d2080 100644 |
--- a/pkg/compiler/lib/src/js_backend/codegen_listener.dart |
+++ b/pkg/compiler/lib/src/js_backend/codegen_listener.dart |
@@ -211,6 +211,14 @@ class CodegenEnqueuerListener extends EnqueuerListener { |
} else if (constant.isType) { |
impactBuilder |
.registerTypeUse(new TypeUse.instantiation(_backendClasses.typeType)); |
+ // If the type is a web component, we need to ensure the constructors are |
+ // available to 'upgrade' the native object. |
+ TypeConstantValue type = constant; |
+ if (type.representedType.isInterfaceType) { |
+ ResolutionInterfaceType representedType = type.representedType; |
+ _customElementsAnalysis.registerTypeConstant(representedType.element); |
+ _lookupMapAnalysis.registerTypeConstant(representedType.element); |
+ } |
} |
_lookupMapAnalysis.registerConstantKey(constant); |
} |