1
0
Fork 0
mirror of https://github.com/jashkenas/coffeescript.git synced 2022-11-09 12:23:24 -05:00

Throwing an error when pattern matching has a non-identifier on the left-hand side.

This commit is contained in:
Jeremy Ashkenas 2010-04-25 11:22:15 -04:00
parent 08c877ec7b
commit ca4ea7649d
2 changed files with 5 additions and 0 deletions

View file

@ -943,6 +943,9 @@
obj = _c[0];
idx = _c[1];
}
if (!(obj instanceof ValueNode || obj instanceof SplatNode)) {
throw new Error('pattern matching must use only identifiers on the left-hand side.');
}
is_string = idx.value && idx.value.match(IS_STRING);
access_class = is_string || this.variable.is_array() ? IndexNode : AccessorNode;
if (obj instanceof SplatNode && !splat) {

View file

@ -692,6 +692,8 @@ exports.AssignNode: class AssignNode extends BaseNode
for obj, i in @variable.base.objects
idx: i
[obj, idx]: [obj.value, obj.variable.base] if @variable.is_object()
if not (obj instanceof ValueNode or obj instanceof SplatNode)
throw new Error 'pattern matching must use only identifiers on the left-hand side.'
is_string: idx.value and idx.value.match IS_STRING
access_class: if is_string or @variable.is_array() then IndexNode else AccessorNode
if obj instanceof SplatNode and not splat