Index: sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart |
index 8d0c6a9bdcd39808fd44a6ceef4e6769a9975993..7a457526093ac65dafe2d90c24c29f5fac190b27 100644 |
--- a/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart |
+++ b/sdk/lib/_internal/compiler/implementation/js_emitter/code_emitter_task.dart |
@@ -2967,6 +2967,25 @@ class CodeEmitterTask extends CompilerTask { |
ClassElement classElement = element; |
elements.add(backend.emitter.constantReference(constant)); |
elements.add(js(namer.isolateAccess(classElement))); |
+ |
+ // Create JavaScript Object map for by-name lookup of generative |
+ // constructors. |
+ var properties = []; |
+ classElement.forEachMember( |
+ (ClassElement enclosingClass, Element member) { |
+ if (member.isGenerativeConstructor()) { |
+ properties.add( |
+ new jsAst.Property( |
+ js.string(member.name.slowToString()), |
+ new jsAst.VariableUse( |
+ backend.namer.isolateAccess(member)))); |
+ } |
+ }, |
+ includeBackendMembers: false, |
+ includeSuperAndInjectedMembers: false); |
+ |
+ var map = new jsAst.ObjectInitializer(properties); |
+ elements.add(map); |
} |
} |
} |