Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Side by Side Diff: pkg/front_end/lib/src/fasta/outline.dart

Issue 2723113002: Consolidate analyzer dependencies. (Closed)
Patch Set: Remove new dependency on AsyncMarker. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.outline; 5 library fasta.outline;
6 6
7 import 'dart:async' show Future; 7 import 'dart:async' show Future;
8 8
9 import 'dart:io' show exitCode; 9 import 'dart:io' show exitCode;
10 10
11 import 'kernel/verifier.dart' show verifyProgram; 11 import 'kernel/verifier.dart' show verifyProgram;
12 12
13 import 'compiler_command_line.dart' show CompilerCommandLine; 13 import 'compiler_command_line.dart' show CompilerCommandLine;
14 14
15 import 'compiler_context.dart' show CompilerContext; 15 import 'compiler_context.dart' show CompilerContext;
16 16
17 import 'errors.dart' show InputError, inputError; 17 import 'errors.dart' show InputError, inputError;
18 18
19 import 'kernel/kernel_target.dart' show KernelTarget; 19 import 'kernel/kernel_target.dart' show KernelTarget;
20 20
21 import 'dill/dill_target.dart' show DillTarget; 21 import 'dill/dill_target.dart' show DillTarget;
22 22
23 import 'ticker.dart' show Ticker; 23 import 'ticker.dart' show Ticker;
24 24
25 import 'translate_uri.dart' show TranslateUri; 25 import 'translate_uri.dart' show TranslateUri;
26 26
27 import 'ast_kind.dart' show AstKind;
28
29 Future<KernelTarget> outline(List<String> arguments) async { 27 Future<KernelTarget> outline(List<String> arguments) async {
30 try { 28 try {
31 return await CompilerCommandLine.withGlobalOptions("outline", arguments, 29 return await CompilerCommandLine.withGlobalOptions("outline", arguments,
32 (CompilerContext c) async { 30 (CompilerContext c) async {
33 if (c.options.verbose) { 31 if (c.options.verbose) {
34 print("Building outlines for ${arguments.join(' ')}"); 32 print("Building outlines for ${arguments.join(' ')}");
35 } 33 }
36 return await doOutline( 34 CompileTask task =
37 c, new Ticker(isVerbose: c.options.verbose), c.options.output); 35 new CompileTask(c, new Ticker(isVerbose: c.options.verbose));
36 return await task.buildOutline(c.options.output);
38 }); 37 });
39 } on InputError catch (e) { 38 } on InputError catch (e) {
40 exitCode = 1; 39 exitCode = 1;
41 print(e.format()); 40 print(e.format());
42 return null; 41 return null;
43 } 42 }
44 } 43 }
45 44
46 Future<Uri> compile(List<String> arguments) async { 45 Future<Uri> compile(List<String> arguments) async {
47 try { 46 try {
48 return await CompilerCommandLine.withGlobalOptions("compile", arguments, 47 return await CompilerCommandLine.withGlobalOptions("compile", arguments,
49 (CompilerContext c) async { 48 (CompilerContext c) async {
50 if (c.options.verbose) { 49 if (c.options.verbose) {
51 print("Compiling directly to Kernel: ${arguments.join(' ')}"); 50 print("Compiling directly to Kernel: ${arguments.join(' ')}");
52 } 51 }
53 return await doCompile( 52 CompileTask task =
54 c, new Ticker(isVerbose: c.options.verbose), AstKind.Kernel); 53 new CompileTask(c, new Ticker(isVerbose: c.options.verbose));
54 return await task.compile();
55 }); 55 });
56 } on InputError catch (e) { 56 } on InputError catch (e) {
57 exitCode = 1; 57 exitCode = 1;
58 print(e.format()); 58 print(e.format());
59 return null; 59 return null;
60 } 60 }
61 } 61 }
62 62
63 Future<Uri> kompile(List<String> arguments) async { 63 class CompileTask {
64 try { 64 final CompilerContext c;
65 return await CompilerCommandLine.withGlobalOptions("kompile", arguments, 65 final Ticker ticker;
66 (CompilerContext c) async { 66
67 if (c.options.verbose) { 67 CompileTask(this.c, this.ticker);
68 print("Compiling via analyzer: ${arguments.join(' ')}"); 68
69 KernelTarget createKernelTarget(
70 DillTarget dillTarget, TranslateUri uriTranslator) {
71 return new KernelTarget(dillTarget, uriTranslator, c.uriToSource);
72 }
73
74 Future<KernelTarget> buildOutline([Uri output]) async {
75 TranslateUri uriTranslator = await TranslateUri.parse(c.options.sdk);
76 ticker.logMs("Read packages file");
77 DillTarget dillTarget = new DillTarget(ticker, uriTranslator);
78 KernelTarget kernelTarget = createKernelTarget(dillTarget, uriTranslator);
79 Uri platform = c.options.platform;
80 if (platform != null) {
81 dillTarget.read(platform);
82 }
83 String argument = c.options.arguments.first;
84 Uri uri = Uri.base.resolve(argument);
85 String path = uriTranslator.translate(uri)?.path ?? argument;
86 if (path.endsWith(".dart")) {
87 kernelTarget.read(uri);
88 } else {
89 inputError(uri, -1, "Unexpected input: $uri");
90 }
91 await dillTarget.writeOutline(null);
92 await kernelTarget.writeOutline(output);
93 if (c.options.dumpIr && output != null) {
94 kernelTarget.dumpIr();
95 }
96 return kernelTarget;
97 }
98
99 Future<Uri> compile() async {
100 KernelTarget kernelTarget = await buildOutline();
101 if (exitCode != 0) return null;
102 Uri uri = c.options.output;
103 await kernelTarget.writeProgram(uri);
104 if (c.options.dumpIr) {
105 kernelTarget.dumpIr();
106 }
107 if (c.options.verify) {
108 try {
109 verifyProgram(kernelTarget.program);
110 ticker.logMs("Verified program");
111 } catch (e, s) {
112 exitCode = 1;
113 print("Verification of program failed: $e");
114 if (s != null && c.options.verbose) {
115 print(s);
116 }
69 } 117 }
70 return await doCompile( 118 }
71 c, new Ticker(isVerbose: c.options.verbose), AstKind.Analyzer); 119 return uri;
72 });
73 } on InputError catch (e) {
74 exitCode = 1;
75 print(e.format());
76 return null;
77 } 120 }
78 } 121 }
79
80 Future<KernelTarget> doOutline(CompilerContext c, Ticker ticker,
81 [Uri output]) async {
82 TranslateUri uriTranslator = await TranslateUri.parse(c.options.sdk);
83 ticker.logMs("Read packages file");
84 DillTarget dillTarget = new DillTarget(ticker, uriTranslator);
85 KernelTarget kernelTarget =
86 new KernelTarget(dillTarget, uriTranslator, c.uriToSource);
87 Uri platform = c.options.platform;
88 if (platform != null) {
89 dillTarget.read(platform);
90 }
91 String argument = c.options.arguments.first;
92 Uri uri = Uri.base.resolve(argument);
93 String path = uriTranslator.translate(uri)?.path ?? argument;
94 if (path.endsWith(".dart")) {
95 kernelTarget.read(uri);
96 } else {
97 inputError(uri, -1, "Unexpected input: $uri");
98 }
99 await dillTarget.writeOutline(null);
100 await kernelTarget.writeOutline(output);
101 if (c.options.dumpIr && output != null) {
102 kernelTarget.dumpIr();
103 }
104 return kernelTarget;
105 }
106
107 Future<Uri> doCompile(CompilerContext c, Ticker ticker, AstKind kind) async {
108 KernelTarget kernelTarget = await doOutline(c, ticker);
109 if (exitCode != 0) return null;
110 Uri uri = c.options.output;
111 await kernelTarget.writeProgram(uri, kind);
112 if (c.options.dumpIr) {
113 kernelTarget.dumpIr();
114 }
115 if (c.options.verify) {
116 try {
117 verifyProgram(kernelTarget.program);
118 ticker.logMs("Verified program");
119 } catch (e, s) {
120 exitCode = 1;
121 print("Verification of program failed: $e");
122 if (s != null && c.options.verbose) {
123 print(s);
124 }
125 }
126 }
127 return uri;
128 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/loader.dart ('k') | pkg/front_end/lib/src/fasta/scanner/keyword.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698