mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-05-03 03:00:14 -04:00
Fix error that prevented object literals from being properly returned from comprehensions.
This commit is contained in:
@@ -176,7 +176,7 @@
|
||||
return this.scanTokens(function(token, i, tokens) {
|
||||
var callObject, current, next, prev, tag, _ref, _ref2, _ref3;
|
||||
tag = token[0];
|
||||
if (tag === 'CLASS' || tag === 'IF') noCall = true;
|
||||
if (tag === 'CLASS' || tag === 'IF' || tag === 'FOR') noCall = true;
|
||||
_ref = tokens.slice(i - 1, (i + 1) + 1 || 9e9), prev = _ref[0], current = _ref[1], next = _ref[2];
|
||||
callObject = !noCall && tag === 'INDENT' && next && next.generated && next[0] === '{' && prev && (_ref2 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref2) >= 0);
|
||||
seenSingle = false;
|
||||
|
||||
@@ -167,7 +167,7 @@ class exports.Rewriter
|
||||
|
||||
@scanTokens (token, i, tokens) ->
|
||||
tag = token[0]
|
||||
noCall = yes if tag in ['CLASS', 'IF']
|
||||
noCall = yes if tag in ['CLASS', 'IF', 'FOR']
|
||||
[prev, current, next] = tokens[i - 1 .. i + 1]
|
||||
callObject = not noCall and tag is 'INDENT' and
|
||||
next and next.generated and next[0] is '{' and
|
||||
|
||||
@@ -269,4 +269,10 @@ test "#1961, #1974, regression with compound assigning to an implicit object", -
|
||||
four: 4
|
||||
|
||||
eq obj.four, 4
|
||||
|
||||
|
||||
test "#2007: Return object literal from comprehension", ->
|
||||
y = for x in [1, 2]
|
||||
foo: "foo"
|
||||
bar: "bar"
|
||||
|
||||
eq y[0].foo, "foo"
|
||||
|
||||
Reference in New Issue
Block a user