| Index: pkg/front_end/lib/kernel_generator.dart
|
| diff --git a/pkg/front_end/lib/kernel_generator.dart b/pkg/front_end/lib/kernel_generator.dart
|
| index 0f5a4d888365aa8dacd1b1ec7f60d4d6b4945491..6292ae300b8289681e46b96c4dc95afcde3f2ffd 100644
|
| --- a/pkg/front_end/lib/kernel_generator.dart
|
| +++ b/pkg/front_end/lib/kernel_generator.dart
|
| @@ -8,7 +8,7 @@ library front_end.kernel_generator;
|
| import 'compiler_options.dart';
|
| import 'dart:async' show Future;
|
| import 'dart:async';
|
| -import 'package:front_end/src/base/processed_options.dart';
|
| +import 'package:front_end/physical_file_system.dart';
|
| import 'src/fasta/dill/dill_target.dart' show DillTarget;
|
| import 'src/fasta/errors.dart' show InputError;
|
| import 'src/fasta/kernel/kernel_target.dart' show KernelTarget;
|
| @@ -29,13 +29,15 @@ import 'src/simple_error.dart';
|
| /// If `compileSdk` in [options] is true, the generated program will include
|
| /// code for the SDK.
|
| ///
|
| -/// If summaries are provided in [options], they will be used to speed up
|
| -/// the process. If in addition `compileSdk` is false, then the resulting
|
| -/// program will not contain the sdk contents. This is useful when building apps
|
| -/// for platforms that already embed the sdk (e.g. the VM), so there is no need
|
| -/// to spend time and space rebuilding it.
|
| +/// If summaries are provided in [options], they may be used to speed up
|
| +/// analysis. If in addition `compileSdk` is false, this will speed up
|
| +/// compilation, as no source of the sdk will be generated. Note however, that
|
| +/// summaries for application code can also speed up analysis, but they will not
|
| +/// take the place of Dart source code (since the Dart source code is still
|
| +/// needed to access the contents of method bodies).
|
| Future<Program> kernelForProgram(Uri source, CompilerOptions options) async {
|
| var fs = options.fileSystem;
|
| +
|
| report(String msg) {
|
| options.onError(new SimpleError(msg));
|
| return null;
|
| @@ -45,19 +47,16 @@ Future<Program> kernelForProgram(Uri source, CompilerOptions options) async {
|
| return report("Entry-point file not found: $source");
|
| }
|
|
|
| - var pOptions = new ProcessedOptions(options);
|
| -
|
| - if (!await pOptions.validateOptions()) return null;
|
| + if (!await validateOptions(options)) return null;
|
|
|
| try {
|
| - TranslateUri uriTranslator = await pOptions.getUriTranslator();
|
| + TranslateUri uriTranslator = await TranslateUri.parse(
|
| + PhysicalFileSystem.instance, null, options.packagesFileUri);
|
|
|
| var dillTarget =
|
| new DillTarget(new Ticker(isVerbose: false), uriTranslator);
|
| - var summary = await pOptions.sdkSummaryProgram;
|
| - if (summary != null) {
|
| - dillTarget.loader.appendLibraries(summary);
|
| - }
|
| + var summary = options.sdkSummary;
|
| + if (summary != null) dillTarget.read(summary);
|
|
|
| var kernelTarget = new KernelTarget(
|
| options.fileSystem, dillTarget, uriTranslator, options.strongMode);
|
| @@ -65,7 +64,7 @@ Future<Program> kernelForProgram(Uri source, CompilerOptions options) async {
|
|
|
| await dillTarget.buildOutlines();
|
| await kernelTarget.buildOutlines();
|
| - Program program = await kernelTarget.buildProgram(trimDependencies: true);
|
| + Program program = await kernelTarget.buildProgram();
|
|
|
| if (kernelTarget.errors.isNotEmpty) {
|
| kernelTarget.errors.forEach(report);
|
| @@ -122,63 +121,5 @@ Future<Program> kernelForProgram(Uri source, CompilerOptions options) async {
|
| /// obtained from?
|
| Future<Program> kernelForBuildUnit(
|
| List<Uri> sources, CompilerOptions options) async {
|
| - var fs = options.fileSystem;
|
| - report(String msg) {
|
| - options.onError(new SimpleError(msg));
|
| - return null;
|
| - }
|
| -
|
| - if (!options.chaseDependencies) {
|
| - // TODO(sigmund): add support, most likely we can do so by adding a wrapper
|
| - // on top of filesystem that restricts reads to a set of known files.
|
| - report("hermetic mode (chaseDependencies = false) is not implemented");
|
| - return null;
|
| - }
|
| -
|
| - for (var source in sources) {
|
| - if (!await fs.entityForUri(source).exists()) {
|
| - return report("Entry-point file not found: $source");
|
| - }
|
| - }
|
| -
|
| - var pOptions = new ProcessedOptions(options);
|
| -
|
| - if (!await pOptions.validateOptions()) return null;
|
| -
|
| - try {
|
| - TranslateUri uriTranslator = await pOptions.getUriTranslator();
|
| -
|
| - var dillTarget =
|
| - new DillTarget(new Ticker(isVerbose: false), uriTranslator);
|
| - var summary = await pOptions.sdkSummaryProgram;
|
| - if (summary != null) {
|
| - dillTarget.loader.appendLibraries(summary);
|
| - }
|
| -
|
| - // TODO(sigmund): this is likely not going to work if done naively: if
|
| - // summaries contain external references we need to ensure they are loaded
|
| - // in a specific order.
|
| - for (var inputSummary in await pOptions.inputSummariesPrograms) {
|
| - dillTarget.loader.appendLibraries(inputSummary);
|
| - }
|
| -
|
| - await dillTarget.buildOutlines();
|
| -
|
| - var kernelTarget = new KernelTarget(
|
| - options.fileSystem, dillTarget, uriTranslator, options.strongMode);
|
| - sources.forEach(kernelTarget.read);
|
| - await kernelTarget.buildOutlines();
|
| -
|
| - Program program = await kernelTarget.buildProgram(trimDependencies: true);
|
| -
|
| - if (kernelTarget.errors.isNotEmpty) {
|
| - kernelTarget.errors.forEach(report);
|
| - return null;
|
| - }
|
| -
|
| - return program;
|
| - } on InputError catch (e) {
|
| - options.onError(new SimpleError(e.format()));
|
| - return null;
|
| - }
|
| + throw new UnimplementedError("kernel for build-unit is not implemented");
|
| }
|
|
|