don't move expressions containing the binary in operator into the for initializer
(opera can't parse it) close #25
This commit is contained in:
@@ -427,12 +427,23 @@ merge(Compressor.prototype, {
|
||||
var ret = [], prev = null;
|
||||
statements.forEach(function(stat){
|
||||
if (prev) {
|
||||
if (stat instanceof AST_For && stat.init && !(stat.init instanceof AST_Definitions)) {
|
||||
stat.init = cons_seq(stat.init);
|
||||
}
|
||||
else if (stat instanceof AST_For && !stat.init) {
|
||||
stat.init = prev.body;
|
||||
ret.pop();
|
||||
if (stat instanceof AST_For) {
|
||||
var opera = {};
|
||||
try {
|
||||
prev.body.walk(new TreeWalker(function(node){
|
||||
if (node instanceof AST_Binary && node.operator == "in")
|
||||
throw opera;
|
||||
}));
|
||||
if (stat.init && !(stat.init instanceof AST_Definitions)) {
|
||||
stat.init = cons_seq(stat.init);
|
||||
}
|
||||
else if (!stat.init) {
|
||||
stat.init = prev.body;
|
||||
ret.pop();
|
||||
}
|
||||
} catch(ex) {
|
||||
if (ex !== opera) throw ex;
|
||||
}
|
||||
}
|
||||
else if (stat instanceof AST_If) {
|
||||
stat.condition = cons_seq(stat.condition);
|
||||
|
||||
Reference in New Issue
Block a user