Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(205)

Unified Diff: sdk/lib/_internal/pub/lib/src/barback/pub_package_provider.dart

Issue 207423003: Support Dart core libraries in source maps. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Revise. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/pub/lib/src/barback/pub_package_provider.dart
diff --git a/sdk/lib/_internal/pub/lib/src/barback/pub_package_provider.dart b/sdk/lib/_internal/pub/lib/src/barback/pub_package_provider.dart
index dd90b9f688a947de75b58271af16c86126708d41..1665be9d538da3d3c4db8d5e71e1673dfe779d42 100644
--- a/sdk/lib/_internal/pub/lib/src/barback/pub_package_provider.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback/pub_package_provider.dart
@@ -9,8 +9,9 @@ import 'dart:async';
import 'package:barback/barback.dart';
import 'package:path/path.dart' as path;
-import '../package_graph.dart';
import '../io.dart';
+import '../package_graph.dart';
+import '../sdk.dart' as sdk;
/// An implementation of barback's [PackageProvider] interface so that barback
/// can find assets within pub packages.
@@ -20,22 +21,38 @@ class PubPackageProvider implements PackageProvider {
PubPackageProvider(PackageGraph graph)
: _graph = graph,
- packages = new List.from(graph.packages.keys)..add(r"$pub");
+ packages = [r"$pub", r"$sdk"]..addAll(graph.packages.keys);
Future<Asset> getAsset(AssetId id) {
- if (id.package != r'$pub') {
- var nativePath = path.fromUri(id.path);
- var file = path.join(_graph.packages[id.package].dir, nativePath);
+ // "$pub" is a psuedo-package that allows pub's transformer-loading
+ // infrastructure to share code with pub proper.
+ if (id.package == r'$pub') {
+ var components = path.url.split(id.path);
+ assert(components.isNotEmpty);
+ assert(components.first == 'lib');
+ components[0] = 'dart';
+ var file = assetPath(path.joinAll(components));
return new Future.value(new Asset.fromPath(id, file));
}
- // "$pub" is a psuedo-package that allows pub's transformer-loading
- // infrastructure to share code with pub proper.
- var components = path.url.split(id.path);
- assert(components.isNotEmpty);
- assert(components.first == 'lib');
- components[0] = 'dart';
- var file = assetPath(path.joinAll(components));
+ // "$sdk" is a pseudo-package that provides access to the Dart library
+ // sources in the SDK. The dart2js transformer uses this to locate the Dart
+ // sources for "dart:" libraries.
+ if (id.package == r'$sdk') {
+ // The asset path contains two "lib" entries. The first represent's pub's
+ // concept that all public assets are in "lib". The second comes from the
+ // organization of the SDK itself. Strip off the first. Leave the second
+ // since dart2js adds it and expects it to be there.
+ var parts = path.split(path.fromUri(id.path));
+ assert(parts.isNotEmpty && parts[0] == 'lib');
+ parts = parts.skip(1);
+
+ var file = path.join(sdk.rootDirectory, path.joinAll(parts));
+ return new Future.value(new Asset.fromPath(id, file));
+ }
+
+ var nativePath = path.fromUri(id.path);
+ var file = path.join(_graph.packages[id.package].dir, nativePath);
return new Future.value(new Asset.fromPath(id, file));
}
}

Powered by Google App Engine
This is Rietveld 408576698