Merge pull request #2213 from geraldalewis/2211-destructed-splats
Issue #2211 -- splats in destructured parameters
This commit is contained in:
commit
0fada5109a
|
@ -1868,6 +1868,8 @@
|
|||
obj = _ref2[_i];
|
||||
if (obj instanceof Assign) {
|
||||
names.push(obj.variable.base.value);
|
||||
} else if (obj instanceof Splat) {
|
||||
names.push(obj.name.unwrap().value);
|
||||
} else if (obj.isArray() || obj.isObject()) {
|
||||
names.push.apply(names, this.names(obj.base));
|
||||
} else if (obj["this"]) {
|
||||
|
|
|
@ -1279,6 +1279,9 @@ exports.Param = class Param extends Base
|
|||
# * assignments within destructured parameters `{foo:bar}`
|
||||
if obj instanceof Assign
|
||||
names.push obj.variable.base.value
|
||||
# * splats within destructured parameters `[xs...]`
|
||||
else if obj instanceof Splat
|
||||
names.push obj.name.unwrap().value
|
||||
# * destructured parameters within destructured parameters `[{a}]`
|
||||
else if obj.isArray() or obj.isObject()
|
||||
names.push @names(obj.base)...
|
||||
|
|
|
@ -350,3 +350,10 @@ test "#1838: Regression with variable assignment", ->
|
|||
'dave'
|
||||
|
||||
eq name, 'dave'
|
||||
|
||||
test '#2211: splats in destructured parameters', ->
|
||||
doesNotThrow -> CoffeeScript.compile '([a...]) ->'
|
||||
doesNotThrow -> CoffeeScript.compile '([a...],b) ->'
|
||||
doesNotThrow -> CoffeeScript.compile '([a...],[b...]) ->'
|
||||
throws -> CoffeeScript.compile '([a...,[a...]]) ->'
|
||||
doesNotThrow -> CoffeeScript.compile '([a...,[b...]]) ->'
|
||||
|
|
Loading…
Reference in New Issue