Index: sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
index a9e49c0f3a94f4bd2e4135cc72eef5626c55527f..40e4dc95f16a7ae45485b73bbdd0453d73def7ac 100644 |
--- a/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
@@ -196,6 +196,29 @@ class ConstantEmitter implements ConstantVisitor { |
} |
} |
+ void visitType(TypeConstant constant) { |
+ if (shouldEmitCanonicalVersion) { |
+ emitCanonicalVersion(constant); |
+ } else { |
+ SourceString helperSourceName = |
+ const SourceString('createRuntimeType'); |
ngeoffray
2012/11/19 16:54:09
See my comment in compile_time_constant.dart. I'd
karlklose
2012/11/20 14:04:38
http://code.google.com/p/dart/issues/detail?id=682
|
+ Element helper = compiler.findHelper(helperSourceName); |
+ JavaScriptBackend backend = compiler.backend; |
+ String helperName = backend.namer.getName(helper); |
+ DartType type = constant.representedType; |
+ Element element = type.element; |
+ String typeName; |
+ if (type.kind == TypeKind.INTERFACE) { |
+ typeName = |
+ compiler.codegenWorld.rti.generateRuntimeTypeString(element, 0); |
+ } else { |
+ assert(type.kind == TypeKind.TYPEDEF); |
+ typeName = element.name.slowToString(); |
+ } |
+ buffer.add("${namer.CURRENT_ISOLATE}.$helperName('$typeName')"); |
+ } |
+ } |
+ |
void visitConstructed(ConstructedConstant constant) { |
if (shouldEmitCanonicalVersion) { |
emitCanonicalVersion(constant); |