diff --git a/packages/svelte/src/compiler/errors.js b/packages/svelte/src/compiler/errors.js index c31ad4a038..72397e1f6e 100644 --- a/packages/svelte/src/compiler/errors.js +++ b/packages/svelte/src/compiler/errors.js @@ -110,7 +110,8 @@ const css = { `:global(...) must not contain type or universal selectors when used in a compound selector`, 'invalid-css-selector': () => `Invalid selector`, 'invalid-css-identifier': () => 'Expected a valid CSS identifier', - 'invalid-nesting-selector': () => `Nesting selectors can only be used inside a rule` + 'invalid-nesting-selector': () => `Nesting selectors can only be used inside a rule`, + 'invalid-css-declaration': () => 'Declaration cannot be empty' }; /** @satisfies {Errors} */ @@ -278,7 +279,9 @@ const attributes = { directive2 )} directive`; }, - 'invalid-let-directive-placement': () => 'let directive at invalid position' + 'invalid-let-directive-placement': () => 'let directive at invalid position', + 'invalid-style-directive-modifier': () => + `Invalid 'style:' modifier. Valid modifiers are: 'important'` }; /** @satisfies {Errors} */ @@ -330,7 +333,11 @@ const variables = { `${name} is an illegal variable name. To reference a global variable called ${name}, use globalThis.${name}`, /** @param {string} name */ 'duplicate-declaration': (name) => `'${name}' has already been declared`, - 'default-export': () => `A component cannot have a default export` + 'default-export': () => `A component cannot have a default export`, + 'illegal-variable-declaration': () => + 'Cannot declare same variable name which is imported inside {#each array as a} {@const b = a + c} {@const c = b + a} -{/each} \ No newline at end of file +{/each} diff --git a/packages/svelte/tests/validator/samples/const-tag-cyclical/_config.js b/packages/svelte/tests/validator/samples/const-tag-cyclical/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/const-tag-cyclical/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/const-tag-cyclical/errors.json b/packages/svelte/tests/validator/samples/const-tag-cyclical/errors.json deleted file mode 100644 index 2b13e575cf..0000000000 --- a/packages/svelte/tests/validator/samples/const-tag-cyclical/errors.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "code": "cyclical-const-tags", - "message": "Cyclical dependency detected: b → c → b", - "start": { "line": 6, "column": 2 }, - "end": { "line": 6, "column": 20 } - } -] diff --git a/packages/svelte/tests/validator/samples/empty-block/_config.js b/packages/svelte/tests/validator/samples/empty-block/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/empty-block/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/empty-block/input.svelte b/packages/svelte/tests/validator/samples/empty-block/input.svelte index 4185f4f817..6c2da0ffeb 100644 --- a/packages/svelte/tests/validator/samples/empty-block/input.svelte +++ b/packages/svelte/tests/validator/samples/empty-block/input.svelte @@ -2,8 +2,17 @@ let things = []; + +{#each things as thing}{/each} +{#if true}{/if} +{#key things}x{/key} +{#await promise}{things} +{/await} + + {#each things as thing} {/each} - -{#each things as thing}{/each} \ No newline at end of file +{#if true} {/if} +{#key things} {/key} +{#await promise} {/await} diff --git a/packages/svelte/tests/validator/samples/empty-block/warnings.json b/packages/svelte/tests/validator/samples/empty-block/warnings.json index 11ca8e204e..b86dab6f72 100644 --- a/packages/svelte/tests/validator/samples/empty-block/warnings.json +++ b/packages/svelte/tests/validator/samples/empty-block/warnings.json @@ -2,25 +2,25 @@ { "code": "empty-block", "message": "Empty block", - "start": { - "line": 5, - "column": 0 - }, - "end": { - "line": 7, - "column": 7 - } + "start": { "line": 13, "column": 23 }, + "end": { "line": 15, "column": 0 } }, { "code": "empty-block", "message": "Empty block", - "start": { - "line": 9, - "column": 0 - }, - "end": { - "line": 9, - "column": 30 - } + "start": { "line": 16, "column": 10 }, + "end": { "line": 16, "column": 11 } + }, + { + "code": "empty-block", + "message": "Empty block", + "start": { "line": 17, "column": 13 }, + "end": { "line": 17, "column": 14 } + }, + { + "code": "empty-block", + "message": "Empty block", + "start": { "line": 18, "column": 16 }, + "end": { "line": 18, "column": 17 } } ] diff --git a/packages/svelte/tests/validator/samples/event-modifiers-redundant/_config.js b/packages/svelte/tests/validator/samples/event-modifiers-redundant/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/event-modifiers-redundant/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/event-modifiers-redundant/input.svelte b/packages/svelte/tests/validator/samples/event-modifiers-redundant/input.svelte deleted file mode 100644 index 3161674beb..0000000000 --- a/packages/svelte/tests/validator/samples/event-modifiers-redundant/input.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - -
\ No newline at end of file diff --git a/packages/svelte/tests/validator/samples/event-modifiers-redundant/warnings.json b/packages/svelte/tests/validator/samples/event-modifiers-redundant/warnings.json deleted file mode 100644 index e5ff27b728..0000000000 --- a/packages/svelte/tests/validator/samples/event-modifiers-redundant/warnings.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "message": "The passive modifier only works with wheel and touch events", - "code": "redundant-event-modifier", - "start": { - "line": 11, - "column": 8 - }, - "end": { - "line": 11, - "column": 40 - } - }, - { - "message": "Touch event handlers that don't use the 'event' object are passive by default", - "code": "redundant-event-modifier", - "start": { - "line": 12, - "column": 5 - }, - "end": { - "line": 12, - "column": 47 - } - } -] diff --git a/packages/svelte/tests/validator/samples/illegal-attribute-character/_config.js b/packages/svelte/tests/validator/samples/illegal-attribute-character/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/illegal-attribute-character/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/illegal-variable-declaration/_config.js b/packages/svelte/tests/validator/samples/illegal-variable-declaration/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/illegal-variable-declaration/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/illegal-variable-declaration/errors.json b/packages/svelte/tests/validator/samples/illegal-variable-declaration/errors.json index 606fa5e0a6..788784d1d8 100644 --- a/packages/svelte/tests/validator/samples/illegal-variable-declaration/errors.json +++ b/packages/svelte/tests/validator/samples/illegal-variable-declaration/errors.json @@ -3,12 +3,12 @@ "code": "illegal-variable-declaration", "message": "Cannot declare same variable name which is imported inside diff --git a/packages/svelte/tests/validator/samples/invalid-empty-css-declaration/_config.js b/packages/svelte/tests/validator/samples/invalid-empty-css-declaration/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/invalid-empty-css-declaration/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/invalid-empty-css-declaration/errors.json b/packages/svelte/tests/validator/samples/invalid-empty-css-declaration/errors.json index 5d37ddccf0..2ceb3a3694 100644 --- a/packages/svelte/tests/validator/samples/invalid-empty-css-declaration/errors.json +++ b/packages/svelte/tests/validator/samples/invalid-empty-css-declaration/errors.json @@ -1,14 +1,14 @@ [ { - "code": "invalid-declaration", + "code": "invalid-css-declaration", "message": "Declaration cannot be empty", "start": { - "line": 11, - "column": 0 + "line": 5, + "column": 8 }, "end": { - "line": 11, - "column": 0 + "line": 5, + "column": 8 } } ] diff --git a/packages/svelte/tests/validator/samples/invalid-reactive-var-1/_config.js b/packages/svelte/tests/validator/samples/invalid-reactive-var-1/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/invalid-reactive-var-1/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/invalid-reactive-var-1/errors.json b/packages/svelte/tests/validator/samples/invalid-reactive-var-1/errors.json deleted file mode 100644 index 35fb5b14d0..0000000000 --- a/packages/svelte/tests/validator/samples/invalid-reactive-var-1/errors.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "code": "invalid_var_declaration", - "message": "\"var\" scope should not extend outside the reactive block", - "start": { "line": 14, "column": 7 }, - "end": { "line": 14, "column": 16 } - } -] diff --git a/packages/svelte/tests/validator/samples/invalid-reactive-var-1/input.svelte b/packages/svelte/tests/validator/samples/invalid-reactive-var-1/input.svelte deleted file mode 100644 index 7fe774959d..0000000000 --- a/packages/svelte/tests/validator/samples/invalid-reactive-var-1/input.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -

Hello {a}

diff --git a/packages/svelte/tests/validator/samples/invalid-reactive-var-2/_config.js b/packages/svelte/tests/validator/samples/invalid-reactive-var-2/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/invalid-reactive-var-2/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/invalid-reactive-var-2/errors.json b/packages/svelte/tests/validator/samples/invalid-reactive-var-2/errors.json deleted file mode 100644 index 3bc0802718..0000000000 --- a/packages/svelte/tests/validator/samples/invalid-reactive-var-2/errors.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "code": "invalid_var_declaration", - "message": "\"var\" scope should not extend outside the reactive block", - "start": { "line": 4, "column": 2 }, - "end": { "line": 4, "column": 50 } - } -] diff --git a/packages/svelte/tests/validator/samples/invalid-reactive-var-2/input.svelte b/packages/svelte/tests/validator/samples/invalid-reactive-var-2/input.svelte deleted file mode 100644 index b3a1c4272c..0000000000 --- a/packages/svelte/tests/validator/samples/invalid-reactive-var-2/input.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - -

Hello

diff --git a/packages/svelte/tests/validator/samples/reactive-module-variable/_config.js b/packages/svelte/tests/validator/samples/reactive-module-variable/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/reactive-module-variable/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/reactive-module-variable/warnings.json b/packages/svelte/tests/validator/samples/reactive-module-variable/warnings.json index 5fb84a8505..60701e30b7 100644 --- a/packages/svelte/tests/validator/samples/reactive-module-variable/warnings.json +++ b/packages/svelte/tests/validator/samples/reactive-module-variable/warnings.json @@ -1,9 +1,9 @@ [ { "code": "module-script-reactive-declaration", - "message": "\"foo\" is declared in a module script and will not be reactive", + "message": "All dependencies of the reactive declaration are declared in a module script and will not be reactive", "start": { - "column": 4, + "column": 1, "line": 5 }, "end": { diff --git a/packages/svelte/tests/validator/samples/rest-eachblock-binding-2/_config.js b/packages/svelte/tests/validator/samples/rest-eachblock-binding-2/_config.js deleted file mode 100644 index 7fc1f9f61b..0000000000 --- a/packages/svelte/tests/validator/samples/rest-eachblock-binding-2/_config.js +++ /dev/null @@ -1,4 +0,0 @@ -import { test } from '../../test'; - -// TODO this likely works in the new world - remove this warning? -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/rest-eachblock-binding-3/_config.js b/packages/svelte/tests/validator/samples/rest-eachblock-binding-3/_config.js deleted file mode 100644 index 7fc1f9f61b..0000000000 --- a/packages/svelte/tests/validator/samples/rest-eachblock-binding-3/_config.js +++ /dev/null @@ -1,4 +0,0 @@ -import { test } from '../../test'; - -// TODO this likely works in the new world - remove this warning? -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/rest-eachblock-binding-nested-rest/_config.js b/packages/svelte/tests/validator/samples/rest-eachblock-binding-nested-rest/_config.js deleted file mode 100644 index a7d521e510..0000000000 --- a/packages/svelte/tests/validator/samples/rest-eachblock-binding-nested-rest/_config.js +++ /dev/null @@ -1,4 +0,0 @@ -import { test } from '../../test'; - -// TODO this maybe works in the new world - remove this warning? -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/rest-eachblock-binding/_config.js b/packages/svelte/tests/validator/samples/rest-eachblock-binding/_config.js deleted file mode 100644 index 7fc1f9f61b..0000000000 --- a/packages/svelte/tests/validator/samples/rest-eachblock-binding/_config.js +++ /dev/null @@ -1,4 +0,0 @@ -import { test } from '../../test'; - -// TODO this likely works in the new world - remove this warning? -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/silence-warnings-2/input.svelte b/packages/svelte/tests/validator/samples/silence-warnings-2/input.svelte index 81cb90b7be..e043fdafd3 100644 --- a/packages/svelte/tests/validator/samples/silence-warnings-2/input.svelte +++ b/packages/svelte/tests/validator/samples/silence-warnings-2/input.svelte @@ -2,8 +2,7 @@ let foo; - + diff --git a/packages/svelte/tests/validator/samples/silence-warnings/input.svelte b/packages/svelte/tests/validator/samples/silence-warnings/input.svelte index 0e473f51db..8e1608d837 100644 --- a/packages/svelte/tests/validator/samples/silence-warnings/input.svelte +++ b/packages/svelte/tests/validator/samples/silence-warnings/input.svelte @@ -3,8 +3,6 @@ diff --git a/packages/svelte/tests/validator/samples/style-directive-modifiers-invalid/_config.js b/packages/svelte/tests/validator/samples/style-directive-modifiers-invalid/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/style-directive-modifiers-invalid/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/style-directive-modifiers-invalid/errors.json b/packages/svelte/tests/validator/samples/style-directive-modifiers-invalid/errors.json index ef7d27a1f6..ba88102f40 100644 --- a/packages/svelte/tests/validator/samples/style-directive-modifiers-invalid/errors.json +++ b/packages/svelte/tests/validator/samples/style-directive-modifiers-invalid/errors.json @@ -1,6 +1,6 @@ [ { - "message": "Valid modifiers for style directives are: important", + "message": "Invalid 'style:' modifier. Valid modifiers are: 'important'", "code": "invalid-style-directive-modifier", "start": { "line": 1, diff --git a/packages/svelte/tests/validator/samples/tag-invalid/_config.js b/packages/svelte/tests/validator/samples/tag-invalid/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/tag-invalid/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/tag-invalid/errors.json b/packages/svelte/tests/validator/samples/tag-invalid/errors.json index 3b479c7c58..7fc929b226 100644 --- a/packages/svelte/tests/validator/samples/tag-invalid/errors.json +++ b/packages/svelte/tests/validator/samples/tag-invalid/errors.json @@ -1,7 +1,7 @@ [ { "code": "invalid-tag-property", - "message": "tag name must be two or more words joined by the '-' character", + "message": "tag name must be two or more words joined by the \"-\" character", "start": { "line": 1, "column": 16 diff --git a/packages/svelte/tests/validator/samples/tag-non-string/_config.js b/packages/svelte/tests/validator/samples/tag-non-string/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/tag-non-string/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/tag-non-string/errors.json b/packages/svelte/tests/validator/samples/tag-non-string/errors.json index aba8b9bc95..46c98b70d5 100644 --- a/packages/svelte/tests/validator/samples/tag-non-string/errors.json +++ b/packages/svelte/tests/validator/samples/tag-non-string/errors.json @@ -1,14 +1,14 @@ [ { - "code": "invalid-tag-attribute", - "message": "'tag' must be a string literal", + "code": "invalid-svelte-option-customElement", + "message": "\"customElement\" must be a string literal defining a valid custom element name or an object of the form { tag: string; shadow?: \"open\" | \"none\"; props?: { [key: string]: { attribute?: string; reflect?: boolean; type: .. } } }", "start": { "line": 1, "column": 16 }, "end": { "line": 1, - "column": 24 + "column": 34 } } ] diff --git a/packages/svelte/tests/validator/samples/tag-non-string/input.svelte b/packages/svelte/tests/validator/samples/tag-non-string/input.svelte index 168b3ca031..feee8a706a 100644 --- a/packages/svelte/tests/validator/samples/tag-non-string/input.svelte +++ b/packages/svelte/tests/validator/samples/tag-non-string/input.svelte @@ -1 +1 @@ - + diff --git a/packages/svelte/tests/validator/samples/unreferenced-variables-each/_config.js b/packages/svelte/tests/validator/samples/unreferenced-variables-each/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/unreferenced-variables-each/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/unreferenced-variables-each/warnings.json b/packages/svelte/tests/validator/samples/unreferenced-variables-each/warnings.json index d66d0dc978..e8791eb61e 100644 --- a/packages/svelte/tests/validator/samples/unreferenced-variables-each/warnings.json +++ b/packages/svelte/tests/validator/samples/unreferenced-variables-each/warnings.json @@ -1,7 +1,7 @@ [ { "code": "unused-export-let", - "message": "Component_1 has unused export property 'default_value_5'. If it is for external reference only, please consider using `export const default_value_5`", + "message": "Component has unused export property 'default_value_5'. If it is for external reference only, please consider using `export const default_value_5`", "start": { "column": 12, "line": 8 @@ -13,7 +13,7 @@ }, { "code": "unused-export-let", - "message": "Component_1 has unused export property 'default_value_6'. If it is for external reference only, please consider using `export const default_value_6`", + "message": "Component has unused export property 'default_value_6'. If it is for external reference only, please consider using `export const default_value_6`", "start": { "column": 12, "line": 9 diff --git a/packages/svelte/tests/validator/samples/unreferenced-variables/_config.js b/packages/svelte/tests/validator/samples/unreferenced-variables/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/unreferenced-variables/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/tests/validator/samples/unreferenced-variables/warnings.json b/packages/svelte/tests/validator/samples/unreferenced-variables/warnings.json index e96a81e0dc..9690e557ec 100644 --- a/packages/svelte/tests/validator/samples/unreferenced-variables/warnings.json +++ b/packages/svelte/tests/validator/samples/unreferenced-variables/warnings.json @@ -2,31 +2,31 @@ { "code": "unused-export-let", "end": { - "column": 13, - "line": 31 + "column": 8, + "line": 28 }, "message": "Component has unused export property 'd2'. If it is for external reference only, please consider using `export const d2`", "start": { - "column": 11, - "line": 31 + "column": 6, + "line": 28 } }, { "code": "unused-export-let", "end": { - "column": 17, - "line": 31 + "column": 8, + "line": 29 }, "message": "Component has unused export property 'e2'. If it is for external reference only, please consider using `export const e2`", "start": { - "column": 15, - "line": 31 + "column": 6, + "line": 29 } }, { "code": "unused-export-let", "end": { - "column": 19, + "column": 15, "line": 32 }, "message": "Component has unused export property 'g2'. If it is for external reference only, please consider using `export const g2`", @@ -38,7 +38,7 @@ { "code": "unused-export-let", "end": { - "column": 19, + "column": 15, "line": 33 }, "message": "Component has unused export property 'h2'. If it is for external reference only, please consider using `export const h2`", @@ -50,7 +50,7 @@ { "code": "unused-export-let", "end": { - "column": 26, + "column": 15, "line": 35 }, "message": "Component has unused export property 'j2'. If it is for external reference only, please consider using `export const j2`", diff --git a/packages/svelte/tests/validator/samples/use-the-platform/_config.js b/packages/svelte/tests/validator/samples/use-the-platform/_config.js deleted file mode 100644 index 64fdc120d6..0000000000 --- a/packages/svelte/tests/validator/samples/use-the-platform/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -import { test } from '../../test'; - -export default test({ skip: true }); diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index aa01568463..c7f132bb00 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -756,6 +756,11 @@ declare module 'svelte/compiler' { expression: Expression | ((id: Identifier) => Expression) | null; /** If this is set, all mutations should use this expression */ mutation: ((assignment: AssignmentExpression, context: Context) => Expression) | null; + /** Additional metadata, varies per binding type */ + metadata: { + /** `true` if is (inside) a rest parameter */ + inside_rest?: boolean; + } | null; } interface BaseNode_1 { type: string; @@ -1020,6 +1025,10 @@ declare module 'svelte/compiler' { constructor(root: ScopeRoot, parent: Scope | null, porous: boolean); root: ScopeRoot; + /** + * The immediate parent scope + * */ + parent: Scope | null; /** * A map of every identifier declared by this scope, and all the * identifiers that reference it