Index: sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart |
index 21243745bad405163e9062a85231e17f8f0382dc..101669ff421e8e191c0e43d8179d74e44bc07040 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart |
@@ -279,19 +279,23 @@ class _BarbackCompilerProvider implements dart.CompilerProvider { |
/// A [CompilerOutputProvider] for dart2js. |
EventSink<String> provideOutput(String name, String extension) { |
- // Dart2js uses an empty string for the name of the entrypoint library. |
- // We only expect to get output files associated with that right now. For |
- // other files, we'd need some logic to determine the right relative path |
- // for it. |
- assert(name == ""); |
- |
// TODO(rnystrom): Do this more cleanly. See: #17403. |
if (!generateSourceMaps && extension.endsWith(".map")) { |
return new NullSink<String>(); |
} |
var primaryId = _transform.primaryInput.id; |
- var id = new AssetId(primaryId.package, "${primaryId.path}.$extension"); |
+ |
+ // Dart2js uses an empty string for the name of the entrypoint library. |
+ // Otherwise, it's the name of a deferred library. |
+ var outPath; |
+ if (name == "") { |
+ outPath = _transform.primaryInput.id.path; |
+ } else { |
+ outPath = path.join(path.dirname(_transform.primaryInput.id.path), name); |
+ } |
+ |
+ var id = new AssetId(primaryId.package, "$outPath.$extension"); |
// Make a sink that dart2js can write to. |
var sink = new StreamController<String>(); |