| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /// API for compiling Dart source code to .dill (Kernel IR) files. | 5 /// API for compiling Dart source code to .dill (Kernel IR) files. |
| 6 library front_end.vm; | 6 library front_end.vm; |
| 7 // TODO(ahe): Convert this file to use the API in `../../kernel_generator.dart` | 7 // TODO(ahe): Convert this file to use the API in `../../kernel_generator.dart` |
| 8 // and `../../compiler_options.dart`. | 8 // and `../../compiler_options.dart`. |
| 9 | 9 |
| 10 import 'dart:async' show Future; | 10 import 'dart:async' show Future; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 factory CompilationResult.crash(Object exception, StackTrace stack) = | 45 factory CompilationResult.crash(Object exception, StackTrace stack) = |
| 46 _CompilationCrash; | 46 _CompilationCrash; |
| 47 | 47 |
| 48 Status get status; | 48 Status get status; |
| 49 | 49 |
| 50 get payload; | 50 get payload; |
| 51 | 51 |
| 52 List toResponse() => [status.index, payload]; | 52 List toResponse() => [status.index, payload]; |
| 53 } | 53 } |
| 54 | 54 |
| 55 Future<CompilationResult> parseScript(Uri script, {bool verbose: false}) async { | 55 Future<CompilationResult> parseScript(Uri script, |
| 56 {bool verbose: false, bool strongMode: false}) async { |
| 56 final Uri packagesUri = (Platform.packageConfig != null) | 57 final Uri packagesUri = (Platform.packageConfig != null) |
| 57 ? Uri.parse(Platform.packageConfig) | 58 ? Uri.parse(Platform.packageConfig) |
| 58 : await _findPackagesFile(script); | 59 : await _findPackagesFile(script); |
| 59 if (packagesUri == null) { | 60 if (packagesUri == null) { |
| 60 throw "Could not find .packages"; | 61 throw "Could not find .packages"; |
| 61 } | 62 } |
| 62 | 63 |
| 63 final Uri patchedSdk = Uri.base | 64 final Uri patchedSdk = Uri.base |
| 64 .resolveUri(new Uri.file(Platform.resolvedExecutable)) | 65 .resolveUri(new Uri.file(Platform.resolvedExecutable)) |
| 65 .resolveUri(new Uri.directory("patched_sdk")); | 66 .resolveUri(new Uri.directory("patched_sdk")); |
| 66 | 67 |
| 67 if (verbose) { | 68 if (verbose) { |
| 68 print("""DFE: Requesting compilation { | 69 print("""DFE: Requesting compilation { |
| 69 scriptUri: ${script} | 70 scriptUri: ${script} |
| 70 packagesUri: ${packagesUri} | 71 packagesUri: ${packagesUri} |
| 71 patchedSdk: ${patchedSdk} | 72 patchedSdk: ${patchedSdk} |
| 72 }"""); | 73 }"""); |
| 73 } | 74 } |
| 74 | 75 |
| 75 try { | 76 try { |
| 76 return await fasta.parseScript(script, packagesUri, patchedSdk, verbose); | 77 return await fasta.parseScript(script, packagesUri, patchedSdk, |
| 78 verbose: verbose, strongMode: strongMode); |
| 77 } catch (err, stack) { | 79 } catch (err, stack) { |
| 78 return new CompilationResult.crash(err, stack); | 80 return new CompilationResult.crash(err, stack); |
| 79 } | 81 } |
| 80 } | 82 } |
| 81 | 83 |
| 82 class _CompilationOk extends CompilationResult { | 84 class _CompilationOk extends CompilationResult { |
| 83 final Uint8List bytes; | 85 final Uint8List bytes; |
| 84 | 86 |
| 85 _CompilationOk(this.bytes) : super._(); | 87 _CompilationOk(this.bytes) : super._(); |
| 86 | 88 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 if (await new File.fromUri(packagesFile).exists()) { | 142 if (await new File.fromUri(packagesFile).exists()) { |
| 141 return packagesFile; | 143 return packagesFile; |
| 142 } | 144 } |
| 143 if (dir.parent.path == dir.path) { | 145 if (dir.parent.path == dir.path) { |
| 144 break; | 146 break; |
| 145 } | 147 } |
| 146 dir = dir.parent; | 148 dir = dir.parent; |
| 147 } | 149 } |
| 148 return null; | 150 return null; |
| 149 } | 151 } |
| OLD | NEW |