Skip to content

Commit 6e2b816

Browse files
authored
fix extracting names from ThisExpression (#5036)
1 parent 1644f20 commit 6e2b816

File tree

4 files changed

+18
-5
lines changed

4 files changed

+18
-5
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Svelte changelog
22

3+
## Unreleased
4+
5+
* Fix handling of `this` in inline function expressions in the template ([#5033](https://github.com/sveltejs/svelte/issues/5033))
6+
37
## 3.23.2
48

59
* Fix `bind:group` inside `{#each}` ([#3243](https://github.com/sveltejs/svelte/issues/3243))

src/compiler/compile/nodes/shared/Expression.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,9 @@ export default class Expression {
120120
if (function_expression) {
121121
if (node.type === 'AssignmentExpression') {
122122
deep = node.left.type === 'MemberExpression';
123-
names = deep
124-
? [get_object(node.left).name]
125-
: extract_names(node.left);
123+
names = extract_names(deep ? get_object(node.left) : node.left);
126124
} else if (node.type === 'UpdateExpression') {
127-
const { name } = get_object(node.argument);
128-
names = [name];
125+
names = extract_names(get_object(node.argument));
129126
}
130127
}
131128

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export default {
2+
async test({ assert, component, target, window, raf }) {
3+
const [_, btn] = target.querySelectorAll("button");
4+
const clickEvent = new window.MouseEvent("click");
5+
6+
await btn.dispatchEvent(clickEvent);
7+
8+
assert.equal(btn.x, 1);
9+
},
10+
};
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<button on:click="{() => { this.x = 1; }}" />
2+
<button on:click="{function () { this.x = 1; }}" />

0 commit comments

Comments
 (0)