| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 /// A library for compiling Dart code and manipulating analyzer parse trees. | 5 /// A library for compiling Dart code and manipulating analyzer parse trees. |
| 6 import 'dart:async'; | 6 import 'dart:async'; |
| 7 import 'dart:io'; | 7 import 'dart:io'; |
| 8 import 'dart:isolate'; | 8 import 'dart:isolate'; |
| 9 | 9 |
| 10 import 'package:analyzer/analyzer.dart'; | 10 import 'package:analyzer/analyzer.dart'; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 /// The URI to the root directory where "dart:" libraries can be found. | 27 /// The URI to the root directory where "dart:" libraries can be found. |
| 28 /// | 28 /// |
| 29 /// This is used as the base URL to generate library URLs that are then sent | 29 /// This is used as the base URL to generate library URLs that are then sent |
| 30 /// back to [provideInput]. | 30 /// back to [provideInput]. |
| 31 Uri get libraryRoot; | 31 Uri get libraryRoot; |
| 32 | 32 |
| 33 /// Given [uri], responds with a future that completes to the contents of | 33 /// Given [uri], responds with a future that completes to the contents of |
| 34 /// the input file at that URI. | 34 /// the input file at that URI. |
| 35 /// | 35 /// |
| 36 /// The future can complete to a string or a list of bytes. | 36 /// The future can complete to a string or a list of bytes. |
| 37 Future/*<String | List<int>>*/ provideInput(Uri uri); | 37 Future provideInput(Uri uri); |
| 38 | 38 |
| 39 /// Reports a diagnostic message from dart2js to the user. | 39 /// Reports a diagnostic message from dart2js to the user. |
| 40 void handleDiagnostic(Uri uri, int begin, int end, String message, | 40 void handleDiagnostic(Uri uri, int begin, int end, String message, |
| 41 compiler.Diagnostic kind); | 41 compiler.Diagnostic kind); |
| 42 | 42 |
| 43 /// Given a [name] (which will be "" for the entrypoint) and a file extension, | 43 /// Given a [name] (which will be "" for the entrypoint) and a file extension, |
| 44 /// returns an [EventSink] that dart2js can write to to emit an output file. | 44 /// returns an [EventSink] that dart2js can write to to emit an output file. |
| 45 EventSink<String> provideOutput(String name, String extension); | 45 EventSink<String> provideOutput(String name, String extension); |
| 46 } | 46 } |
| 47 | 47 |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 }); | 185 }); |
| 186 | 186 |
| 187 var response = await port.first; | 187 var response = await port.first; |
| 188 if (response['type'] == 'error') { | 188 if (response['type'] == 'error') { |
| 189 throw new CrossIsolateException.deserialize(response['error']); | 189 throw new CrossIsolateException.deserialize(response['error']); |
| 190 } | 190 } |
| 191 | 191 |
| 192 if (snapshot == null) return; | 192 if (snapshot == null) return; |
| 193 | 193 |
| 194 ensureDir(p.dirname(snapshot)); | 194 ensureDir(p.dirname(snapshot)); |
| 195 var snapshotArgs = []; | 195 var snapshotArgs = <String>[]; |
| 196 if (packageRoot != null) snapshotArgs.add('--package-root=$packageRoot'); | 196 if (packageRoot != null) snapshotArgs.add('--package-root=$packageRoot'); |
| 197 snapshotArgs.addAll(['--snapshot=$snapshot', dartPath]); | 197 snapshotArgs.addAll(['--snapshot=$snapshot', dartPath]); |
| 198 var result = await runProcess(Platform.executable, snapshotArgs); | 198 var result = await runProcess(Platform.executable, snapshotArgs); |
| 199 | 199 |
| 200 if (result.success) return; | 200 if (result.success) return; |
| 201 | 201 |
| 202 // Don't emit a fatal error here, since we don't want to crash the | 202 // Don't emit a fatal error here, since we don't want to crash the |
| 203 // otherwise successful isolate load. | 203 // otherwise successful isolate load. |
| 204 log.warning("Failed to compile a snapshot to " | 204 log.warning("Failed to compile a snapshot to " |
| 205 "${p.relative(snapshot)}:\n" + result.stderr.join("\n")); | 205 "${p.relative(snapshot)}:\n" + result.stderr.join("\n")); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 219 Isolate.spawnUri(Uri.parse(message['uri']), [], message['message'], | 219 Isolate.spawnUri(Uri.parse(message['uri']), [], message['message'], |
| 220 packageRoot: packageRoot) | 220 packageRoot: packageRoot) |
| 221 .then((_) => replyTo.send({'type': 'success'})) | 221 .then((_) => replyTo.send({'type': 'success'})) |
| 222 .catchError((e, stack) { | 222 .catchError((e, stack) { |
| 223 replyTo.send({ | 223 replyTo.send({ |
| 224 'type': 'error', | 224 'type': 'error', |
| 225 'error': CrossIsolateException.serialize(e, stack) | 225 'error': CrossIsolateException.serialize(e, stack) |
| 226 }); | 226 }); |
| 227 }); | 227 }); |
| 228 } | 228 } |
| OLD | NEW |