diff --git a/src/parse/mixin.rs b/src/parse/mixin.rs index 4add13a..610099c 100644 --- a/src/parse/mixin.rs +++ b/src/parse/mixin.rs @@ -145,10 +145,10 @@ impl<'a> Parser<'a> { .parse()?; self.content.pop(); + self.scopes.exit_scope(); + if declared_at_root { mem::swap(self.scopes, self.content_scopes); - } else { - self.scopes.exit_scope(); } Ok(body) diff --git a/tests/mixins.rs b/tests/mixins.rs index 99bdf5a..35dc6ec 100644 --- a/tests/mixins.rs +++ b/tests/mixins.rs @@ -426,3 +426,26 @@ test!( }", "a {\n color: 1rem;\n}\n" ); +test!( + can_access_global_variables_set_after_other_include, + "$x: true; + + @mixin foobar() { + @if $x { + $x: false !global; + color: foo; + } + + @else { + $x: true !global; + color: bar; + } + } + + a { + @include foobar(); + $x: true !global; + @include foobar(); + }", + "a {\n color: foo;\n color: foo;\n}\n" +);