| Index: runtime/bin/builtin.dart
|
| diff --git a/runtime/bin/builtin.dart b/runtime/bin/builtin.dart
|
| index b61314748d2e6c80b82e200c9952a9a3884a3b07..2a8f1f65514dd12c8e6ba4a938694b61d20aae80 100644
|
| --- a/runtime/bin/builtin.dart
|
| +++ b/runtime/bin/builtin.dart
|
| @@ -67,37 +67,34 @@ String _resolveScriptUri(String cwd, String scriptName, bool windows) {
|
| String _resolveUri(String base, String userString) {
|
| var baseUri = new Uri.fromString(base);
|
| _logResolution("# Resolving: $userString from $base");
|
| - var resolved = baseUri.resolve(userString);
|
| - _logResolution("# Resolved to: $resolved");
|
| - return resolved.toString();
|
| -}
|
|
|
| -String _resolveExtensionUri(String base, String userString) {
|
| + // Relative URIs with scheme dart-ext should be resolved as if with no scheme.
|
| var uri = new Uri.fromString(userString);
|
| - if ("dart-ext" != uri.scheme) {
|
| - throw "Not a Dart extension uri: $uri";
|
| + var resolved;
|
| + if ('dart-ext' == uri.scheme) {
|
| + resolved = baseUri.resolve(uri.path);
|
| + resolved = new Uri(scheme: "dart-ext", path: resolved.path);
|
| + } else {
|
| + resolved = baseUri.resolve(userString);
|
| }
|
| - var schemelessUri = new Uri(path: uri.path);
|
| - var baseUri = new Uri.fromString(base);
|
| - _logResolution("# Resolving: $userString from $base");
|
| - var resolved = baseUri.resolveUri(schemelessUri);
|
| - resolved = new Uri(scheme: 'dart-ext', path: resolved.path);
|
| _logResolution("# Resolved to: $resolved");
|
| return resolved.toString();
|
| }
|
|
|
| +
|
| String _filePathFromUri(String userUri) {
|
| var uri = new Uri.fromString(userUri);
|
| _logResolution("# Getting file path from: $uri");
|
|
|
| var path;
|
| switch (uri.scheme) {
|
| - case 'file': path = _filePathFromFileUri(uri); break;
|
| + case 'file': path = _filePathFromFileUri(uri); break;
|
| + case 'dart-ext': path = _filePathFromOtherUri(uri); break;
|
| case 'package': path = _filePathFromPackageUri(uri); break;
|
|
|
| default:
|
| - // Only handling file and package URIs in standalone binary.
|
| - _logResolution("# Not a file or package URI.");
|
| + // Only handling file, dart-ext and package URIs in standalone binary.
|
| + _logResolution("# Not a file, dart-ext, or package URI.");
|
| throw "Not a known scheme: $uri";
|
| }
|
|
|
| @@ -119,6 +116,15 @@ String _filePathFromFileUri(Uri uri) {
|
| return uri.path;
|
| }
|
|
|
| +String _filePathFromOtherUri(Uri uri) {
|
| + if (uri.domain != '') {
|
| + throw "URIs whose paths are used as file paths may not contain a domain.";
|
| + }
|
| +
|
| + _logResolution("# Path: ${uri.path}");
|
| + return uri.path;
|
| +}
|
| +
|
| String _filePathFromPackageUri(Uri uri) {
|
| if (uri.domain != '') {
|
| var path = (uri.path != '') ? '${uri.domain}${uri.path}' : uri.domain;
|
|
|