Skip to content

fix: support using keyword #16190

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from
Closed

fix: support using keyword #16190

wants to merge 3 commits into from

Conversation

Rich-Harris
Copy link
Member

@Rich-Harris Rich-Harris commented Jun 17, 2025

Upgrades to the latest version of Acorn, and replaces ecmaVersion: 16 with 'latest' which allows Svelte code to use the using keyword (which is now stage 4, i.e. part of the language).

I didn't think it worthwhile to add a test (would be like having a test for var declarations or whatever) but you can easily see it working in the playground once it deploys.

One thing we could conceivably do is transform components with top-level using such that disposals don't occur until the component is removed. This would mean wrapping everything in an async function that ends with something like this:

return new Promise((fulfil) => {
  $effect(() => fulfil);
});

Personally I'm not sold on the idea — it's a little magical, and would prevent the component from exporting values — but I raise it as a possibility for discussion. If we thought we might want to add that capability in future we could always prevent the usage of top-level using, though that itself might be annoying.

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.
  • If this PR changes code within packages/svelte/src, add a changeset (npx changeset).

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

Copy link

changeset-bot bot commented Jun 17, 2025

🦋 Changeset detected

Latest commit: 0fd3921

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
svelte Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@svelte-docs-bot
Copy link

Copy link
Contributor

Playground

pnpm add https://pkg.pr.new/svelte@16190

@Rich-Harris
Copy link
Member Author

Realised that we don't need to do the whole async dance to get top-level using to work as expected in components — opened #16192 as an alternative

@Rich-Harris
Copy link
Member Author

gonna close this in favour of #16192. the people have spoken

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant