Skip to content

Commit

Permalink
Make `cloneCss() clone modules that transitively contain CSS (#1824)
Browse files Browse the repository at this point in the history
Previously we were only cloning modules that directly contained CSS,
but this created a problem where extensions could be added to their
*shared* extension store across `load-css()` boundaries and thereby
applied to upstream CSS.

Closes #3322
  • Loading branch information
nex3 authored Nov 3, 2022
1 parent 44d6bb6 commit 00c3517
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 3 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
* Properly mark the warning for passing numbers with units to `random()` as a
deprecation warning.

* Fix a bug where `@extend` could behave unpredicatably when used along with
`meta.load-css()` and shared modules that contained no CSS themselves but
loaded CSS from other modules.

### Dart API

* Emit a deprecation warning when passing a `sassIndex` with units to
Expand Down
2 changes: 1 addition & 1 deletion lib/src/async_environment.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1014,7 +1014,7 @@ class _EnvironmentModule implements Module {
}

Module cloneCss() {
if (css.children.isEmpty) return this;
if (!transitivelyContainsCss) return this;

var newCssAndExtensionStore = cloneCssStylesheet(css, extensionStore);
return _EnvironmentModule._(
Expand Down
4 changes: 2 additions & 2 deletions lib/src/environment.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// DO NOT EDIT. This file was generated from async_environment.dart.
// See tool/grind/synchronize.dart for details.
//
// Checksum: 88f81b417129a74e4eb776d518c8e019dbf2ec36
// Checksum: 38c688423116df1e489aa6eafc16de1bf9bc2bf5
//
// ignore_for_file: unused_import

Expand Down Expand Up @@ -1022,7 +1022,7 @@ class _EnvironmentModule implements Module<Callable> {
}

Module<Callable> cloneCss() {
if (css.children.isEmpty) return this;
if (!transitivelyContainsCss) return this;

var newCssAndExtensionStore = cloneCssStylesheet(css, extensionStore);
return _EnvironmentModule._(
Expand Down

0 comments on commit 00c3517

Please sign in to comment.