Chromium Code Reviews| Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| index 2302aec5576d8b4dd92cbe738a3cf234332b6724..a0ba6b43316c6002207ef433df78fcaa4843125a 100644 |
| --- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| +++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| @@ -1289,7 +1289,15 @@ class CodeEmitterTask extends CompilerTask { |
| } |
| String getReflectionName(elementOrSelector, String mangledName) { |
|
Johnni Winther
2013/08/07 10:47:34
Add documentation to this method.
ahe
2013/08/07 14:03:17
Done.
|
| - if (!backend.retainName(elementOrSelector.name)) return null; |
| + SourceString name = elementOrSelector.name; |
| + if (!backend.retainName(name)) { |
| + if (name == const SourceString('') && elementOrSelector is Element) { |
| + // Make sure to retain names of unnamed constructors. |
| + if (!backend.isNeededForReflection(elementOrSelector)) return null; |
| + } else { |
| + return null; |
| + } |
| + } |
| // TODO(ahe): Enable the next line when I can tell the difference between |
| // an instance method and a global. They may have the same mangled name. |
| // if (recordedMangledNames.contains(mangledName)) return null; |
| @@ -1961,6 +1969,7 @@ class CodeEmitterTask extends CompilerTask { |
| buffer.write(jsAst.prettyPrint(builder.toObjectInitializer(), compiler)); |
| if (backend.retainName(classElement.name)) { |
| buffer.write(',$n$n"+${classElement.name.slowToString()}": 0'); |
| + recordedMangledNames.add(className); |
| } |
| } |