Chromium Code Reviews| Index: pkg/front_end/lib/src/fasta/analyzer/analyzer_compile.dart |
| diff --git a/pkg/front_end/lib/src/fasta/analyzer/analyzer_compile.dart b/pkg/front_end/lib/src/fasta/analyzer/analyzer_compile.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d348e70c68d7c87ceeb9b429edb6c876e6b82ce4 |
| --- /dev/null |
| +++ b/pkg/front_end/lib/src/fasta/analyzer/analyzer_compile.dart |
| @@ -0,0 +1,63 @@ |
| +// Copyright (c) 2017, 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 fasta.analyzer_compile; |
| + |
| +import 'dart:async' show Future; |
| + |
| +import 'dart:io' show exitCode; |
| + |
| +import '../compiler_command_line.dart' show CompilerCommandLine; |
| + |
| +import '../compiler_context.dart' show CompilerContext; |
| + |
| +import '../ticker.dart' show Ticker; |
| + |
| +import '../outline.dart' show CompileTask; |
| + |
| +import '../errors.dart' show InputError; |
| + |
| +import 'analyzer_target.dart' show AnalyzerTarget; |
| + |
| +import '../dill/dill_target.dart' show DillTarget; |
| + |
| +import '../translate_uri.dart' show TranslateUri; |
| + |
| +const int iterations = const int.fromEnvironment("iterations", defaultValue: 1); |
| + |
| +Future<Uri> compile(List<String> arguments) async { |
| + try { |
| + return await CompilerCommandLine.withGlobalOptions("kompile", arguments, |
| + (CompilerContext c) async { |
| + if (c.options.verbose) { |
| + print("Compiling via analyzer: ${arguments.join(' ')}"); |
| + } |
| + AnalyzerCompileTask task = |
| + new AnalyzerCompileTask(c, new Ticker(isVerbose: c.options.verbose)); |
| + return await task.compile(); |
| + }); |
| + } on InputError catch (e) { |
| + exitCode = 1; |
| + print(e.format()); |
| + return null; |
| + } |
| +} |
| + |
| +class AnalyzerCompileTask extends CompileTask { |
| + AnalyzerCompileTask(CompilerContext c, Ticker ticker) : super(c, ticker); |
| + |
| + AnalyzerTarget createKernelTarget( |
| + DillTarget dillTarget, TranslateUri uriTranslator) { |
| + return new AnalyzerTarget(dillTarget, uriTranslator, c.uriToSource); |
| + } |
| +} |
| + |
| +main(List<String> arguments) async { |
|
Paul Berry
2017/03/01 21:56:31
As I mentioned in https://codereview.chromium.org/
ahe
2017/03/02 11:41:50
Yes. I've done that in CL 2722223006.
|
| + for (int i = 0; i < iterations; i++) { |
| + if (i > 0) { |
| + print("\n"); |
| + } |
| + await compile(arguments); |
| + } |
| +} |