From 4e391263aec83fa1307a8e8ad751eca10911badd Mon Sep 17 00:00:00 2001 From: tanhauhau Date: Tue, 13 Sep 2022 13:10:11 +0800 Subject: [PATCH] better error message for invalid logic block placement --- src/compiler/parse/errors.ts | 4 ++++ src/compiler/parse/state/tag.ts | 14 +++++++++++--- .../samples/logic-block-in-attribute/errors.json | 9 +++++++++ .../samples/logic-block-in-attribute/input.svelte | 1 + .../samples/logic-block-in-textarea/errors.json | 9 +++++++++ .../samples/logic-block-in-textarea/input.svelte | 5 +++++ 6 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 test/validator/samples/logic-block-in-attribute/errors.json create mode 100644 test/validator/samples/logic-block-in-attribute/input.svelte create mode 100644 test/validator/samples/logic-block-in-textarea/errors.json create mode 100644 test/validator/samples/logic-block-in-textarea/input.svelte diff --git a/src/compiler/parse/errors.ts b/src/compiler/parse/errors.ts index 63bd5b0919..33bd1abab7 100644 --- a/src/compiler/parse/errors.ts +++ b/src/compiler/parse/errors.ts @@ -107,6 +107,10 @@ export default { code: `invalid-${slug}-placement`, message: `<${name}> tags cannot be inside elements or blocks` }), + invalid_logic_block_placement: (location: string, name: string) => ({ + code: 'invalid-logic-block-placement', + message: `{#${name}} logic block cannot be ${location}` + }), invalid_ref_directive: (name: string) => ({ code: 'invalid-ref-directive', message: `The ref directive is no longer supported — use \`bind:this={${name}}\` instead` diff --git a/src/compiler/parse/state/tag.ts b/src/compiler/parse/state/tag.ts index efce375b7e..754b43952e 100644 --- a/src/compiler/parse/state/tag.ts +++ b/src/compiler/parse/state/tag.ts @@ -219,7 +219,8 @@ export default function tag(parser: Parser) { element.children = read_sequence( parser, () => - /^<\/textarea(\s[^>]*)?>/i.test(parser.template.slice(parser.index)) + /^<\/textarea(\s[^>]*)?>/i.test(parser.template.slice(parser.index)), + 'inside \ No newline at end of file