Skip to content

Commit

Permalink
fix: function parameter reassigned update (#5482)
Browse files Browse the repository at this point in the history
fix: reassigned
  • Loading branch information
liuly0322 committed Apr 22, 2024
1 parent a80117f commit 4bbe1a3
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
6 changes: 3 additions & 3 deletions src/ast/variables/ParameterVariable.ts
Expand Up @@ -161,13 +161,13 @@ export default class ParameterVariable extends LocalVariable {
}

deoptimizePath(path: ObjectPath): void {
if (this.deoptimizedFields.has(UnknownKey)) {
return;
}
if (path.length === 0) {
this.markReassigned();
return;
}
if (this.deoptimizedFields.has(UnknownKey)) {
return;
}
const key = path[0];
if (this.deoptimizedFields.has(key)) {
return;
Expand Down
22 changes: 18 additions & 4 deletions test/function/samples/reassigned-parameter/main.js
@@ -1,7 +1,21 @@
function f(a) {
assert.equal(a ? 'OK' : 'FAIL', 'OK');
a = false;
assert.equal(a ? 'FAIL' : 'OK', 'OK');
assert.equal(a ? 'OK' : 'FAIL', 'OK');
a = false;
assert.equal(a ? 'FAIL' : 'OK', 'OK');
}

f(true)
f(true);

function g(array) {
if (array === null) {
array = [];
}

if (array) {
return 'OK';
}
return array;
}

assert.equal(g(null), 'OK');

0 comments on commit 4bbe1a3

Please sign in to comment.