Index: pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart |
index 334b7462e8518239135b2a111047fc190f7cd8e4..6dc5f71edb8a078fa53aa280a36a6c8b16b71e9c 100644 |
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart |
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart |
@@ -277,7 +277,7 @@ class OldEmitter implements Emitter { |
return backend.rti.representationGenerator.templateForIsFunctionType; |
case JsBuiltin.rawRtiToJsConstructorName: |
- return jsAst.js.expressionTemplateFor("#.$typeNameProperty"); |
+ return jsAst.js.expressionTemplateFor("#.name"); |
case JsBuiltin.rawRuntimeType: |
return jsAst.js.expressionTemplateFor("#.constructor"); |
@@ -297,19 +297,19 @@ class OldEmitter implements Emitter { |
String functionClassName = |
backend.namer.runtimeTypeName(compiler.functionClass); |
return jsAst.js.expressionTemplateFor( |
- '#.$typeNameProperty === "$functionClassName"'); |
+ '#.name === "$functionClassName"'); |
case JsBuiltin.isDartObjectTypeRti: |
String objectClassName = |
backend.namer.runtimeTypeName(compiler.objectClass); |
return jsAst.js.expressionTemplateFor( |
- '#.$typeNameProperty === "$objectClassName"'); |
+ '#.name === "$objectClassName"'); |
case JsBuiltin.isNullTypeRti: |
String nullClassName = |
backend.namer.runtimeTypeName(compiler.nullClass); |
return jsAst.js.expressionTemplateFor( |
- '#.$typeNameProperty === "$nullClassName"'); |
+ '#.name === "$nullClassName"'); |
case JsBuiltin.getMetadata: |
String metadataAccess = |
@@ -1038,10 +1038,10 @@ class OldEmitter implements Emitter { |
cspPrecompiledFunctionFor(outputUnit).add(js.statement(r''' |
{ |
- #constructorName.#typeNameProperty = #constructorNameString; |
- // IE does not have a name property. |
- if (!("name" in #constructorName)) |
- #constructorName.name = #constructorNameString; |
+ if (typeof #constructorName.name != 'string') { |
sra1
2015/06/26 23:10:09
ditto double quotw
floitsch
2015/07/01 17:00:14
Done.
|
+ // IE does not store the name, but allows to modify the property. |
+ #constructorName.name = #constructorNameString; |
+ } |
$desc = $collectedClasses$.#constructorName[1]; |
#constructorName.prototype = $desc; |
''' /* next string is not a raw string */ ''' |
@@ -1050,7 +1050,6 @@ class OldEmitter implements Emitter { |
} |
}''', |
{"constructorName": constructorName, |
- "typeNameProperty": typeNameProperty, |
"constructorNameString": js.string(constructorName), |
"hasIsolateSupport": hasIsolateSupport, |
"fieldNamesArray": fieldNamesArray})); |