From 9873d8141f1c29f9c26d367a48c66a8f175b7c55 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 4 Dec 2023 06:20:52 -0500 Subject: [PATCH 1/8] fix compiler-errors test suite --- .../samples/attribute-empty/{input.svelte => main.svelte} | 0 .../attribute-unique-binding/{input.svelte => main.svelte} | 0 .../attribute-unique-shorthand/{input.svelte => main.svelte} | 0 .../samples/attribute-unique/{input.svelte => main.svelte} | 0 .../catch-before-closing/{input.svelte => main.svelte} | 0 .../samples/catch-without-await/{input.svelte => main.svelte} | 0 .../samples/comment-unclosed/{input.svelte => main.svelte} | 0 .../css-global-without-selector/{input.svelte => main.svelte} | 0 .../compiler-errors/samples/css/{input.svelte => main.svelte} | 0 .../dollar-binding-global-js/{main.js => main.svelte.js} | 0 .../else-before-closing-2/{input.svelte => main.svelte} | 0 .../else-before-closing-3/{input.svelte => main.svelte} | 0 .../samples/else-before-closing/{input.svelte => main.svelte} | 0 .../else-if-before-closing-2/{input.svelte => main.svelte} | 0 .../else-if-before-closing/{input.svelte => main.svelte} | 0 .../samples/else-if-without-if/{input.svelte => main.svelte} | 0 .../empty-attribute-shorthand/{input.svelte => main.svelte} | 0 .../empty-classname-binding/{input.svelte => main.svelte} | 0 .../empty-directive-name/{input.svelte => main.svelte} | 0 .../samples/illegal-expression/{input.svelte => main.svelte} | 0 .../samples/multiple-styles/{input.svelte => main.svelte} | 0 .../raw-mustaches-whitespace/{input.svelte => main.svelte} | 0 .../runes-export-named-state/{main.js => main.svelte.js} | 0 .../runes-no-const-assignment/{main.js => main.svelte.js} | 0 .../runes-wrong-derived-args/{main.js => main.svelte.js} | 0 .../runes-wrong-derived-placement/{main.js => main.svelte.js} | 0 .../runes-wrong-effect-args/{main.js => main.svelte.js} | 0 .../runes-wrong-effect-placement/{main.js => main.svelte.js} | 0 .../runes-wrong-props-placement/{main.js => main.svelte.js} | 0 .../runes-wrong-state-args/{main.js => main.svelte.js} | 0 .../runes-wrong-state-placement/{main.js => main.svelte.js} | 0 .../samples/script-unclosed-eof/{input.svelte => main.svelte} | 0 .../samples/script-unclosed/{input.svelte => main.svelte} | 0 .../samples/self-reference/{input.svelte => main.svelte} | 0 .../samples/style-unclosed-eof/{input.svelte => main.svelte} | 0 .../samples/style-unclosed/{input.svelte => main.svelte} | 0 .../svelte-selfdestructive/{input.svelte => main.svelte} | 0 .../samples/then-before-closing/{input.svelte => main.svelte} | 0 .../samples/then-without-await/{input.svelte => main.svelte} | 0 .../{input.svelte => main.svelte} | 0 .../unexpected-end-of-input-b/{input.svelte => main.svelte} | 0 .../unexpected-end-of-input-c/{input.svelte => main.svelte} | 0 .../unexpected-end-of-input-d/{input.svelte => main.svelte} | 0 .../unexpected-end-of-input/{input.svelte => main.svelte} | 0 .../{input.svelte => main.svelte} | 0 .../{input.svelte => main.svelte} | 0 .../unmatched-closing-tag/{input.svelte => main.svelte} | 0 .../samples/void-closing/{input.svelte => main.svelte} | 0 .../samples/window-children/{input.svelte => main.svelte} | 0 .../samples/window-duplicate/{input.svelte => main.svelte} | 0 .../samples/window-inside-block/{input.svelte => main.svelte} | 0 .../window-inside-element/{input.svelte => main.svelte} | 0 packages/svelte/tests/compiler-errors/test.ts | 4 ++++ 53 files changed, 4 insertions(+) rename packages/svelte/tests/compiler-errors/samples/attribute-empty/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/attribute-unique-binding/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/attribute-unique-shorthand/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/attribute-unique/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/catch-before-closing/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/catch-without-await/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/comment-unclosed/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/css-global-without-selector/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/css/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/dollar-binding-global-js/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/else-before-closing-2/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/else-before-closing-3/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/else-before-closing/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/else-if-before-closing-2/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/else-if-before-closing/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/else-if-without-if/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/empty-attribute-shorthand/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/empty-classname-binding/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/empty-directive-name/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/illegal-expression/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/multiple-styles/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/raw-mustaches-whitespace/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-export-named-state/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-no-const-assignment/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-args/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-placement/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-args/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-placement/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-wrong-props-placement/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-wrong-state-args/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/runes-wrong-state-placement/{main.js => main.svelte.js} (100%) rename packages/svelte/tests/compiler-errors/samples/script-unclosed-eof/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/script-unclosed/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/self-reference/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/style-unclosed-eof/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/style-unclosed/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/svelte-selfdestructive/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/then-before-closing/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/then-without-await/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unclosed-attribute-self-close-tag/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-b/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-c/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-d/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose-2/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/void-closing/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/window-children/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/window-duplicate/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/window-inside-block/{input.svelte => main.svelte} (100%) rename packages/svelte/tests/compiler-errors/samples/window-inside-element/{input.svelte => main.svelte} (100%) diff --git a/packages/svelte/tests/compiler-errors/samples/attribute-empty/input.svelte b/packages/svelte/tests/compiler-errors/samples/attribute-empty/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/attribute-empty/input.svelte rename to packages/svelte/tests/compiler-errors/samples/attribute-empty/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/attribute-unique-binding/input.svelte b/packages/svelte/tests/compiler-errors/samples/attribute-unique-binding/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/attribute-unique-binding/input.svelte rename to packages/svelte/tests/compiler-errors/samples/attribute-unique-binding/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/attribute-unique-shorthand/input.svelte b/packages/svelte/tests/compiler-errors/samples/attribute-unique-shorthand/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/attribute-unique-shorthand/input.svelte rename to packages/svelte/tests/compiler-errors/samples/attribute-unique-shorthand/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/attribute-unique/input.svelte b/packages/svelte/tests/compiler-errors/samples/attribute-unique/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/attribute-unique/input.svelte rename to packages/svelte/tests/compiler-errors/samples/attribute-unique/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/catch-before-closing/input.svelte b/packages/svelte/tests/compiler-errors/samples/catch-before-closing/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/catch-before-closing/input.svelte rename to packages/svelte/tests/compiler-errors/samples/catch-before-closing/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/catch-without-await/input.svelte b/packages/svelte/tests/compiler-errors/samples/catch-without-await/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/catch-without-await/input.svelte rename to packages/svelte/tests/compiler-errors/samples/catch-without-await/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/comment-unclosed/input.svelte b/packages/svelte/tests/compiler-errors/samples/comment-unclosed/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/comment-unclosed/input.svelte rename to packages/svelte/tests/compiler-errors/samples/comment-unclosed/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/css-global-without-selector/input.svelte b/packages/svelte/tests/compiler-errors/samples/css-global-without-selector/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/css-global-without-selector/input.svelte rename to packages/svelte/tests/compiler-errors/samples/css-global-without-selector/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/css/input.svelte b/packages/svelte/tests/compiler-errors/samples/css/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/css/input.svelte rename to packages/svelte/tests/compiler-errors/samples/css/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/dollar-binding-global-js/main.js b/packages/svelte/tests/compiler-errors/samples/dollar-binding-global-js/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/dollar-binding-global-js/main.js rename to packages/svelte/tests/compiler-errors/samples/dollar-binding-global-js/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/else-before-closing-2/input.svelte b/packages/svelte/tests/compiler-errors/samples/else-before-closing-2/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/else-before-closing-2/input.svelte rename to packages/svelte/tests/compiler-errors/samples/else-before-closing-2/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/else-before-closing-3/input.svelte b/packages/svelte/tests/compiler-errors/samples/else-before-closing-3/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/else-before-closing-3/input.svelte rename to packages/svelte/tests/compiler-errors/samples/else-before-closing-3/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/else-before-closing/input.svelte b/packages/svelte/tests/compiler-errors/samples/else-before-closing/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/else-before-closing/input.svelte rename to packages/svelte/tests/compiler-errors/samples/else-before-closing/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/else-if-before-closing-2/input.svelte b/packages/svelte/tests/compiler-errors/samples/else-if-before-closing-2/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/else-if-before-closing-2/input.svelte rename to packages/svelte/tests/compiler-errors/samples/else-if-before-closing-2/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/else-if-before-closing/input.svelte b/packages/svelte/tests/compiler-errors/samples/else-if-before-closing/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/else-if-before-closing/input.svelte rename to packages/svelte/tests/compiler-errors/samples/else-if-before-closing/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/else-if-without-if/input.svelte b/packages/svelte/tests/compiler-errors/samples/else-if-without-if/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/else-if-without-if/input.svelte rename to packages/svelte/tests/compiler-errors/samples/else-if-without-if/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/empty-attribute-shorthand/input.svelte b/packages/svelte/tests/compiler-errors/samples/empty-attribute-shorthand/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/empty-attribute-shorthand/input.svelte rename to packages/svelte/tests/compiler-errors/samples/empty-attribute-shorthand/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/empty-classname-binding/input.svelte b/packages/svelte/tests/compiler-errors/samples/empty-classname-binding/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/empty-classname-binding/input.svelte rename to packages/svelte/tests/compiler-errors/samples/empty-classname-binding/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/empty-directive-name/input.svelte b/packages/svelte/tests/compiler-errors/samples/empty-directive-name/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/empty-directive-name/input.svelte rename to packages/svelte/tests/compiler-errors/samples/empty-directive-name/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/illegal-expression/input.svelte b/packages/svelte/tests/compiler-errors/samples/illegal-expression/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/illegal-expression/input.svelte rename to packages/svelte/tests/compiler-errors/samples/illegal-expression/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/multiple-styles/input.svelte b/packages/svelte/tests/compiler-errors/samples/multiple-styles/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/multiple-styles/input.svelte rename to packages/svelte/tests/compiler-errors/samples/multiple-styles/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/raw-mustaches-whitespace/input.svelte b/packages/svelte/tests/compiler-errors/samples/raw-mustaches-whitespace/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/raw-mustaches-whitespace/input.svelte rename to packages/svelte/tests/compiler-errors/samples/raw-mustaches-whitespace/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.js b/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-no-const-assignment/main.js b/packages/svelte/tests/compiler-errors/samples/runes-no-const-assignment/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-no-const-assignment/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-no-const-assignment/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-args/main.js b/packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-args/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-args/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-args/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-placement/main.js b/packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-placement/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-placement/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-wrong-derived-placement/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-args/main.js b/packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-args/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-args/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-args/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-placement/main.js b/packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-placement/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-placement/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-wrong-effect-placement/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-wrong-props-placement/main.js b/packages/svelte/tests/compiler-errors/samples/runes-wrong-props-placement/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-wrong-props-placement/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-wrong-props-placement/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-wrong-state-args/main.js b/packages/svelte/tests/compiler-errors/samples/runes-wrong-state-args/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-wrong-state-args/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-wrong-state-args/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/runes-wrong-state-placement/main.js b/packages/svelte/tests/compiler-errors/samples/runes-wrong-state-placement/main.svelte.js similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/runes-wrong-state-placement/main.js rename to packages/svelte/tests/compiler-errors/samples/runes-wrong-state-placement/main.svelte.js diff --git a/packages/svelte/tests/compiler-errors/samples/script-unclosed-eof/input.svelte b/packages/svelte/tests/compiler-errors/samples/script-unclosed-eof/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/script-unclosed-eof/input.svelte rename to packages/svelte/tests/compiler-errors/samples/script-unclosed-eof/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/script-unclosed/input.svelte b/packages/svelte/tests/compiler-errors/samples/script-unclosed/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/script-unclosed/input.svelte rename to packages/svelte/tests/compiler-errors/samples/script-unclosed/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/self-reference/input.svelte b/packages/svelte/tests/compiler-errors/samples/self-reference/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/self-reference/input.svelte rename to packages/svelte/tests/compiler-errors/samples/self-reference/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/style-unclosed-eof/input.svelte b/packages/svelte/tests/compiler-errors/samples/style-unclosed-eof/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/style-unclosed-eof/input.svelte rename to packages/svelte/tests/compiler-errors/samples/style-unclosed-eof/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/style-unclosed/input.svelte b/packages/svelte/tests/compiler-errors/samples/style-unclosed/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/style-unclosed/input.svelte rename to packages/svelte/tests/compiler-errors/samples/style-unclosed/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/svelte-selfdestructive/input.svelte b/packages/svelte/tests/compiler-errors/samples/svelte-selfdestructive/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/svelte-selfdestructive/input.svelte rename to packages/svelte/tests/compiler-errors/samples/svelte-selfdestructive/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/then-before-closing/input.svelte b/packages/svelte/tests/compiler-errors/samples/then-before-closing/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/then-before-closing/input.svelte rename to packages/svelte/tests/compiler-errors/samples/then-before-closing/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/then-without-await/input.svelte b/packages/svelte/tests/compiler-errors/samples/then-without-await/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/then-without-await/input.svelte rename to packages/svelte/tests/compiler-errors/samples/then-without-await/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unclosed-attribute-self-close-tag/input.svelte b/packages/svelte/tests/compiler-errors/samples/unclosed-attribute-self-close-tag/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unclosed-attribute-self-close-tag/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unclosed-attribute-self-close-tag/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-b/input.svelte b/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-b/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-b/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-b/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-c/input.svelte b/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-c/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-c/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-c/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-d/input.svelte b/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-d/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-d/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input-d/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input/input.svelte b/packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unexpected-end-of-input/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose-2/input.svelte b/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose-2/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose-2/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose-2/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/input.svelte b/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag/input.svelte b/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag/input.svelte rename to packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/void-closing/input.svelte b/packages/svelte/tests/compiler-errors/samples/void-closing/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/void-closing/input.svelte rename to packages/svelte/tests/compiler-errors/samples/void-closing/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/window-children/input.svelte b/packages/svelte/tests/compiler-errors/samples/window-children/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/window-children/input.svelte rename to packages/svelte/tests/compiler-errors/samples/window-children/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/window-duplicate/input.svelte b/packages/svelte/tests/compiler-errors/samples/window-duplicate/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/window-duplicate/input.svelte rename to packages/svelte/tests/compiler-errors/samples/window-duplicate/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/window-inside-block/input.svelte b/packages/svelte/tests/compiler-errors/samples/window-inside-block/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/window-inside-block/input.svelte rename to packages/svelte/tests/compiler-errors/samples/window-inside-block/main.svelte diff --git a/packages/svelte/tests/compiler-errors/samples/window-inside-element/input.svelte b/packages/svelte/tests/compiler-errors/samples/window-inside-element/main.svelte similarity index 100% rename from packages/svelte/tests/compiler-errors/samples/window-inside-element/input.svelte rename to packages/svelte/tests/compiler-errors/samples/window-inside-element/main.svelte diff --git a/packages/svelte/tests/compiler-errors/test.ts b/packages/svelte/tests/compiler-errors/test.ts index b7a76c896fd2..8f6e9ebf0713 100644 --- a/packages/svelte/tests/compiler-errors/test.ts +++ b/packages/svelte/tests/compiler-errors/test.ts @@ -12,6 +12,10 @@ interface CompilerErrorTest extends BaseTest { } const { test, run } = suite((config, cwd) => { + if (!fs.existsSync(`${cwd}/main.svelte`) && !fs.existsSync(`${cwd}/main.svelte.js`)) { + throw new Error('Expected main.svelte or main.svelte.js'); + } + if (fs.existsSync(`${cwd}/main.svelte`)) { let caught_error = false; From 8b084cdca0ea356d06bed3c3402b9dd8eb22ad79 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 4 Dec 2023 06:22:19 -0500 Subject: [PATCH 2/8] missed a spot --- packages/svelte/tests/compiler-errors/test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/svelte/tests/compiler-errors/test.ts b/packages/svelte/tests/compiler-errors/test.ts index 8f6e9ebf0713..ee14125dc0e1 100644 --- a/packages/svelte/tests/compiler-errors/test.ts +++ b/packages/svelte/tests/compiler-errors/test.ts @@ -41,11 +41,11 @@ const { test, run } = suite((config, cwd) => { } } - if (fs.existsSync(`${cwd}/main.js`)) { + if (fs.existsSync(`${cwd}/main.svelte.js`)) { let caught_error = false; try { - compileModule(fs.readFileSync(`${cwd}/main.js`, 'utf-8'), { + compileModule(fs.readFileSync(`${cwd}/main.svelte.js`, 'utf-8'), { generate: 'client' }); } catch (e) { From 5b7081fd816089a973cda3d4db25db1bc8f0bfc6 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Mon, 4 Dec 2023 16:46:49 +0100 Subject: [PATCH 3/8] fixes --- packages/svelte/src/compiler/errors.js | 2 +- .../src/compiler/phases/1-parse/index.js | 2 ++ .../compiler/phases/1-parse/state/element.js | 20 ++++++++++--------- .../class-state-field-static/_config.js | 2 +- .../css-global-without-selector/_config.js | 2 +- .../compiler-errors/samples/css/_config.js | 2 +- .../empty-classname-binding/_config.js | 2 +- .../samples/empty-directive-name/_config.js | 2 +- .../samples/illegal-expression/_config.js | 2 +- .../samples/multiple-styles/_config.js | 2 +- .../samples/self-reference/_config.js | 2 +- .../samples/svelte-selfdestructive/_config.js | 2 +- .../_config.js | 4 ++-- .../main.svelte | 2 +- .../unexpected-end-of-input-d/_config.js | 2 +- .../unexpected-end-of-input/_config.js | 2 +- .../_config.js | 4 ++-- .../samples/void-closing/_config.js | 2 +- .../samples/window-children/_config.js | 2 +- .../samples/window-duplicate/_config.js | 4 ++-- .../samples/window-inside-block/_config.js | 2 +- .../samples/window-inside-element/_config.js | 2 +- packages/svelte/tests/compiler-errors/test.ts | 5 +++-- packages/svelte/tests/helpers.js | 9 ++++++++- 24 files changed, 47 insertions(+), 35 deletions(-) diff --git a/packages/svelte/src/compiler/errors.js b/packages/svelte/src/compiler/errors.js index a4000fb1115c..7c46bd1b4d5b 100644 --- a/packages/svelte/src/compiler/errors.js +++ b/packages/svelte/src/compiler/errors.js @@ -24,7 +24,7 @@ const internal = { const parse = { /** @param {string} name */ 'unclosed-element': (name) => `<${name}> was left open`, - 'unclosed-block': () => `block was left open`, + 'unclosed-block': () => `Block was left open`, 'unexpected-block-close': () => `Unexpected block closing tag`, 'unexpected-eof': () => `Unexpected end of input`, /** @param {string} message */ diff --git a/packages/svelte/src/compiler/phases/1-parse/index.js b/packages/svelte/src/compiler/phases/1-parse/index.js index 5199ad596005..d74c776efcab 100644 --- a/packages/svelte/src/compiler/phases/1-parse/index.js +++ b/packages/svelte/src/compiler/phases/1-parse/index.js @@ -77,8 +77,10 @@ export class Parser { const current = this.current(); if (current.type === 'RegularElement') { + current.end = current.start + 1; error(current, 'unclosed-element', current.name); } else { + current.end = current.start + 1; error(current, 'unclosed-block'); } } diff --git a/packages/svelte/src/compiler/phases/1-parse/state/element.js b/packages/svelte/src/compiler/phases/1-parse/state/element.js index a5e2a2a82ab1..31a3b2fe4228 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/element.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/element.js @@ -202,11 +202,12 @@ export default function tag(parser) { let attribute; while ((attribute = read(parser))) { - if ( - (attribute.type === 'Attribute' || attribute.type === 'BindDirective') && - unique_names.includes(attribute.name) - ) { - error(attribute.start, 'duplicate-attribute'); + if (attribute.type === 'Attribute' || attribute.type === 'BindDirective') { + if (unique_names.includes(attribute.name)) { + error(attribute.start, 'duplicate-attribute'); + } else { + unique_names.push(attribute.name); + } } element.attributes.push(attribute); @@ -635,13 +636,14 @@ function read_attribute_value(parser) { 'in attribute value' ); } catch (/** @type {any} e */ e) { - if (e.code === 'parse-error') { + if (e.code === 'js-parse-error') { // if the attribute value didn't close + self-closing tag // eg: `` // acorn may throw a `Unterminated regular expression` because of `/>` - if (parser.template.slice(e.pos - 1, e.pos + 1) === '/>') { - parser.index = e.pos; - error(e.pos, 'unclosed-attribute-value', quote_mark || '}'); + const pos = e.position?.[0]; + if (pos !== undefined && parser.template.slice(pos - 1, pos + 1) === '/>') { + parser.index = pos; + error(pos, 'unclosed-attribute-value', quote_mark || '}'); } } throw e; diff --git a/packages/svelte/tests/compiler-errors/samples/class-state-field-static/_config.js b/packages/svelte/tests/compiler-errors/samples/class-state-field-static/_config.js index b6dca4e40db7..27991ba42715 100644 --- a/packages/svelte/tests/compiler-errors/samples/class-state-field-static/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/class-state-field-static/_config.js @@ -4,6 +4,6 @@ export default test({ error: { code: 'invalid-state-location', message: '$state() can only be used as a variable declaration initializer or a class field', - position: process.platform === 'win32' ? [35, 43] : [33, 41] + position: [33, 41] } }); diff --git a/packages/svelte/tests/compiler-errors/samples/css-global-without-selector/_config.js b/packages/svelte/tests/compiler-errors/samples/css-global-without-selector/_config.js index c8e598d4a84a..fc5349f233d9 100644 --- a/packages/svelte/tests/compiler-errors/samples/css-global-without-selector/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/css-global-without-selector/_config.js @@ -2,7 +2,7 @@ import { test } from '../../test'; export default test({ error: { - code: 'css-syntax-error', + code: 'invalid-css-identifier', message: ':global() must contain a selector', position: [9, 9] } diff --git a/packages/svelte/tests/compiler-errors/samples/css/_config.js b/packages/svelte/tests/compiler-errors/samples/css/_config.js index d1a7e346f9c3..9e7cd1660169 100644 --- a/packages/svelte/tests/compiler-errors/samples/css/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/css/_config.js @@ -2,7 +2,7 @@ import { test } from '../../test'; export default test({ error: { - code: 'css-syntax-error', + code: 'invalid-css-identifier', message: '"{" is expected', position: [24, 24] } diff --git a/packages/svelte/tests/compiler-errors/samples/empty-classname-binding/_config.js b/packages/svelte/tests/compiler-errors/samples/empty-classname-binding/_config.js index 0051e827a508..bd1d1d768264 100644 --- a/packages/svelte/tests/compiler-errors/samples/empty-classname-binding/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/empty-classname-binding/_config.js @@ -3,7 +3,7 @@ import { test } from '../../test'; export default test({ error: { code: 'empty-directive-name', - message: 'Class name cannot be empty', + message: 'ClassDirective name cannot be empty', position: [10, 10] } }); diff --git a/packages/svelte/tests/compiler-errors/samples/empty-directive-name/_config.js b/packages/svelte/tests/compiler-errors/samples/empty-directive-name/_config.js index 7f6d0f1d0f8c..48a0eb32c47e 100644 --- a/packages/svelte/tests/compiler-errors/samples/empty-directive-name/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/empty-directive-name/_config.js @@ -3,7 +3,7 @@ import { test } from '../../test'; export default test({ error: { code: 'empty-directive-name', - message: 'Action name cannot be empty', + message: 'UseDirective name cannot be empty', position: [8, 8] } }); diff --git a/packages/svelte/tests/compiler-errors/samples/illegal-expression/_config.js b/packages/svelte/tests/compiler-errors/samples/illegal-expression/_config.js index 659679c345b3..887f11e882bb 100644 --- a/packages/svelte/tests/compiler-errors/samples/illegal-expression/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/illegal-expression/_config.js @@ -2,7 +2,7 @@ import { test } from '../../test'; export default test({ error: { - code: 'parse-error', + code: 'js-parse-error', message: 'Assigning to rvalue', position: [1, 1] } diff --git a/packages/svelte/tests/compiler-errors/samples/multiple-styles/_config.js b/packages/svelte/tests/compiler-errors/samples/multiple-styles/_config.js index da3e69fc1e95..66cdcd9553db 100644 --- a/packages/svelte/tests/compiler-errors/samples/multiple-styles/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/multiple-styles/_config.js @@ -2,7 +2,7 @@ import { test } from '../../test'; export default test({ error: { - code: 'duplicate-style', + code: 'duplicate-style-element', message: 'You can only have one top-level + +

Broken

diff --git a/packages/svelte/tests/parser-modern/samples/css-nth-syntax/output.json b/packages/svelte/tests/parser-modern/samples/css-nth-syntax/output.json new file mode 100644 index 000000000000..1cea48b17c66 --- /dev/null +++ b/packages/svelte/tests/parser-modern/samples/css-nth-syntax/output.json @@ -0,0 +1,520 @@ +{ + "css": { + "type": "Style", + "start": 0, + "end": 467, + "attributes": [], + "children": [ + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 60, + "end": 80, + "children": [ + { + "type": "Selector", + "start": 60, + "end": 80, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 60, + "end": 62 + }, + { + "type": "PseudoClassSelector", + "name": "nth-of-type", + "args": { + "type": "SelectorList", + "start": 75, + "end": 79, + "children": [ + { + "type": "Selector", + "start": 75, + "end": 79, + "children": [ + { + "type": "Nth", + "value": "2n+1", + "start": 75, + "end": 79 + } + ] + } + ] + }, + "start": 62, + "end": 80 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 80, + "end": 112, + "children": [ + { + "type": "Declaration", + "start": 90, + "end": 105, + "property": "background", + "value": "red" + } + ] + }, + "start": 60, + "end": 112 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 117, + "end": 153, + "children": [ + { + "type": "Selector", + "start": 117, + "end": 153, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 117, + "end": 119 + }, + { + "type": "PseudoClassSelector", + "name": "nth-child", + "args": { + "type": "SelectorList", + "start": 130, + "end": 152, + "children": [ + { + "type": "Selector", + "start": 130, + "end": 152, + "children": [ + { + "type": "Nth", + "value": "-n + 3 of ", + "start": 130, + "end": 140 + }, + { + "type": "TypeSelector", + "name": "li", + "start": 140, + "end": 142 + }, + { + "type": "ClassSelector", + "name": "important", + "start": 142, + "end": 152 + } + ] + } + ] + }, + "start": 119, + "end": 153 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 154, + "end": 186, + "children": [ + { + "type": "Declaration", + "start": 164, + "end": 179, + "property": "background", + "value": "red" + } + ] + }, + "start": 117, + "end": 186 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 191, + "end": 206, + "children": [ + { + "type": "Selector", + "start": 191, + "end": 206, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 191, + "end": 193 + }, + { + "type": "PseudoClassSelector", + "name": "nth-child", + "args": { + "type": "SelectorList", + "start": 204, + "end": 205, + "children": [ + { + "type": "Selector", + "start": 204, + "end": 205, + "children": [ + { + "type": "Nth", + "value": "1", + "start": 204, + "end": 205 + } + ] + } + ] + }, + "start": 193, + "end": 206 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 207, + "end": 239, + "children": [ + { + "type": "Declaration", + "start": 217, + "end": 232, + "property": "background", + "value": "red" + } + ] + }, + "start": 191, + "end": 239 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 244, + "end": 259, + "children": [ + { + "type": "Selector", + "start": 244, + "end": 259, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 244, + "end": 246 + }, + { + "type": "PseudoClassSelector", + "name": "nth-child", + "args": { + "type": "SelectorList", + "start": 257, + "end": 258, + "children": [ + { + "type": "Selector", + "start": 257, + "end": 258, + "children": [ + { + "type": "TypeSelector", + "name": "p", + "start": 257, + "end": 258 + } + ] + } + ] + }, + "start": 246, + "end": 259 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 260, + "end": 292, + "children": [ + { + "type": "Declaration", + "start": 270, + "end": 285, + "property": "background", + "value": "red" + } + ] + }, + "start": 244, + "end": 292 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 297, + "end": 314, + "children": [ + { + "type": "Selector", + "start": 297, + "end": 314, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 297, + "end": 299 + }, + { + "type": "PseudoClassSelector", + "name": "nth-child", + "args": { + "type": "SelectorList", + "start": 310, + "end": 313, + "children": [ + { + "type": "Selector", + "start": 310, + "end": 313, + "children": [ + { + "type": "Nth", + "value": "n+7", + "start": 310, + "end": 313 + } + ] + } + ] + }, + "start": 299, + "end": 314 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 315, + "end": 347, + "children": [ + { + "type": "Declaration", + "start": 325, + "end": 340, + "property": "background", + "value": "red" + } + ] + }, + "start": 297, + "end": 347 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 352, + "end": 370, + "children": [ + { + "type": "Selector", + "start": 352, + "end": 370, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 352, + "end": 354 + }, + { + "type": "PseudoClassSelector", + "name": "nth-child", + "args": { + "type": "SelectorList", + "start": 365, + "end": 369, + "children": [ + { + "type": "Selector", + "start": 365, + "end": 369, + "children": [ + { + "type": "Nth", + "value": "even", + "start": 365, + "end": 369 + } + ] + } + ] + }, + "start": 354, + "end": 370 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 371, + "end": 403, + "children": [ + { + "type": "Declaration", + "start": 381, + "end": 396, + "property": "background", + "value": "red" + } + ] + }, + "start": 352, + "end": 403 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 408, + "end": 425, + "children": [ + { + "type": "Selector", + "start": 408, + "end": 425, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 408, + "end": 410 + }, + { + "type": "PseudoClassSelector", + "name": "nth-child", + "args": { + "type": "SelectorList", + "start": 421, + "end": 424, + "children": [ + { + "type": "Selector", + "start": 421, + "end": 424, + "children": [ + { + "type": "Nth", + "value": "odd", + "start": 421, + "end": 424 + } + ] + } + ] + }, + "start": 410, + "end": 425 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 426, + "end": 458, + "children": [ + { + "type": "Declaration", + "start": 436, + "end": 451, + "property": "background", + "value": "red" + } + ] + }, + "start": 408, + "end": 458 + } + ], + "content": { + "start": 7, + "end": 459, + "styles": "\n /* test that all these are parsed correctly */\n\th1:nth-of-type(2n+1){\n background: red;\n }\n h1:nth-child(-n + 3 of li.important) {\n background: red;\n }\n h1:nth-child(1) {\n background: red;\n }\n h1:nth-child(p) {\n background: red;\n }\n h1:nth-child(n+7) {\n background: red;\n }\n h1:nth-child(even) {\n background: red;\n }\n h1:nth-child(odd) {\n background: red;\n }\n" + } + }, + "js": [], + "start": 469, + "end": 484, + "type": "Root", + "fragment": { + "type": "Fragment", + "nodes": [ + { + "type": "Text", + "start": 467, + "end": 469, + "raw": "\n\n", + "data": "\n\n" + }, + { + "type": "RegularElement", + "start": 469, + "end": 484, + "name": "h1", + "attributes": [], + "fragment": { + "type": "Fragment", + "nodes": [ + { + "type": "Text", + "start": 473, + "end": 479, + "raw": "Broken", + "data": "Broken" + } + ], + "transparent": true + } + } + ], + "transparent": false + }, + "options": null +} From bece149c1e48c4962f574f53624d5a03c0fd5f49 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Tue, 5 Dec 2023 09:47:27 +0100 Subject: [PATCH 7/8] fixes --- .changeset/itchy-beans-melt.md | 5 +++++ packages/svelte/src/compiler/phases/1-parse/state/element.js | 3 ++- .../compiler-errors/samples/export-derived-state/_config.js | 2 +- .../tests/compiler-errors/samples/export-state/_config.js | 2 +- .../samples/runes-export-named-state/_config.js | 5 +++-- .../samples/runes-export-named-state/main.svelte.js | 2 ++ packages/svelte/tests/compiler-errors/test.ts | 4 ++-- 7 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 .changeset/itchy-beans-melt.md diff --git a/.changeset/itchy-beans-melt.md b/.changeset/itchy-beans-melt.md new file mode 100644 index 000000000000..e6a58d02ff9c --- /dev/null +++ b/.changeset/itchy-beans-melt.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +chore: fix compiler errors test suite diff --git a/packages/svelte/src/compiler/phases/1-parse/state/element.js b/packages/svelte/src/compiler/phases/1-parse/state/element.js index 31a3b2fe4228..019e29c9445b 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/element.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/element.js @@ -205,7 +205,8 @@ export default function tag(parser) { if (attribute.type === 'Attribute' || attribute.type === 'BindDirective') { if (unique_names.includes(attribute.name)) { error(attribute.start, 'duplicate-attribute'); - } else { + // is allowed + } else if (attribute.name !== 'this') { unique_names.push(attribute.name); } } diff --git a/packages/svelte/tests/compiler-errors/samples/export-derived-state/_config.js b/packages/svelte/tests/compiler-errors/samples/export-derived-state/_config.js index 801d1d8a3077..1c171d19c08f 100644 --- a/packages/svelte/tests/compiler-errors/samples/export-derived-state/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/export-derived-state/_config.js @@ -4,6 +4,6 @@ export default test({ error: { code: 'invalid-derived-export', message: 'Cannot export derived state', - position: process.platform === 'win32' ? [26, 68] : [24, 66] + position: [24, 66] } }); diff --git a/packages/svelte/tests/compiler-errors/samples/export-state/_config.js b/packages/svelte/tests/compiler-errors/samples/export-state/_config.js index 755b891586f7..5ddb2a859a9c 100644 --- a/packages/svelte/tests/compiler-errors/samples/export-state/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/export-state/_config.js @@ -4,6 +4,6 @@ export default test({ error: { code: 'invalid-state-export', message: 'Cannot export state if it is reassigned', - position: process.platform === 'win32' ? [50, 90] : [46, 86] + position: [46, 86] } }); diff --git a/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/_config.js b/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/_config.js index effac3060dc9..a42a651141a9 100644 --- a/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/_config.js @@ -2,7 +2,8 @@ import { test } from '../../test'; export default test({ error: { - code: '', - message: 'Cannot export value created with $state' + code: 'invalid-state-export', + message: 'Cannot export state if it is reassigned', + position: [28, 53] } }); diff --git a/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.svelte.js b/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.svelte.js index 714838f27ae6..af62861e6783 100644 --- a/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.svelte.js +++ b/packages/svelte/tests/compiler-errors/samples/runes-export-named-state/main.svelte.js @@ -1 +1,3 @@ export const x = $state(0); +export let y = $state(0); +y = 1; diff --git a/packages/svelte/tests/compiler-errors/test.ts b/packages/svelte/tests/compiler-errors/test.ts index b8eec051bb4a..ea696890b4f8 100644 --- a/packages/svelte/tests/compiler-errors/test.ts +++ b/packages/svelte/tests/compiler-errors/test.ts @@ -54,8 +54,8 @@ const { test, run } = suite((config, cwd) => { caught_error = true; - expect(error.code).toMatch(config.error.code); - expect(error.message).toMatch(config.error.message); + expect(error.code).toEqual(config.error.code); + expect(error.message).toEqual(config.error.message); if (config.error.position) { expect(error.position).toEqual(config.error.position); From 3ef9987b0b26d9a7ef89f31179fa55e9844eb701 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Tue, 5 Dec 2023 11:19:05 +0100 Subject: [PATCH 8/8] fix --- packages/svelte/src/compiler/phases/2-analyze/css/Selector.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js b/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js index fcddaf2df643..b0942d6572c3 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js +++ b/packages/svelte/src/compiler/phases/2-analyze/css/Selector.js @@ -306,7 +306,7 @@ function block_might_apply_to_node(block, node) { while (i--) { const selector = block.selectors[i]; - if (selector.type === 'Percentage') continue; + if (selector.type === 'Percentage' || selector.type === 'Nth') continue; const name = selector.name.replace(regex_backslash_and_following_character, '$1');