diff --git a/lib/nodes.js b/lib/nodes.js index f6d98e9b..aa01afe1 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -1222,7 +1222,7 @@ return "(" + (tests.join(' || ')) + ")"; }; InNode.prototype.compileLoopTest = function(o) { - var _b, _c, body, i, l; + var _b, _c, i, l, prefix; _b = this.array.compileReference(o, { precompile: true }); @@ -1231,12 +1231,8 @@ _c = [o.scope.freeVariable(), o.scope.freeVariable()]; i = _c[0]; l = _c[1]; - body = ("!!(function(){ for (var " + i + "=0, " + l + "=" + (this.arr1) + ".length; " + i + "<" + l + "; " + i + "++) if (" + (this.arr2) + "[" + i + "] === " + this.obj2 + ") return true; })()"); - if (this.obj1 !== this.obj2) { - return "" + this.obj1 + ";\n" + this.tab + body; - } else { - return body; - } + prefix = this.obj1 !== this.obj2 ? this.obj1 + '; ' : ''; + return "!!(function(){ " + (prefix) + "for (var " + i + "=0, " + l + "=" + (this.arr1) + ".length; " + i + "<" + l + "; " + i + "++) if (" + (this.arr2) + "[" + i + "] === " + this.obj2 + ") return true; })()"; }; return InNode; })(); diff --git a/src/nodes.coffee b/src/nodes.coffee index cc579fad..f6850387 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -1046,8 +1046,8 @@ exports.InNode: class InNode extends BaseNode compileLoopTest: (o) -> [@arr1, @arr2]: @array.compileReference o, {precompile: yes} [i, l]: [o.scope.freeVariable(), o.scope.freeVariable()] - body: "!!(function(){ for (var $i=0, $l=${@arr1}.length; $i<$l; $i++) if (${@arr2}[$i] === $@obj2) return true; })()" - if @obj1 isnt @obj2 then "$@obj1;\n$@tab$body" else body + prefix: if @obj1 isnt @obj2 then @obj1 + '; ' else '' + "!!(function(){ ${prefix}for (var $i=0, $l=${@arr1}.length; $i<$l; $i++) if (${@arr2}[$i] === $@obj2) return true; })()" #### TryNode diff --git a/test/test_operations.coffee b/test/test_operations.coffee index 9a6e7466..42427586 100644 --- a/test/test_operations.coffee +++ b/test/test_operations.coffee @@ -45,4 +45,8 @@ ok 'b' not of obj ok 100 in [100, 200, 300] array: [100, 200, 300] ok 100 in array -ok 1 not in array \ No newline at end of file +ok 1 not in array + +list: [1, 2, 7] +result: if list[2] in [7, 10] then 100 else -1 +ok result is 100 \ No newline at end of file