Skip to content

Parse failure: await isn't allowed in non-async function when using await with @const inside snippet since 5.39.0 #16811

@henrykrinkle01

Description

@henrykrinkle01

Describe the bug

<script>
  async function getOne() {
    return 1;
  }
</script>

{#snippet foo()}
  {@const one = await getOne()}
  {one}
{/snippet}
<svelte:boundary>
  {@render foo()}
  {#snippet pending()}
    <p>Loading...</p>
  {/snippet}
</svelte:boundary>

This works in 5.38.10, doesn't work since the 5.39.0 update

Reproduction

5.38.10:
https://www.sveltelab.dev/dn4b37wr5hze96y

5.39.4:
https://www.sveltelab.dev/74fsjhc81u1vs16

Logs

[vite] (ssr) Error when evaluating SSR module /src/routes/test/+page.svelte: Parse failure: await isn't allowed in non-async function
At file: /src/routes/test/+page.svelte:19:17
  File: /src/routes/test/+page.svelte:19:17
  17 |                                  $.validate_snippet_args($$renderer);
  18 |  
  19 |                                  const one = (await $.save(getOne()))();
     |                   ^
  20 |  
  21 |                                  $$renderer.push(`<!---->${$.escape(one)}`);

System Info

N/A

Severity

blocking an upgrade

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions