From 020dc9e1bb8fd6812b8c6eb71b307e965dd9ece4 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Thu, 2 Apr 2026 09:25:37 +0200 Subject: [PATCH] fix: disable `@html` in custom renderer --- .../svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js | 4 ++++ .../tests/custom-renderers/samples/html-tag/_config.js | 5 +++++ .../tests/custom-renderers/samples/html-tag/main.svelte | 1 + 3 files changed, 10 insertions(+) create mode 100644 packages/svelte/tests/custom-renderers/samples/html-tag/_config.js create mode 100644 packages/svelte/tests/custom-renderers/samples/html-tag/main.svelte diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js index 7b0e501760..f5ba9cd3d3 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js @@ -2,12 +2,16 @@ /** @import { Context } from '../types' */ import { mark_subtree_dynamic } from './shared/fragment.js'; import { validate_opening_tag } from './shared/utils.js'; +import * as e from '../../../errors.js'; /** * @param {AST.HtmlTag} node * @param {Context} context */ export function HtmlTag(node, context) { + if (context.state.analysis.custom_renderer) { + e.incompatible_with_custom_renderer(node, '`@html`'); + } if (context.state.analysis.runes) { validate_opening_tag(node, context.state, '@'); } diff --git a/packages/svelte/tests/custom-renderers/samples/html-tag/_config.js b/packages/svelte/tests/custom-renderers/samples/html-tag/_config.js new file mode 100644 index 0000000000..e00a19bcfc --- /dev/null +++ b/packages/svelte/tests/custom-renderers/samples/html-tag/_config.js @@ -0,0 +1,5 @@ +import { test } from '../../test'; + +export default test({ + compile_error: '`@html` is not compatible with `customRenderer`' +}); diff --git a/packages/svelte/tests/custom-renderers/samples/html-tag/main.svelte b/packages/svelte/tests/custom-renderers/samples/html-tag/main.svelte new file mode 100644 index 0000000000..7360363916 --- /dev/null +++ b/packages/svelte/tests/custom-renderers/samples/html-tag/main.svelte @@ -0,0 +1 @@ +{@html ""} \ No newline at end of file