diff --git a/packages/svelte/src/compiler/phases/1-parse/utils/html.js b/packages/svelte/src/compiler/phases/1-parse/utils/html.js index 0d56af9895..fc74307b3f 100644 --- a/packages/svelte/src/compiler/phases/1-parse/utils/html.js +++ b/packages/svelte/src/compiler/phases/1-parse/utils/html.js @@ -122,7 +122,14 @@ function validate_code(code) { // based on http://developers.whatwg.org/syntax.html#syntax-tag-omission // while `input` is also an interactive element, it is never moved by the browser, so we don't need to check for it -export const interactive_elements = new Set(['a', 'button', 'iframe', 'embed', 'select', 'textarea']); +export const interactive_elements = new Set([ + 'a', + 'button', + 'iframe', + 'embed', + 'select', + 'textarea' +]); /** @type {Record>} */ const disallowed_contents = { diff --git a/packages/svelte/tests/validator/samples/invalid-node-placement/errors.json b/packages/svelte/tests/validator/samples/invalid-node-placement/errors.json new file mode 100644 index 0000000000..259b8f613b --- /dev/null +++ b/packages/svelte/tests/validator/samples/invalid-node-placement/errors.json @@ -0,0 +1,14 @@ +[ + { + "code": "invalid-node-placement", + "message": " is invalid inside ", + "start": { + "line": 4, + "column": 6 + }, + "end": { + "line": 4, + "column": 34 + } + } +] diff --git a/packages/svelte/tests/validator/samples/invalid-node-placement/input.svelte b/packages/svelte/tests/validator/samples/invalid-node-placement/input.svelte new file mode 100644 index 0000000000..a34a019b39 --- /dev/null +++ b/packages/svelte/tests/validator/samples/invalid-node-placement/input.svelte @@ -0,0 +1,7 @@ +
+ +
+

{`hello`}

+
+ +