OLD | NEW |
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; |
6 | 6 |
7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
8 | 8 |
9 import 'dart:convert' show JSON; | 9 import 'dart:convert' show JSON; |
10 | 10 |
11 import 'dart:io' show BytesBuilder, FileSystemEntity, exitCode; | 11 import 'dart:io' show BytesBuilder, FileSystemEntity, exitCode; |
12 | 12 |
13 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; | 13 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; |
14 | 14 |
15 import 'package:kernel/kernel.dart' show Program; | 15 import 'package:kernel/kernel.dart' show Program; |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 final Ticker ticker = new Ticker(isVerbose: verbose); | 181 final Ticker ticker = new Ticker(isVerbose: verbose); |
182 final DillTarget dillTarget = new DillTarget(ticker, uriTranslator); | 182 final DillTarget dillTarget = new DillTarget(ticker, uriTranslator); |
183 dillTarget.read(patchedSdk.resolve('platform.dill')); | 183 dillTarget.read(patchedSdk.resolve('platform.dill')); |
184 final KernelTarget kernelTarget = new KernelTarget(dillTarget, uriTranslator); | 184 final KernelTarget kernelTarget = new KernelTarget(dillTarget, uriTranslator); |
185 try { | 185 try { |
186 kernelTarget.read(fileName); | 186 kernelTarget.read(fileName); |
187 await dillTarget.writeOutline(null); | 187 await dillTarget.writeOutline(null); |
188 program = await kernelTarget.writeOutline(null); | 188 program = await kernelTarget.writeOutline(null); |
189 program = await kernelTarget.writeProgram(null); | 189 program = await kernelTarget.writeProgram(null); |
190 if (kernelTarget.errors.isNotEmpty) { | 190 if (kernelTarget.errors.isNotEmpty) { |
191 return new CompilationResult.error(kernelTarget.errors | 191 return new CompilationResult.errors(kernelTarget.errors |
192 .map((err) => err.toString()) | 192 .map((err) => err.toString()) |
193 .toList(growable: false)); | 193 .toList(growable: false)); |
194 } | 194 } |
195 } on InputError catch (e) { | 195 } on InputError catch (e) { |
196 return new CompilationResult.error(<String>[e.format()]); | 196 return new CompilationResult.error(e.format()); |
197 } | 197 } |
198 | 198 |
199 // Perform target-specific transformations. | 199 // Perform target-specific transformations. |
200 target.performModularTransformations(program); | 200 target.performModularTransformations(program); |
201 target.performGlobalTransformations(program); | 201 target.performGlobalTransformations(program); |
202 | 202 |
203 // Write the program to a list of bytes and return it. | 203 // Write the program to a list of bytes and return it. |
204 var sink = new ByteSink(); | 204 var sink = new ByteSink(); |
205 new BinaryPrinter(sink).writeProgramFile(program); | 205 new BinaryPrinter(sink).writeProgramFile(program); |
206 return new CompilationResult.ok(sink.builder.takeBytes()); | 206 return new CompilationResult.ok(sink.builder.takeBytes()); |
207 } | 207 } |
208 | 208 |
209 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 | 209 // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 |
210 class ByteSink implements Sink<List<int>> { | 210 class ByteSink implements Sink<List<int>> { |
211 final BytesBuilder builder = new BytesBuilder(); | 211 final BytesBuilder builder = new BytesBuilder(); |
212 | 212 |
213 void add(List<int> data) { | 213 void add(List<int> data) { |
214 builder.add(data); | 214 builder.add(data); |
215 } | 215 } |
216 | 216 |
217 void close() { | 217 void close() { |
218 // Nothing to do. | 218 // Nothing to do. |
219 } | 219 } |
220 } | 220 } |
OLD | NEW |