| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 library leg_apiimpl; | 5 library leg_apiimpl; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:package_config/packages.dart'; | 9 import 'package:package_config/packages.dart'; |
| 10 import 'package:package_config/packages_file.dart' as pkgs; | 10 import 'package:package_config/packages_file.dart' as pkgs; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 }); | 112 }); |
| 113 } | 113 } |
| 114 return _synthesizeScript(readableUri); | 114 return _synthesizeScript(readableUri); |
| 115 } | 115 } |
| 116 | 116 |
| 117 // TODO(johnniwinther): Wrap the result from [provider] in a specialized | 117 // TODO(johnniwinther): Wrap the result from [provider] in a specialized |
| 118 // [Future] to ensure that we never execute an asynchronous action without | 118 // [Future] to ensure that we never execute an asynchronous action without |
| 119 // setting up the current element of the compiler. | 119 // setting up the current element of the compiler. |
| 120 return new Future.sync( | 120 return new Future.sync( |
| 121 () => callUserProvider(resourceUri, api.InputKind.utf8)) | 121 () => callUserProvider(resourceUri, api.InputKind.utf8)) |
| 122 .then((SourceFile sourceFile) { | 122 .then((api.Input sourceFile) { |
| 123 // We use [readableUri] as the URI for the script since need to preserve | 123 // We use [readableUri] as the URI for the script since need to preserve |
| 124 // the scheme in the script because [Script.uri] is used for resolving | 124 // the scheme in the script because [Script.uri] is used for resolving |
| 125 // relative URIs mentioned in the script. See the comment on | 125 // relative URIs mentioned in the script. See the comment on |
| 126 // [LibraryLoader] for more details. | 126 // [LibraryLoader] for more details. |
| 127 return new Script(readableUri, resourceUri, sourceFile); | 127 return new Script(readableUri, resourceUri, sourceFile); |
| 128 }).catchError((error) { | 128 }).catchError((error) { |
| 129 _reportReadError(readableUri, element, node, error); | 129 _reportReadError(readableUri, element, node, error); |
| 130 return _synthesizeScript(readableUri); | 130 return _synthesizeScript(readableUri); |
| 131 }); | 131 }); |
| 132 } | 132 } |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 .analyzeUri(uri, skipLibraryWithPartOfTag: skipLibraryWithPartOfTag); | 192 .analyzeUri(uri, skipLibraryWithPartOfTag: skipLibraryWithPartOfTag); |
| 193 }); | 193 }); |
| 194 } | 194 } |
| 195 | 195 |
| 196 Future setupPackages(Uri uri) { | 196 Future setupPackages(Uri uri) { |
| 197 if (options.packageRoot != null) { | 197 if (options.packageRoot != null) { |
| 198 // Use "non-file" packages because the file version requires a [Directory] | 198 // Use "non-file" packages because the file version requires a [Directory] |
| 199 // and we can't depend on 'dart:io' classes. | 199 // and we can't depend on 'dart:io' classes. |
| 200 packages = new NonFilePackagesDirectoryPackages(options.packageRoot); | 200 packages = new NonFilePackagesDirectoryPackages(options.packageRoot); |
| 201 } else if (options.packageConfig != null) { | 201 } else if (options.packageConfig != null) { |
| 202 return callUserProvider(options.packageConfig, api.InputKind.binary) | 202 Future<Binary> future = |
| 203 .then((Binary binary) { | 203 callUserProvider(options.packageConfig, api.InputKind.binary); |
| 204 return future.then((Binary binary) { |
| 204 packages = | 205 packages = |
| 205 new MapPackages(pkgs.parse(binary.data, options.packageConfig)); | 206 new MapPackages(pkgs.parse(binary.data, options.packageConfig)); |
| 206 }).catchError((error) { | 207 }).catchError((error) { |
| 207 reporter.reportErrorMessage( | 208 reporter.reportErrorMessage( |
| 208 NO_LOCATION_SPANNABLE, | 209 NO_LOCATION_SPANNABLE, |
| 209 MessageKind.INVALID_PACKAGE_CONFIG, | 210 MessageKind.INVALID_PACKAGE_CONFIG, |
| 210 {'uri': options.packageConfig, 'exception': error}); | 211 {'uri': options.packageConfig, 'exception': error}); |
| 211 packages = Packages.noPackages; | 212 packages = Packages.noPackages; |
| 212 }); | 213 }); |
| 213 } else { | 214 } else { |
| 214 if (options.packagesDiscoveryProvider == null) { | 215 if (options.packagesDiscoveryProvider == null) { |
| 215 packages = Packages.noPackages; | 216 packages = Packages.noPackages; |
| 216 } else { | 217 } else { |
| 217 return callUserPackagesDiscovery(uri).then((p) { | 218 return callUserPackagesDiscovery(uri).then((p) { |
| 218 packages = p; | 219 packages = p; |
| 219 }); | 220 }); |
| 220 } | 221 } |
| 221 } | 222 } |
| 222 return new Future.value(); | 223 return new Future.value(); |
| 223 } | 224 } |
| 224 | 225 |
| 225 Future<Null> setupSdk() { | 226 Future<Null> setupSdk() { |
| 226 Future future = new Future.value(null); | 227 Future future = new Future.value(null); |
| 227 if (options.resolutionInputs != null) { | 228 if (options.resolutionInputs != null) { |
| 228 future = Future.forEach(options.resolutionInputs, (Uri resolutionInput) { | 229 future = Future.forEach(options.resolutionInputs, (Uri resolutionInput) { |
| 229 reporter.log('Reading serialized data from ${resolutionInput}'); | 230 reporter.log('Reading serialized data from ${resolutionInput}'); |
| 230 return callUserProvider(resolutionInput, api.InputKind.utf8) | 231 Future<SourceFile> future = |
| 231 .then((SourceFile sourceFile) { | 232 callUserProvider(resolutionInput, api.InputKind.utf8); |
| 233 return future.then((SourceFile sourceFile) { |
| 232 serialization.deserializeFromText( | 234 serialization.deserializeFromText( |
| 233 resolutionInput, sourceFile.slowText()); | 235 resolutionInput, sourceFile.slowText()); |
| 234 }); | 236 }); |
| 235 }); | 237 }); |
| 236 } | 238 } |
| 237 if (resolvedUriTranslator.isNotSet) { | 239 if (resolvedUriTranslator.isNotSet) { |
| 238 future = future.then((_) { | 240 future = future.then((_) { |
| 239 return platform_configuration | 241 return platform_configuration |
| 240 .load(options.platformConfigUri, provider) | 242 .load(options.platformConfigUri, provider) |
| 241 .then((Map<String, Uri> mapping) { | 243 .then((Map<String, Uri> mapping) { |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 } | 418 } |
| 417 } | 419 } |
| 418 | 420 |
| 419 /// For every 'dart:' library, a corresponding environment variable is set | 421 /// For every 'dart:' library, a corresponding environment variable is set |
| 420 /// to "true". The environment variable's name is the concatenation of | 422 /// to "true". The environment variable's name is the concatenation of |
| 421 /// this prefix and the name (without the 'dart:'. | 423 /// this prefix and the name (without the 'dart:'. |
| 422 /// | 424 /// |
| 423 /// For example 'dart:html' has the environment variable 'dart.library.html' set | 425 /// For example 'dart:html' has the environment variable 'dart.library.html' set |
| 424 /// to "true". | 426 /// to "true". |
| 425 const String _dartLibraryEnvironmentPrefix = 'dart.library.'; | 427 const String _dartLibraryEnvironmentPrefix = 'dart.library.'; |
| OLD | NEW |