| Index: pkg/compiler/lib/src/js_emitter/old_emitter/interceptor_emitter.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/interceptor_emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/interceptor_emitter.dart
|
| index 6db7c711f7ee45cabecf472b20817c2a1f1da389..aa43580b9735ba42b9710e4dc28bd6f1dec531d4 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/old_emitter/interceptor_emitter.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/old_emitter/interceptor_emitter.dart
|
| @@ -13,35 +13,40 @@ class InterceptorEmitter extends CodeEmitterHelper {
|
| }
|
| }
|
|
|
| - void emitGetInterceptorMethod(CodeOutput output,
|
| - String key,
|
| - Set<ClassElement> classes) {
|
| + jsAst.Expression buildGetInterceptorMethod(String key,
|
| + Set<ClassElement> classes) {
|
| InterceptorStubGenerator stubGenerator =
|
| new InterceptorStubGenerator(compiler, namer, backend);
|
| jsAst.Expression function =
|
| stubGenerator.generateGetInterceptorMethod(classes);
|
|
|
| - output.addBuffer(jsAst.prettyPrint(
|
| - js('${namer.globalObjectFor(backend.interceptorsLibrary)}.# = #',
|
| - [key, function]),
|
| - compiler));
|
| - output.add(N);
|
| + return function;
|
| }
|
|
|
| /**
|
| * Emit all versions of the [:getInterceptor:] method.
|
| */
|
| - void emitGetInterceptorMethods(CodeOutput output) {
|
| - emitter.addComment('getInterceptor methods', output);
|
| + jsAst.Statement buildGetInterceptorMethods() {
|
| + List<jsAst.Statement> parts = <jsAst.Statement>[];
|
| +
|
| + parts.add(js.comment('getInterceptor methods'));
|
| +
|
| Map<String, Set<ClassElement>> specializedGetInterceptors =
|
| backend.specializedGetInterceptors;
|
| for (String name in specializedGetInterceptors.keys.toList()..sort()) {
|
| Set<ClassElement> classes = specializedGetInterceptors[name];
|
| - emitGetInterceptorMethod(output, name, classes);
|
| + parts.add(
|
| + js.statement('#.# = #',
|
| + [namer.globalObjectFor(backend.interceptorsLibrary),
|
| + name,
|
| + buildGetInterceptorMethod(name, classes)]));
|
| }
|
| +
|
| + return new jsAst.Block(parts);
|
| }
|
|
|
| - void emitOneShotInterceptors(CodeOutput output) {
|
| + jsAst.Statement buildOneShotInterceptors() {
|
| + List<jsAst.Statement> parts = <jsAst.Statement>[];
|
| List<String> names = backend.oneShotInterceptors.keys.toList();
|
| names.sort();
|
|
|
| @@ -51,12 +56,10 @@ class InterceptorEmitter extends CodeEmitterHelper {
|
| for (String name in names) {
|
| jsAst.Expression function =
|
| stubGenerator.generateOneShotInterceptor(name);
|
| - jsAst.Expression assignment =
|
| - js('${globalObject}.# = #', [name, function]);
|
| -
|
| - output.addBuffer(jsAst.prettyPrint(assignment, compiler));
|
| - output.add(N);
|
| + parts.add(js.statement('${globalObject}.# = #', [name, function]));
|
| }
|
| +
|
| + return new jsAst.Block(parts);
|
| }
|
|
|
| /**
|
| @@ -87,15 +90,12 @@ class InterceptorEmitter extends CodeEmitterHelper {
|
| * `findInterceptorForType`. See declaration of `typeToInterceptor` in
|
| * `interceptors.dart`.
|
| */
|
| - void emitTypeToInterceptorMap(Program program, CodeOutput output) {
|
| + jsAst.Statement buildTypeToInterceptorMap(Program program) {
|
| jsAst.Expression array = program.typeToInterceptorMap;
|
| - if (array == null) return;
|
| + if (array == null) return js.comment("Empty type-to-interceptor map.");
|
|
|
| jsAst.Expression typeToInterceptorMap = emitter
|
| .generateEmbeddedGlobalAccess(embeddedNames.TYPE_TO_INTERCEPTOR_MAP);
|
| - jsAst.Expression assignment = js('# = #', [typeToInterceptorMap, array]);
|
| -
|
| - output.addBuffer(jsAst.prettyPrint(assignment, compiler));
|
| - output.add(N);
|
| + return js.statement('# = #', [typeToInterceptorMap, array]);
|
| }
|
| }
|
|
|