fixing an improper-js-output bug when using a loop-compiled inarray clause as part of a larger expression
This commit is contained in:
parent
24676eea71
commit
af3b356d70
10
lib/nodes.js
10
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;
|
||||
})();
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
ok 1 not in array
|
||||
|
||||
list: [1, 2, 7]
|
||||
result: if list[2] in [7, 10] then 100 else -1
|
||||
ok result is 100
|
Loading…
Reference in New Issue