-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
fix: put expressions in effects unless known to be static #15792
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
Conversation
🦋 Changeset detectedLatest commit: 930c532 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
|
What does cyclical bindings mean in this context? |
svelte/packages/svelte/tests/compiler-errors/samples/const-tag-cyclical/main.svelte Lines 1 to 5 in e40e9eb
|
Wouldn't that just be an error, since |
Yeah it's an error, but prior to ffc4769 you wouldn't get the error, you would get a stack overflow |
This ensures that a template expression/attribute is wrapped in an effect unless we can guarantee that it won't update. It means that we don't lose reactivity in edge cases like this:
Draft because
scope.evaluate(...)
can't currently handle cyclical bindings (which is already a bug, this PR just exposes it), but I don't want to fix that until #15781 is merged since conflicts are likely.Closes #15289 (as well as many previous issues that were closed as 'not planned', but probably shouldn't have been), closes #15292
Before submitting the PR, please make sure you do the following
feat:
,fix:
,chore:
, ordocs:
.packages/svelte/src
, add a changeset (npx changeset
).Tests and linting
pnpm test
and lint the project withpnpm lint