diff --git a/src/compiler/parse/state/tag.ts b/src/compiler/parse/state/tag.ts index 799124b2bd..d63c319b94 100644 --- a/src/compiler/parse/state/tag.ts +++ b/src/compiler/parse/state/tag.ts @@ -221,9 +221,9 @@ export default function tag(parser: Parser) { element.children = read_sequence( parser, () => - parser.template.slice(parser.index, parser.index + 11) === '' + /<\/textarea[>\s]/i.test(parser.template.slice(parser.index, parser.index + 11)) ); - parser.read(/<\/textarea>/); + parser.read(/<\/textarea\s*>/i); element.end = parser.index; } else if (name === 'script' || name === 'style') { // special case diff --git a/test/parser/samples/textarea-end-tag/input.svelte b/test/parser/samples/textarea-end-tag/input.svelte new file mode 100644 index 0000000000..8af5ac13a2 --- /dev/null +++ b/test/parser/samples/textarea-end-tag/input.svelte @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/test/parser/samples/textarea-end-tag/output.json b/test/parser/samples/textarea-end-tag/output.json new file mode 100644 index 0000000000..0e11a55581 --- /dev/null +++ b/test/parser/samples/textarea-end-tag/output.json @@ -0,0 +1,53 @@ +{ + "html": { + "start": 0, + "end": 94, + "type": "Fragment", + "children": [ + { + "start": 0, + "end": 94, + "type": "Element", + "name": "textarea", + "attributes": [], + "children": [ + { + "start": 10, + "end": 51, + "type": "Text", + "raw": "\n\t

not actu not actu \n asdf", + "data": "

\n asdf" + } + ] + } + ] + } +} \ No newline at end of file