From 67d3c59364eef95a0820383bc0228ebd11c66268 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 27 Jan 2025 17:13:51 -0500 Subject: [PATCH 1/2] Fix `@import` hoisting warning --- .../src/css/resolve-css-imports.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts b/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts index af1861c9..5ca1ef72 100644 --- a/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts +++ b/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts @@ -30,13 +30,18 @@ export function resolveCssImports({ if (!loose) return let hoist: postcss.AtRule[] = [] + let seenOtherNodes = false let seenImportsAfterOtherNodes = false for (let node of root.nodes) { if (node.type === 'atrule' && (node.name === 'import' || node.name === 'charset')) { hoist.push(node) + + if (seenOtherNodes) { + seenImportsAfterOtherNodes = true + } } else if (hoist.length > 0 && (node.type === 'atrule' || node.type === 'rule')) { - seenImportsAfterOtherNodes = true + seenOtherNodes = true } } From f5d86356862f0337105319f0c00aed59398c1790 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Wed, 29 Jan 2025 10:29:14 -0500 Subject: [PATCH 2/2] Ignore body-less `@layer` when hoisting --- .../src/css/resolve-css-imports.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts b/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts index 5ca1ef72..e73d94f4 100644 --- a/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts +++ b/packages/tailwindcss-language-server/src/css/resolve-css-imports.ts @@ -40,7 +40,15 @@ export function resolveCssImports({ if (seenOtherNodes) { seenImportsAfterOtherNodes = true } - } else if (hoist.length > 0 && (node.type === 'atrule' || node.type === 'rule')) { + } else if (node.type === 'atrule') { + if (node.name === 'layer') { + if (!node.nodes || node.nodes.length > 0) { + continue + } + } + + seenOtherNodes = true + } else if (node.type === 'rule') { seenOtherNodes = true } }