Skip to content

Commit 7612d6c

Browse files
author
Simon Holthausen
committed
Fix replacement inside await
Use prepend instead of append so that outer replacements that were done with prependLeft come afterwards Fixes bug where $store inside #await produces invalid jsx
1 parent e818cae commit 7612d6c

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

src/svelte2tsx.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function processSvelteTemplate(str: MagicString): TemplateProcessResult {
8484
//rewrite get
8585
let dollar = str.original.indexOf("$", node.start);
8686
str.overwrite(dollar, dollar+1, "__sveltets_store_get(");
87-
str.appendLeft(node.end, ")")
87+
str.prependLeft(node.end, ")")
8888
}
8989

9090
const resolveStore = (pending: pendingStoreResolution<Node>) => {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<></>;import { readable } from 'svelte/store';
2+
function render() {
3+
4+
5+
const store = readable(Promise.resolve('test'), () => {});
6+
;
7+
<>
8+
9+
{() => {let _$$p = (__sveltets_store_get(store)); <>
10+
<p>loading</p>
11+
</>; _$$p.then((data) => {<>
12+
{data}
13+
</>})}}</>
14+
return { props: {}, slots: {} }}
15+
16+
export default class {
17+
$$prop_def = __sveltets_partial(render().props)
18+
$$slot_def = render().slots
19+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script>
2+
import { readable } from 'svelte/store';
3+
const store = readable(Promise.resolve('test'), () => {});
4+
</script>
5+
6+
{#await $store}
7+
<p>loading</p>
8+
{:then data}
9+
{data}
10+
{/await}

0 commit comments

Comments
 (0)