| 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 |