Index: sdk/lib/_internal/pub/lib/src/barback/transformer_cache.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/barback/transformer_cache.dart b/sdk/lib/_internal/pub/lib/src/barback/transformer_cache.dart |
index 0fe07e3eebb6856cba845e16e88b9af3faf93e61..d51e901bc36acd9e3bc4c79537a5d0b4424906c0 100644 |
--- a/sdk/lib/_internal/pub/lib/src/barback/transformer_cache.dart |
+++ b/sdk/lib/_internal/pub/lib/src/barback/transformer_cache.dart |
@@ -64,7 +64,7 @@ class TransformerCache { |
// If none of the snapshot's dependencies have changed, then we can reuse |
// it. |
- if (!changedPackages.any(snapshotDependencies.contains)) return; |
+ if (!overlaps(changedPackages, snapshotDependencies)) return; |
// Otherwise, delete it. |
deleteEntry(_dir); |
@@ -78,21 +78,10 @@ class TransformerCache { |
/// it can safely be used to load the stage. Otherwise, a snapshot of the |
/// stage should be written there. |
String snapshotPath(Set<TransformerId> transformers) { |
- // A transformer is considered mutable if it comes from the entrypoint |
- // package or a path dependency. |
- // |
- // TODO(nweiz): Consider git packages with mutable (transitive) dependencies |
- // to be mutable themselves. |
- var usesMutableTransformer = transformers.any((id) { |
- // The entrypoint package doesn't appear in the lockfile. |
- var package = _graph.lockFile.packages[id.package]; |
- if (package == null) return true; |
- var source = _graph.entrypoint.cache.sources[package.source]; |
- return source is! CachedSource; |
- }); |
- |
var path = p.join(_dir, "transformers.snapshot"); |
- if (usesMutableTransformer) { |
+ if (_newTransformers != null) return path; |
+ |
+ if (transformers.any((id) => _graph.isPackageMutable(id.package))) { |
log.fine("Not caching mutable transformers."); |
deleteEntry(_dir); |
return null; |