diff --git a/packages/core/src/compiler/compositionScoping.test.ts b/packages/core/src/compiler/compositionScoping.test.ts index 7ba39a5fb..80a63c059 100644 --- a/packages/core/src/compiler/compositionScoping.test.ts +++ b/packages/core/src/compiler/compositionScoping.test.ts @@ -1054,4 +1054,13 @@ describe("wrapInlineScriptWithErrorBoundary — + + `; + const result = await lintHyperframeHtml(html); + const finding = result.findings.find((f) => f.code === "css_parse_error"); + expect(finding).toBeDefined(); + expect(finding?.severity).toBe("error"); + expect(finding?.message).toContain("Missed semicolon"); + }); + }); }); diff --git a/packages/lint/src/rules/core.ts b/packages/lint/src/rules/core.ts index 3461a5942..8d784da2f 100644 --- a/packages/lint/src/rules/core.ts +++ b/packages/lint/src/rules/core.ts @@ -312,7 +312,12 @@ export const coreRules: Array<(ctx: LintContext) => HyperframeLintFinding[]> = [ let root: postcss.Root; try { root = postcss.parse(style.content); - } catch { + } catch (error) { + findings.push({ + code: "css_parse_error", + severity: "error", + message: `CSS parse error: ${error instanceof Error ? error.message : "unknown"}`, + }); continue; } root.walkRules((rule) => {