Index: sdk/lib/_internal/pub/lib/src/barback/build_environment.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/build_environment.dart b/sdk/lib/_internal/pub/lib/src/barback/build_environment.dart |
index f155374d7bf82e536e4d270da6a1223cda9cdfea..7aa5eac1b673b860c10c823dc955670e0f9df3cd 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/build_environment.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/build_environment.dart |
@@ -17,6 +17,7 @@ import '../io.dart'; |
import '../log.dart' as log; |
import '../package.dart'; |
import '../package_graph.dart'; |
+import '../sdk.dart' as sdk; |
import 'admin_server.dart'; |
import 'build_directory.dart'; |
import 'dart_forwarding_transformer.dart'; |
@@ -205,6 +206,16 @@ class BuildEnvironment { |
}).then((_) => url); |
} |
+ /// Gets the build directory that contains [assetPath] within the entrypoint |
+ /// package. |
+ /// |
+ /// If [assetPath] is not contained within a build directory, this will |
+ /// throw an exception. |
+ String getBuildDirectoryContaining(String assetPath) => |
+ _directories.values |
+ .firstWhere((dir) => path.isWithin(dir.directory, assetPath)) |
+ .directory; |
+ |
/// Return all URLs serving [assetPath] in this environment. |
List<Uri> getUrlsForAssetPath(String assetPath) { |
// Check the three (mutually-exclusive) places the path could be pointing. |
@@ -339,6 +350,15 @@ class BuildEnvironment { |
path.join('lib', path.relative(library, from: dartPath))); |
}); |
+ // "$sdk" is a pseudo-package that allows the dart2js transformer to find |
+ // the Dart core libraries without hitting the file system directly. This |
+ // ensures they work with source maps. |
+ var libPath = path.join(sdk.rootDirectory, "lib"); |
+ var sdkSources = listDir(libPath, recursive: true) |
+ .where((file) => path.extension(file) == ".dart") |
+ .map((file) => new AssetId('\$sdk', |
+ path.join("lib", path.relative(file, from: sdk.rootDirectory)))); |
+ |
// Bind a server that we can use to load the transformers. |
var transformerServer; |
return BarbackServer.bind(this, _hostname, 0, null).then((server) { |
@@ -346,6 +366,7 @@ class BuildEnvironment { |
return log.progress("Loading source assets", () { |
barback.updateSources(pubSources); |
+ barback.updateSources(sdkSources); |
return _provideSources(); |
}); |
}).then((_) { |