From 5e58764c635f7084c98f6cd69203fee99ee08b05 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Mon, 1 Jul 2019 23:06:31 -0400 Subject: [PATCH] prevent malformed code when injecting invalidate statements --- .../compile/nodes/shared/Expression.ts | 2 +- .../function-expression-inline/_config.js | 22 +++++++++++++++++++ .../function-expression-inline/main.svelte | 13 +++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/runtime/samples/function-expression-inline/_config.js create mode 100644 test/runtime/samples/function-expression-inline/main.svelte diff --git a/src/compiler/compile/nodes/shared/Expression.ts b/src/compiler/compile/nodes/shared/Expression.ts index e85c1de5e5..5b225bf1b7 100644 --- a/src/compiler/compile/nodes/shared/Expression.ts +++ b/src/compiler/compile/nodes/shared/Expression.ts @@ -459,7 +459,7 @@ export default class Expression { if (/^(Break|Continue|Return)Statement/.test(node.type)) { if (node.argument) { code.overwrite(node.start, node.argument.start, `var $$result = `); - code.appendLeft(node.argument.end, `${insert}; return $$result`); + code.appendLeft(node.end, `${insert}; return $$result`); } else { code.prependRight(node.start, `${insert}; `); } diff --git a/test/runtime/samples/function-expression-inline/_config.js b/test/runtime/samples/function-expression-inline/_config.js new file mode 100644 index 0000000000..d4b80267cd --- /dev/null +++ b/test/runtime/samples/function-expression-inline/_config.js @@ -0,0 +1,22 @@ +export default { + html: ` + +

1

+

2

+

3

+ `, + + async test({ assert, component, target, window }) { + const button = target.querySelector('button'); + const click = new window.MouseEvent('click'); + + await button.dispatchEvent(click); + + assert.htmlEqual(target.innerHTML, ` + +

2

+

4

+

6

+ `); + } +} \ No newline at end of file diff --git a/test/runtime/samples/function-expression-inline/main.svelte b/test/runtime/samples/function-expression-inline/main.svelte new file mode 100644 index 0000000000..f3f98459a7 --- /dev/null +++ b/test/runtime/samples/function-expression-inline/main.svelte @@ -0,0 +1,13 @@ + + + + +{#each list as number} +

{number}

+{/each} \ No newline at end of file