From 56315df67961fd4caa26116940415cc2f34fe3ee Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:05:45 +0100 Subject: [PATCH] feat: allow arbitrary call expressions for render tags (#10656) closes #9582 --- .changeset/ten-jokes-divide.md | 5 +++ packages/svelte/src/compiler/errors.js | 4 +- .../src/compiler/phases/1-parse/state/tag.js | 10 +++-- .../compiler/phases/2-analyze/validation.js | 18 ++++++-- .../3-transform/client/visitors/template.js | 24 ++++++---- .../3-transform/server/transform-server.js | 24 ++++++++-- .../svelte/src/compiler/types/template.d.ts | 8 ++-- packages/svelte/src/compiler/utils/ast.js | 9 ++++ packages/svelte/src/internal/client/render.js | 6 ++- .../svelte/src/internal/client/validate.js | 2 +- .../render-tag-invalid-call/_config.js | 8 ++++ .../render-tag-invalid-call/main.svelte | 1 + .../samples/snippets/output.json | 44 +++++++++++++------ .../samples/snippet-expressions/_config.js | 42 ++++++++++++++++++ .../samples/snippet-expressions/child.svelte | 21 +++++++++ .../samples/snippet-expressions/main.svelte | 17 +++++++ packages/svelte/types/index.d.ts | 5 +-- 17 files changed, 206 insertions(+), 42 deletions(-) create mode 100644 .changeset/ten-jokes-divide.md create mode 100644 packages/svelte/tests/compiler-errors/samples/render-tag-invalid-call/_config.js create mode 100644 packages/svelte/tests/compiler-errors/samples/render-tag-invalid-call/main.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/snippet-expressions/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/snippet-expressions/child.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/snippet-expressions/main.svelte diff --git a/.changeset/ten-jokes-divide.md b/.changeset/ten-jokes-divide.md new file mode 100644 index 0000000000..179357fb29 --- /dev/null +++ b/.changeset/ten-jokes-divide.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +feat: allow arbitrary call expressions and optional chaining for snippets diff --git a/packages/svelte/src/compiler/errors.js b/packages/svelte/src/compiler/errors.js index f2207c9336..213b689d3e 100644 --- a/packages/svelte/src/compiler/errors.js +++ b/packages/svelte/src/compiler/errors.js @@ -89,8 +89,10 @@ const parse = { 'duplicate-style-element': () => `A component can have a single top-level