| Index: pkg/front_end/lib/src/fasta/vm.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/vm.dart b/pkg/front_end/lib/src/fasta/vm.dart
|
| deleted file mode 100644
|
| index 2da5da863b50ea880b9c269148ae24691840a280..0000000000000000000000000000000000000000
|
| --- a/pkg/front_end/lib/src/fasta/vm.dart
|
| +++ /dev/null
|
| @@ -1,165 +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.
|
| -
|
| -/// API for compiling Dart source code to .dill (Kernel IR) files.
|
| -library front_end.vm;
|
| -// TODO(ahe): Convert this file to use the API in `../../kernel_generator.dart`
|
| -// and `../../compiler_options.dart`.
|
| -
|
| -import 'dart:async' show Future;
|
| -
|
| -import 'dart:io' show File, Platform;
|
| -
|
| -import 'dart:typed_data' show Uint8List;
|
| -
|
| -import 'package:front_end/file_system.dart';
|
| -import 'package:front_end/physical_file_system.dart';
|
| -
|
| -import 'fasta.dart' as fasta;
|
| -
|
| -import 'package:kernel/target/targets.dart' show TargetFlags;
|
| -import 'package:kernel/target/vm_fasta.dart' show VmFastaTarget;
|
| -
|
| -/// Compilation status codes.
|
| -///
|
| -/// Note: The [index] property of these constants must match
|
| -/// `Dart_KernelCompilationStatus` in
|
| -/// [dart_api.h](../../../../runtime/include/dart_api.h).
|
| -enum Status {
|
| - /// Compilation was successful.
|
| - ok,
|
| -
|
| - /// Compilation failed with a compile time error.
|
| - error,
|
| -
|
| - /// Compiler crashed.
|
| - crash,
|
| -}
|
| -
|
| -abstract class CompilationResult {
|
| - CompilationResult._();
|
| -
|
| - factory CompilationResult.ok(Uint8List bytes) = _CompilationOk;
|
| -
|
| - factory CompilationResult.errors(List<String> errors) = _CompilationError;
|
| -
|
| - factory CompilationResult.error(String error) {
|
| - return new _CompilationError(<String>[error]);
|
| - }
|
| -
|
| - factory CompilationResult.crash(Object exception, StackTrace stack) =
|
| - _CompilationCrash;
|
| -
|
| - Status get status;
|
| -
|
| - get payload;
|
| -
|
| - List toResponse() => [status.index, payload];
|
| -}
|
| -
|
| -Future<CompilationResult> parseScript(Uri script,
|
| - {bool verbose: false, bool strongMode: false}) async {
|
| - return parseScriptInFileSystem(script, PhysicalFileSystem.instance,
|
| - verbose: verbose, strongMode: strongMode);
|
| -}
|
| -
|
| -Future<CompilationResult> parseScriptInFileSystem(
|
| - Uri script, FileSystem fileSystem,
|
| - {bool verbose: false, bool strongMode: false}) async {
|
| - final Uri packagesUri = (Platform.packageConfig != null)
|
| - ? Uri.parse(Platform.packageConfig)
|
| - : await _findPackagesFile(fileSystem, script);
|
| - if (packagesUri == null) {
|
| - throw "Could not find .packages";
|
| - }
|
| -
|
| - final Uri patchedSdk = Uri.base
|
| - .resolveUri(new Uri.file(Platform.resolvedExecutable))
|
| - .resolveUri(new Uri.directory("patched_sdk"));
|
| -
|
| - if (verbose) {
|
| - print("""DFE: Requesting compilation {
|
| - scriptUri: ${script}
|
| - packagesUri: ${packagesUri}
|
| - patchedSdk: ${patchedSdk}
|
| -}""");
|
| - }
|
| -
|
| - try {
|
| - return await fasta.parseScriptInFileSystem(script, fileSystem, packagesUri,
|
| - patchedSdk, new VmFastaTarget(new TargetFlags(strongMode: strongMode)),
|
| - verbose: verbose);
|
| - } catch (err, stack) {
|
| - return new CompilationResult.crash(err, stack);
|
| - }
|
| -}
|
| -
|
| -class _CompilationOk extends CompilationResult {
|
| - final Uint8List bytes;
|
| -
|
| - _CompilationOk(this.bytes) : super._();
|
| -
|
| - @override
|
| - Status get status => Status.ok;
|
| -
|
| - @override
|
| - get payload => bytes;
|
| -
|
| - String toString() => "_CompilationOk(${bytes.length} bytes)";
|
| -}
|
| -
|
| -abstract class _CompilationFail extends CompilationResult {
|
| - _CompilationFail() : super._();
|
| -
|
| - String get errorString;
|
| -
|
| - @override
|
| - get payload => errorString;
|
| -}
|
| -
|
| -class _CompilationError extends _CompilationFail {
|
| - final List<String> errors;
|
| -
|
| - _CompilationError(this.errors);
|
| -
|
| - @override
|
| - Status get status => Status.error;
|
| -
|
| - @override
|
| - String get errorString => errors.take(10).join('\n');
|
| -
|
| - String toString() => "_CompilationError(${errorString})";
|
| -}
|
| -
|
| -class _CompilationCrash extends _CompilationFail {
|
| - final Object exception;
|
| - final StackTrace stack;
|
| -
|
| - _CompilationCrash(this.exception, this.stack);
|
| -
|
| - @override
|
| - Status get status => Status.crash;
|
| -
|
| - @override
|
| - String get errorString => "${exception}\n${stack}";
|
| -
|
| - String toString() => "_CompilationCrash(${errorString})";
|
| -}
|
| -
|
| -/// This duplicates functionality from the Loader which we can't easily
|
| -/// access from here.
|
| -Future<Uri> _findPackagesFile(FileSystem fileSystem, Uri base) async {
|
| - var dir = new File.fromUri(base).parent;
|
| - while (true) {
|
| - final packagesFile = dir.uri.resolve(".packages");
|
| - if (await fileSystem.entityForUri(packagesFile).exists()) {
|
| - return packagesFile;
|
| - }
|
| - if (dir.parent.path == dir.path) {
|
| - break;
|
| - }
|
| - dir = dir.parent;
|
| - }
|
| - return null;
|
| -}
|
|
|