| Index: pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
|
| index 54b2a1bcdc5c61eabf8df93d5d52bdd7282e47aa..6d5b693c8521c39b903db7235f1ac0773772b2f4 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
|
| @@ -26,14 +26,14 @@ class ClassStubGenerator {
|
| namer.deferredAction]);
|
| }
|
|
|
| - jsAst.Expression generateGetter(Element member, String fieldName) {
|
| + jsAst.Expression generateGetter(Element member, jsAst.Name fieldName) {
|
| ClassElement cls = member.enclosingClass;
|
| String receiver = backend.isInterceptorClass(cls) ? 'receiver' : 'this';
|
| List<String> args = backend.isInterceptedMethod(member) ? ['receiver'] : [];
|
| return js('function(#) { return #.# }', [args, receiver, fieldName]);
|
| }
|
|
|
| - jsAst.Expression generateSetter(Element member, String fieldName) {
|
| + jsAst.Expression generateSetter(Element member, jsAst.Name fieldName) {
|
| ClassElement cls = member.enclosingClass;
|
| String receiver = backend.isInterceptorClass(cls) ? 'receiver' : 'this';
|
| List<String> args = backend.isInterceptedMethod(member) ? ['receiver'] : [];
|
| @@ -47,7 +47,7 @@ class ClassStubGenerator {
|
| *
|
| * Invariant: [member] must be a declaration element.
|
| */
|
| - Map<String, jsAst.Expression> generateCallStubsForGetter(
|
| + Map<jsAst.Name, jsAst.Expression> generateCallStubsForGetter(
|
| Element member, Set<Selector> selectors) {
|
| assert(invariant(member, member.isDeclaration));
|
|
|
| @@ -63,18 +63,19 @@ class ClassStubGenerator {
|
| jsAst.Expression receiver =
|
| js(isInterceptorClass ? receiverArgumentName : 'this');
|
| if (member.isGetter) {
|
| - String getterName = namer.getterForElement(member);
|
| + jsAst.Name getterName = namer.getterForElement(member);
|
| if (isInterceptedMethod) {
|
| return js('this.#(#)', [getterName, receiver]);
|
| }
|
| return js('#.#()', [receiver, getterName]);
|
| } else {
|
| - String fieldName = namer.instanceFieldPropertyName(member);
|
| + jsAst.Name fieldName = namer.instanceFieldPropertyName(member);
|
| return js('#.#', [receiver, fieldName]);
|
| }
|
| }
|
|
|
| - Map<String, jsAst.Expression> generatedStubs = <String, jsAst.Expression>{};
|
| + Map<jsAst.Name, jsAst.Expression> generatedStubs =
|
| + <jsAst.Name, jsAst.Expression>{};
|
|
|
| // Two selectors may match but differ only in type. To avoid generating
|
| // identical stubs for each we track untyped selectors which already have
|
| @@ -86,9 +87,9 @@ class ClassStubGenerator {
|
| if (generatedSelectors.contains(selector)) continue;
|
| generatedSelectors.add(selector);
|
|
|
| - String invocationName = namer.invocationName(selector);
|
| + jsAst.Name invocationName = namer.invocationName(selector);
|
| Selector callSelector = new Selector.callClosureFrom(selector);
|
| - String closureCallName = namer.invocationName(callSelector);
|
| + jsAst.Name closureCallName = namer.invocationName(callSelector);
|
|
|
| List<jsAst.Parameter> parameters = <jsAst.Parameter>[];
|
| List<jsAst.Expression> arguments = <jsAst.Expression>[];
|
| @@ -113,9 +114,9 @@ class ClassStubGenerator {
|
| return generatedStubs;
|
| }
|
|
|
| - Map<String, Selector> computeSelectorsForNsmHandlers() {
|
| + Map<jsAst.Name, Selector> computeSelectorsForNsmHandlers() {
|
|
|
| - Map<String, Selector> jsNames = <String, Selector>{};
|
| + Map<jsAst.Name, Selector> jsNames = <jsAst.Name, Selector>{};
|
|
|
| // Do not generate no such method handlers if there is no class.
|
| if (compiler.codegenWorld.directlyInstantiatedClasses.isEmpty) {
|
| @@ -133,7 +134,7 @@ class ClassStubGenerator {
|
| if (!mask.needsNoSuchMethodHandling(selector, compiler.world)) {
|
| continue;
|
| }
|
| - String jsName = namer.invocationMirrorInternalName(selector);
|
| + jsAst.Name jsName = namer.invocationMirrorInternalName(selector);
|
| jsNames[jsName] = selector;
|
| }
|
| }
|
| @@ -144,7 +145,8 @@ class ClassStubGenerator {
|
| return jsNames;
|
| }
|
|
|
| - StubMethod generateStubForNoSuchMethod(String name, Selector selector) {
|
| + StubMethod generateStubForNoSuchMethod(jsAst.Name name,
|
| + Selector selector) {
|
| // Values match JSInvocationMirror in js-helper library.
|
| int type = selector.invocationMirrorKind;
|
| List<String> parameterNames =
|
| @@ -154,8 +156,8 @@ class ClassStubGenerator {
|
| selector.callStructure.getOrderedNamedArguments().map((String name) =>
|
| js.string(name)).toList();
|
|
|
| - String methodName = selector.invocationMirrorMemberName;
|
| - String internalName = namer.invocationMirrorInternalName(selector);
|
| + jsAst.Name methodName = namer.asName(selector.invocationMirrorMemberName);
|
| + jsAst.Name internalName = namer.invocationMirrorInternalName(selector);
|
|
|
| assert(backend.isInterceptedName(Compiler.NO_SUCH_METHOD));
|
| bool isIntercepted = backend.isInterceptedName(selector.name);
|
| @@ -172,9 +174,9 @@ class ClassStubGenerator {
|
| backend.emitter.staticFunctionAccess(
|
| backend.getCreateInvocationMirror()),
|
| 'methodName':
|
| - js.string(compiler.enableMinification
|
| + js.quoteName(compiler.enableMinification
|
| ? internalName : methodName),
|
| - 'internalName': js.string(internalName),
|
| + 'internalName': js.quoteName(internalName),
|
| 'type': js.number(type),
|
| 'arguments':
|
| new jsAst.ArrayInitializer(parameterNames.map(js).toList()),
|
|
|