| Index: pkg/front_end/lib/src/kernel_generator_impl.dart
|
| diff --git a/pkg/front_end/lib/src/kernel_generator_impl.dart b/pkg/front_end/lib/src/kernel_generator_impl.dart
|
| deleted file mode 100644
|
| index 3a36278fb46ec5cde3145c95157769e510ff86c0..0000000000000000000000000000000000000000
|
| --- a/pkg/front_end/lib/src/kernel_generator_impl.dart
|
| +++ /dev/null
|
| @@ -1,171 +0,0 @@
|
| -// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -/// Defines the front-end API for converting source code to Dart Kernel objects.
|
| -library front_end.kernel_generator_impl;
|
| -
|
| -import 'dart:async' show Future;
|
| -import 'dart:async';
|
| -
|
| -import 'package:kernel/kernel.dart' show Program, CanonicalName;
|
| -
|
| -import 'base/processed_options.dart';
|
| -import 'fasta/dill/dill_target.dart' show DillTarget;
|
| -import 'fasta/errors.dart' show InputError, reportCrash;
|
| -import 'fasta/kernel/kernel_outline_shaker.dart';
|
| -import 'fasta/kernel/kernel_target.dart' show KernelTarget;
|
| -import 'fasta/kernel/verifier.dart';
|
| -import 'fasta/kernel/utils.dart';
|
| -import 'fasta/compiler_command_line.dart';
|
| -import 'fasta/translate_uri.dart' show TranslateUri;
|
| -
|
| -/// Implementation for the `package:front_end/kernel_generator.dart` and
|
| -/// `package:front_end/summary_generator.dart` APIs.
|
| -Future<CompilerResult> generateKernel(ProcessedOptions options,
|
| - {bool buildSummary: false,
|
| - bool buildProgram: true,
|
| - bool trimDependencies: false}) async {
|
| - // TODO(sigmund): Replace CompilerCommandLine and instead simply use a
|
| - // CompilerContext that directly uses the ProcessedOptions throught the
|
| - // system.
|
| - return await CompilerCommandLine.withGlobalOptions("", [""], (context) async {
|
| - context.options.options['--target'] = options.target;
|
| - context.options.options['--strong-mode'] = options.strongMode;
|
| - context.options.options['--verbose'] = options.verbose;
|
| -
|
| - return await generateKernelInternal(options,
|
| - buildSummary: buildSummary,
|
| - buildProgram: buildProgram,
|
| - trimDependencies: trimDependencies);
|
| - });
|
| -}
|
| -
|
| -Future<CompilerResult> generateKernelInternal(ProcessedOptions options,
|
| - {bool buildSummary: false,
|
| - bool buildProgram: true,
|
| - bool trimDependencies: false}) async {
|
| - var fs = options.fileSystem;
|
| - if (!await options.validateOptions()) return null;
|
| - options.ticker.logMs("Validated arguments");
|
| -
|
| - try {
|
| - TranslateUri uriTranslator = await options.getUriTranslator();
|
| -
|
| - var dillTarget =
|
| - new DillTarget(options.ticker, uriTranslator, options.target);
|
| -
|
| - CanonicalName nameRoot = new CanonicalName.root();
|
| - Set<Uri> externalLibs(Program program) {
|
| - return program.libraries
|
| - .where((lib) => lib.isExternal)
|
| - .map((lib) => lib.importUri)
|
| - .toSet();
|
| - }
|
| -
|
| - var sdkSummary = await options.loadSdkSummary(nameRoot);
|
| - if (sdkSummary != null) {
|
| - var excluded = externalLibs(sdkSummary);
|
| - dillTarget.loader
|
| - .appendLibraries(sdkSummary, (uri) => !excluded.contains(uri));
|
| - }
|
| -
|
| - // TODO(sigmund): provide better error reporting if input summaries or
|
| - // linked dependencies were listed out of order (or provide mechanism to
|
| - // sort them).
|
| - for (var inputSummary in await options.loadInputSummaries(nameRoot)) {
|
| - var excluded = externalLibs(inputSummary);
|
| - dillTarget.loader
|
| - .appendLibraries(inputSummary, (uri) => !excluded.contains(uri));
|
| - }
|
| -
|
| - // All summaries are considered external and shouldn't include source-info.
|
| - dillTarget.loader.libraries.forEach((lib) => lib.isExternal = true);
|
| -
|
| - // Linked dependencies are meant to be part of the program so they are not
|
| - // marked external.
|
| - for (var dependency in await options.loadLinkDependencies(nameRoot)) {
|
| - var excluded = externalLibs(dependency);
|
| - dillTarget.loader
|
| - .appendLibraries(dependency, (uri) => !excluded.contains(uri));
|
| - }
|
| -
|
| - await dillTarget.buildOutlines();
|
| -
|
| - var kernelTarget = new KernelTarget(fs, dillTarget, uriTranslator);
|
| - options.inputs.forEach(kernelTarget.read);
|
| - Program summaryProgram =
|
| - await kernelTarget.buildOutlines(nameRoot: nameRoot);
|
| - List<int> summary = null;
|
| - if (buildSummary) {
|
| - if (trimDependencies) {
|
| - // TODO(sigmund): see if it is worth supporting this. Note: trimming the
|
| - // program is destructive, so if we are emitting summaries and the
|
| - // program in a single API call, we would need to clone the program here
|
| - // to avoid deleting pieces that are needed by kernelTarget.buildProgram
|
| - // below.
|
| - assert(!buildProgram);
|
| - var excluded =
|
| - dillTarget.loader.libraries.map((lib) => lib.importUri).toSet();
|
| - trimProgram(summaryProgram, (uri) => !excluded.contains(uri));
|
| - }
|
| - if (options.verify) {
|
| - verifyProgram(summaryProgram).forEach((e) => options.reportError('$e'));
|
| - }
|
| - if (options.debugDump) {
|
| - printProgramText(summaryProgram,
|
| - libraryFilter: kernelTarget.isSourceLibrary);
|
| - }
|
| - if (kernelTarget.errors.isEmpty) {
|
| - summary = serializeProgram(summaryProgram, excludeUriToSource: true);
|
| - }
|
| - options.ticker.logMs("Generated outline");
|
| - }
|
| -
|
| - Program program;
|
| - if (buildProgram && kernelTarget.errors.isEmpty) {
|
| - program = await kernelTarget.buildProgram(verify: options.verify);
|
| - if (trimDependencies) {
|
| - var excluded =
|
| - dillTarget.loader.libraries.map((lib) => lib.importUri).toSet();
|
| - trimProgram(program, (uri) => !excluded.contains(uri));
|
| - }
|
| - if (options.debugDump) {
|
| - printProgramText(program, libraryFilter: kernelTarget.isSourceLibrary);
|
| - }
|
| - options.ticker.logMs("Generated program");
|
| - }
|
| -
|
| - if (kernelTarget.errors.isNotEmpty) {
|
| - kernelTarget.errors.forEach(options.reportError);
|
| - return null;
|
| - }
|
| -
|
| - return new CompilerResult(
|
| - summary: summary,
|
| - program: program,
|
| - deps: kernelTarget.loader.getDependencies());
|
| - } on InputError catch (e) {
|
| - options.reportError(e.format());
|
| - return null;
|
| - } catch (e, t) {
|
| - return reportCrash(e, t);
|
| - }
|
| -}
|
| -
|
| -/// Result object of [generateKernel].
|
| -class CompilerResult {
|
| - /// The generated summary bytes, if it was requested.
|
| - final List<int> summary;
|
| -
|
| - /// The generated program, if it was requested.
|
| - final Program program;
|
| -
|
| - /// Dependencies traversed by the compiler. Used only for generating
|
| - /// dependency .GN files in the dart-sdk build system.
|
| - /// Note this might be removed when we switch to compute depencencies without
|
| - /// using the compiler itself.
|
| - final List<Uri> deps;
|
| -
|
| - CompilerResult({this.summary, this.program, this.deps});
|
| -}
|
|
|