fix: ensure `$inspect` after top level await doesn't break builds (#17943)

Turn empty statements into empty thunks so that `$.run/$$render.run`
don't throw (as they expect functions as input)

Fixes #17514
pull/17935/merge
Simon H 5 months ago committed by GitHub
parent d4bd6ad8f3
commit b472171de6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,5 @@
---
'svelte': patch
---
fix: ensure `$inspect` after top level await doesn't break builds

@ -95,7 +95,8 @@ export function transform_body(instance_body, runner, transform) {
);
if (expression.type === 'EmptyStatement') {
return null;
// Keep indices stable for async sequencing while avoiding array holes in run([...]).
return b.thunk(b.void0, false);
}
return expression.type === 'AwaitExpression'

@ -0,0 +1,10 @@
import { tick } from 'svelte';
import { test } from '../../test';
export default test({
ssrHtml: 'works',
async test({ assert, target }) {
await tick();
assert.htmlEqual(target.innerHTML, 'works');
}
});

@ -0,0 +1,7 @@
<script lang="ts">
const test = async () => "test";
await test();
$inspect("inspect after await shouldnt break builds");
</script>
works

@ -6,7 +6,7 @@ var root = $.from_html(`<p> </p>`);
export default function Async_top_level_inspect_server($$anchor) {
var data;
var $$promises = $.run([async () => data = await Promise.resolve(42),,]);
var $$promises = $.run([async () => data = await Promise.resolve(42), () => void 0]);
var p = root();
var text = $.child(p, true);

@ -3,7 +3,7 @@ import * as $ from 'svelte/internal/server';
export default function Async_top_level_inspect_server($$renderer) {
var data;
var $$promises = $$renderer.run([async () => data = await Promise.resolve(42),,]);
var $$promises = $$renderer.run([async () => data = await Promise.resolve(42), () => void 0]);
$$renderer.push(`<p>`);
$$renderer.async([$$promises[1]], ($$renderer) => $$renderer.push(() => $.escape(data)));

Loading…
Cancel
Save