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(); |