Chromium Code Reviews| Index: pkg/front_end/lib/src/fasta/fasta.dart |
| diff --git a/pkg/front_end/lib/src/fasta/fasta.dart b/pkg/front_end/lib/src/fasta/fasta.dart |
| index eb4867d749ca587417494de17966fb440e0cc79a..d48af9a94e03619e92229920714250d6dc7a57b6 100644 |
| --- a/pkg/front_end/lib/src/fasta/fasta.dart |
| +++ b/pkg/front_end/lib/src/fasta/fasta.dart |
| @@ -14,7 +14,7 @@ import 'package:front_end/physical_file_system.dart'; |
| import 'package:kernel/binary/ast_to_binary.dart' |
| show LibraryFilteringBinaryPrinter; |
| -import 'package:kernel/kernel.dart' show Program, Library; |
| +import 'package:kernel/kernel.dart' show Library, Program, loadProgramFromBytes; |
| import 'package:kernel/target/targets.dart' show Target, TargetFlags, getTarget; |
| @@ -180,7 +180,7 @@ Future<CompilationResult> parseScript( |
| await TranslateUri.parse(PhysicalFileSystem.instance, null, packages); |
| final Ticker ticker = new Ticker(isVerbose: verbose); |
| final DillTarget dillTarget = new DillTarget(ticker, uriTranslator); |
| - dillTarget.read(patchedSdk.resolve('platform.dill')); |
| + _appendDillForUri(dillTarget, patchedSdk.resolve('platform.dill')); |
| final KernelTarget kernelTarget = new KernelTarget( |
| PhysicalFileSystem.instance, dillTarget, uriTranslator, strongMode); |
| kernelTarget.read(fileName); |
| @@ -249,9 +249,9 @@ Future writeDepsFile(Uri script, Uri depsFile, Uri output, |
| TranslateUri uriTranslator = await TranslateUri.parse( |
| c.fileSystem, c.options.sdk, c.options.packages); |
| - ticker.logMs("Read packages file"); |
| - DillTarget dillTarget = new DillTarget(ticker, uriTranslator) |
| - ..read(platform); |
| + ticker.logMs("Read platform file"); |
| + DillTarget dillTarget = new DillTarget(ticker, uriTranslator); |
| + _appendDillForUri(dillTarget, platform); |
| KernelTarget kernelTarget = new KernelTarget(PhysicalFileSystem.instance, |
| dillTarget, uriTranslator, false, c.uriToSource); |
| @@ -263,6 +263,16 @@ Future writeDepsFile(Uri script, Uri depsFile, Uri output, |
| }); |
| } |
| +/// If the [uri] is not empty, load a [Program] from it and append its |
|
Siggi Cherem (dart-lang)
2017/05/09 20:14:30
nit: "empty" => "null"
Do we have any cases where
scheglov
2017/05/09 20:32:22
I think we don't.
In one case the "platform" is a
|
| +/// libraries to the [dillTarget]. |
| +void _appendDillForUri(DillTarget dillTarget, Uri uri) { |
| + if (uri != null) { |
| + var bytes = new File.fromUri(uri).readAsBytesSync(); |
| + var platformProgram = loadProgramFromBytes(bytes); |
| + dillTarget.loader.addDill(platformProgram); |
| + } |
| +} |
| + |
| // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316 |
| class ByteSink implements Sink<List<int>> { |
| final BytesBuilder builder = new BytesBuilder(); |