Index: pkg/compiler/lib/src/js_emitter/old_emitter/setup_program_builder.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/setup_program_builder.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/setup_program_builder.dart |
index 841256fcdef04300ae501d986caa1ef652de3cc1..115ec4fef9eeb1c0b53c6eb916aa9a59f471ea3e 100644 |
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/setup_program_builder.dart |
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/setup_program_builder.dart |
@@ -22,6 +22,9 @@ const RANGE3_ADJUST = |
- (FIRST_FIELD_CODE + RANGE1_SIZE + RANGE2_SIZE - RANGE3_FIRST); |
const String setupProgramName ='setupProgram'; |
+// TODO(floitsch): make sure this property can't clash with anything. It's |
+// unlikely since it lives on types, but still. |
+const String typeNameProperty = r'builtin$cls'; |
jsAst.Statement buildSetupProgram(Program program, Compiler compiler, |
JavaScriptBackend backend, |
@@ -237,10 +240,10 @@ function $setupProgramName(programData, typesOffset) { |
body += "this." + #deferredActionString + "();"; |
} |
str += ") {\\n" + body + "}\\n"; |
+ str += name + ".$typeNameProperty=\\"" + name + "\\";\\n"; |
str += "\$desc=\$collectedClasses." + name + "[1];\\n"; |
str += name + ".prototype = \$desc;\\n"; |
if (typeof defineClass.name != "string") { |
- // IE does not store the name, but allows to modify the property. |
str += name + ".name=\\"" + name + "\\";\\n"; |
} |
if (#hasIsolateSupport) { |