fix event handlers that are dynamic via reactive declarations or stores #4394
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #4388. The existing
EventHandler#reassigned
logic was buggy because there would be nonode_for_declaration
for automatically declared reactive assignments (or for store autosubscriptions).I initially changed it to checking
this.component.var_lookup.get(node.name)
, but this didn't work for stores. I added a special case fornode.name[0] === '$'
, and that did work.But then I realized we probably didn't need this logic at all, and that we could just use the
this.expression.dynamic_dependencies().length > 0
check for everything that wasn't a function, regardless of whether it was an identifier. This seemed to work, and didn't break any existing tests, and was simpler as a bonus.