Skip to content

Commit 6195638

Browse files
authored
Fix reassignment tracking (#4486)
1 parent 0c75914 commit 6195638

4 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/ast/variables/LocalVariable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export default class LocalVariable extends Variable {
155155
if (path.length === 0) return false;
156156
if (this.isReassigned) return true;
157157
return (this.init &&
158-
!context.accessed.trackEntityAtPathAndGetIfTracked(path, this) &&
158+
!context.assigned.trackEntityAtPathAndGetIfTracked(path, this) &&
159159
this.init.hasEffectsWhenAssignedAtPath(path, context))!;
160160
}
161161

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
description: 'properly track reassignments (#4468)'
3+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { patchEventTarget } from './patchEventTarget.js';
2+
3+
class EventTarget {
4+
addEventListener(callback) {
5+
callback();
6+
}
7+
}
8+
global.window = { EventTarget };
9+
10+
let patchCalled = false;
11+
patchEventTarget(() => (patchCalled = true));
12+
const target = new EventTarget();
13+
target.addEventListener()
14+
15+
assert.ok(patchCalled, 'patch');
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export function patchEventTarget(callback) {
2+
var proto = window.EventTarget.prototype;
3+
var nativeAddEventListener = proto.addEventListener;
4+
5+
proto.addEventListener = function () {
6+
return nativeAddEventListener(callback);
7+
};
8+
9+
return proto;
10+
}

0 commit comments

Comments
 (0)