Issue #870 ... placeholders in destructuring assignment.

This commit is contained in:
Jeremy Ashkenas
2011-01-30 20:49:02 -05:00
parent 8b8e8a94ff
commit 4ce374be25
2 changed files with 6 additions and 2 deletions

View File

@@ -1134,6 +1134,9 @@
value = this.value;
objects = this.variable.base.objects;
if (!(olen = objects.length)) {
if (top) {
return false;
}
code = value.compile(o);
if (o.level >= LEVEL_OP) {
return "(" + code + ")";
@@ -1208,7 +1211,7 @@
if (!top) {
assigns.push(vvar);
}
code = assigns.join(', ');
code = (compact(assigns)).join(', ');
if (o.level < LEVEL_LIST) {
return code;
} else {

View File

@@ -908,6 +908,7 @@ exports.Assign = class Assign extends Base
{value} = this
{objects} = @variable.base
unless olen = objects.length
return false if top
code = value.compile o
return if o.level >= LEVEL_OP then "(#{code})" else code
isObject = @variable.isObject()
@@ -968,7 +969,7 @@ exports.Assign = class Assign extends Base
val = new Value new Literal(vvar), [new (if acc then Access else Index) idx]
assigns.push new Assign(obj, val, null, param: @param).compile o, LEVEL_TOP
assigns.push vvar unless top
code = assigns.join ', '
code = (compact assigns).join ', '
if o.level < LEVEL_LIST then code else "(#{code})"
# When compiling a conditional assignment, take care to ensure that the