Skip to content

Commit

Permalink
Track reassignments of pattern defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Jun 20, 2018
1 parent 6bedd8c commit 7911882
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/ast/nodes/AssignmentPattern.ts
@@ -1,5 +1,5 @@
import { ExecutionPathOptions } from '../ExecutionPathOptions';
import { EMPTY_PATH, ObjectPath } from '../values';
import { EMPTY_PATH, ObjectPath, UNKNOWN_PATH } from '../values';
import * as NodeType from './NodeType';
import { ExpressionEntity } from './shared/Expression';
import { ExpressionNode, NodeBase } from './shared/Node';
Expand All @@ -13,6 +13,7 @@ export default class AssignmentPattern extends NodeBase implements PatternNode {
bind() {
super.bind();
this.left.reassignPath(EMPTY_PATH);
this.right.reassignPath(UNKNOWN_PATH);
}

declare(kind: string, init: ExpressionEntity) {
Expand Down
3 changes: 3 additions & 0 deletions test/function/samples/reassign-pattern-defaults/_config.js
@@ -0,0 +1,3 @@
module.exports = {
description: 'makes sure reassignments of pattern defaults are tracked'
};
6 changes: 6 additions & 0 deletions test/function/samples/reassign-pattern-defaults/main.js
@@ -0,0 +1,6 @@
var foo = {x: true};
var {bar = foo} = {};

bar.x = false;

if (foo.x) assert.fail('foo was not reassigned');

0 comments on commit 7911882

Please sign in to comment.