Chromium Code Reviews| Index: pkg/compiler/lib/src/js/js.dart |
| diff --git a/pkg/compiler/lib/src/js/js.dart b/pkg/compiler/lib/src/js/js.dart |
| index fac460db21e1eb06b98edb6564ef455db4cc36a8..0e17ab9ffff7c6ba89b964e8edf2bf4740451c9a 100644 |
| --- a/pkg/compiler/lib/src/js/js.dart |
| +++ b/pkg/compiler/lib/src/js/js.dart |
| @@ -1,23 +1,64 @@ |
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| library js; |
| -import 'precedence.dart'; |
| -import '../util/characters.dart' as charCodes; |
| -import '../util/util.dart'; |
| +// TODO(sra): This will become a package import. |
| +import 'js_ast.dart'; |
| +export 'js_ast.dart'; |
| + |
| import '../io/code_output.dart' show CodeBuffer; |
| import '../io/source_information.dart' show SourceInformation; |
| import '../js_emitter/js_emitter.dart' show USE_NEW_EMITTER; |
| - |
| -// TODO(floitsch): remove this dependency (currently necessary for the |
| -// CodeBuffer). |
| import '../dart2jslib.dart' as leg; |
| +import '../util/util.dart' show NO_LOCATION_SPANNABLE; |
| +import '../dump_info.dart' show DumpInfoTask; |
| + |
| + |
| +CodeBuffer prettyPrint(Node node, leg.Compiler compiler, |
| + {DumpInfoTask monitor, |
| + bool allowVariableMinification: true}) { |
| + JavaScriptPrintingOptions options = new JavaScriptPrintingOptions( |
| + shouldCompressOutput: compiler.enableMinification, |
| + minifyLocalVariables: allowVariableMinification, |
| + preferSemicolonToNewlineInMinifiedOutput: USE_NEW_EMITTER); |
| + Dart2JSJavaScriptPrintingContext context = |
| + new Dart2JSJavaScriptPrintingContext(compiler, monitor); |
| + Printer printer = new Printer(options, context); |
| + printer.visit(node); |
| + return context.outBuffer; |
| +} |
| + |
| +class Dart2JSJavaScriptPrintingContext extends JavaScriptPrintingContext { |
|
floitsch
2015/02/11 16:01:13
I'm not sure I like this.
The JavaScriptPrintingC
sra1
2015/02/11 18:20:19
I agree.
JavaScriptPrintingContext *is* the inter
|
| + final leg.Compiler compiler; |
| + final DumpInfoTask monitor; |
| + final CodeBuffer outBuffer = new CodeBuffer(); |
| + |
| + Dart2JSJavaScriptPrintingContext(leg.Compiler this.compiler, |
| + DumpInfoTask this.monitor); |
| + |
| + void error(String message) { |
| + compiler.internalError(NO_LOCATION_SPANNABLE, message); |
| + } |
| + |
| + void emit(String string) { |
| + outBuffer.add(string); |
| + } |
| -import '../dump_info.dart'; |
| + void enterNode(Node node) { |
| + SourceInformation sourceInformation = node.sourceInformation; |
| + if (sourceInformation != null) { |
| + sourceInformation.beginMapping(outBuffer); |
| + } |
| + if (monitor != null) monitor.enteringAst(node, outBuffer.length); |
| + } |
| -part 'nodes.dart'; |
| -part 'builder.dart'; |
| -part 'printer.dart'; |
| -part 'template.dart'; |
| + void exitNode(Node node) { |
| + if (monitor != null) monitor.exitingAst(node, outBuffer.length); |
| + SourceInformation sourceInformation = node.sourceInformation; |
| + if (sourceInformation != null) { |
| + sourceInformation.endMapping(outBuffer); |
| + } |
| + } |
| +} |