diff --git a/src/compiler/compile/css/Stylesheet.ts b/src/compiler/compile/css/Stylesheet.ts index 2aead635b2..6267d0afb8 100644 --- a/src/compiler/compile/css/Stylesheet.ts +++ b/src/compiler/compile/css/Stylesheet.ts @@ -315,7 +315,14 @@ export default class Stylesheet { leave: (node: Node) => { if (node.type === 'Rule' || node.type === 'Atrule') stack.pop(); - if (node.type === 'Atrule') current_atrule = stack[stack.length - 1] as Atrule; + if (node.type === 'Atrule') { + current_atrule = null; + for (let i = stack.length - 1; i >= 0; i--) { + if (stack[i] instanceof Atrule) { + current_atrule = stack[i] as Atrule; + } + } + } } }); } else { diff --git a/test/css/samples/unknown-at-rule-with-following-rules/expected.css b/test/css/samples/unknown-at-rule-with-following-rules/expected.css new file mode 100644 index 0000000000..31c3bf9c6f --- /dev/null +++ b/test/css/samples/unknown-at-rule-with-following-rules/expected.css @@ -0,0 +1 @@ +div.svelte-xyz{@apply --funky-div;} \ No newline at end of file diff --git a/test/css/samples/unknown-at-rule-with-following-rules/input.svelte b/test/css/samples/unknown-at-rule-with-following-rules/input.svelte new file mode 100644 index 0000000000..b8947d3545 --- /dev/null +++ b/test/css/samples/unknown-at-rule-with-following-rules/input.svelte @@ -0,0 +1,11 @@ +
+ + \ No newline at end of file