fix #4577; renamed destructured parameters with same default value (#4596)

This commit is contained in:
zdenko 2017-07-06 04:04:52 +02:00 committed by Geoffrey Booth
parent ab52fd75c2
commit 35eb58fae8
3 changed files with 12 additions and 2 deletions

View File

@ -3284,9 +3284,11 @@
}
if (obj instanceof Assign) {
if (obj.value instanceof Assign) {
obj = obj.value.variable;
} else {
obj = obj.value;
}
this.eachName(iterator, obj.value.unwrap());
this.eachName(iterator, obj.unwrap());
} else if (obj instanceof Splat) {
node = obj.name.unwrap();
iterator(node.value, node, this);

View File

@ -2494,8 +2494,10 @@ exports.Param = class Param extends Base
if obj instanceof Assign
# ... possibly with a default value
if obj.value instanceof Assign
obj = obj.value.variable
else
obj = obj.value
@eachName iterator, obj.value.unwrap()
@eachName iterator, obj.unwrap()
# * splats within destructured parameters `[xs...]`
else if obj instanceof Splat
node = obj.name.unwrap()

View File

@ -245,6 +245,12 @@ test "rest element destructuring in function definition", ->
deepEqual [1, {b:2}], f()
deepEqual [2, {}], f {a:2}
deepEqual [3, {c:5}], f {a:3, c:5}
f = ({ a: aa = 0, b: bb = 0 }) -> [aa, bb]
deepEqual [0, 0], f {}
deepEqual [0, 42], f {b:42}
deepEqual [42, 0], f {a:42}
deepEqual [42, 43], f {a:42, b:43}
test "#4005: `([a = {}]..., b) ->` weirdness", ->
fn = ([a = {}]..., b) -> [a, b]