bug fixes from Simon Jenson for bitwise operations
bug fixes to handling of for(.. in ..) {...} loops git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3045 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
parent
9160a2f565
commit
9200772866
|
@ -83,12 +83,10 @@ public class RhinoToAstTranslator {
|
||||||
|
|
||||||
void setCatchVar(String name);
|
void setCatchVar(String name);
|
||||||
|
|
||||||
String getForInVar(String loopVarName, Node initExpr);
|
String getForInVar(Node initExpr);
|
||||||
|
|
||||||
String getForInInitVar();
|
String getForInInitVar();
|
||||||
|
|
||||||
String getForInLoopVar();
|
|
||||||
|
|
||||||
void addInitializer(CAstNode n);
|
void addInitializer(CAstNode n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +141,7 @@ public class RhinoToAstTranslator {
|
||||||
public void setCatchVar(String name) {
|
public void setCatchVar(String name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getForInVar(String loopVarName, Node initExpr) {
|
public String getForInVar(Node initExpr) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,10 +149,6 @@ public class RhinoToAstTranslator {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getForInLoopVar() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addInitializer(CAstNode n) {
|
public void addInitializer(CAstNode n) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -218,18 +212,14 @@ public class RhinoToAstTranslator {
|
||||||
parent.setCatchVar(name);
|
parent.setCatchVar(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getForInVar(String loopVarName, Node initExpr) {
|
public String getForInVar(Node initExpr) {
|
||||||
return parent.getForInVar(loopVarName, initExpr);
|
return parent.getForInVar(initExpr);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getForInInitVar() {
|
public String getForInInitVar() {
|
||||||
return parent.getForInInitVar();
|
return parent.getForInInitVar();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getForInLoopVar() {
|
|
||||||
return parent.getForInLoopVar();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addInitializer(CAstNode n) {
|
public void addInitializer(CAstNode n) {
|
||||||
parent.addInitializer(n);
|
parent.addInitializer(n);
|
||||||
}
|
}
|
||||||
|
@ -388,8 +378,6 @@ public class RhinoToAstTranslator {
|
||||||
private static class LoopContext extends DelegatingContext {
|
private static class LoopContext extends DelegatingContext {
|
||||||
private static int counter = 0;
|
private static int counter = 0;
|
||||||
|
|
||||||
private String loopVarName;
|
|
||||||
|
|
||||||
private String forInVar = null;
|
private String forInVar = null;
|
||||||
|
|
||||||
private Node forInInitExpr = null;
|
private Node forInInitExpr = null;
|
||||||
|
@ -398,8 +386,7 @@ public class RhinoToAstTranslator {
|
||||||
super(parent);
|
super(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getForInVar(String loopVarName, Node initExpr) {
|
public String getForInVar(Node initExpr) {
|
||||||
this.loopVarName = loopVarName;
|
|
||||||
this.forInVar = "_forin_tmp" + counter++;
|
this.forInVar = "_forin_tmp" + counter++;
|
||||||
this.forInInitExpr = initExpr;
|
this.forInInitExpr = initExpr;
|
||||||
return forInVar;
|
return forInVar;
|
||||||
|
@ -410,11 +397,6 @@ public class RhinoToAstTranslator {
|
||||||
return forInVar;
|
return forInVar;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getForInLoopVar() {
|
|
||||||
Assertions._assert(loopVarName != null);
|
|
||||||
return loopVarName;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CAstNode translateOpcode(int nodeType) {
|
private CAstNode translateOpcode(int nodeType) {
|
||||||
|
@ -437,6 +419,10 @@ public class RhinoToAstTranslator {
|
||||||
return CAstOperator.OP_URSH;
|
return CAstOperator.OP_URSH;
|
||||||
case Token.BITAND:
|
case Token.BITAND:
|
||||||
return CAstOperator.OP_BIT_AND;
|
return CAstOperator.OP_BIT_AND;
|
||||||
|
case Token.BITOR:
|
||||||
|
return CAstOperator.OP_BIT_OR;
|
||||||
|
case Token.BITXOR:
|
||||||
|
return CAstOperator.OP_BIT_XOR;
|
||||||
|
|
||||||
case Token.EQ:
|
case Token.EQ:
|
||||||
return CAstOperator.OP_EQ;
|
return CAstOperator.OP_EQ;
|
||||||
|
@ -972,7 +958,8 @@ public class RhinoToAstTranslator {
|
||||||
return Ast.makeConstant(true);
|
return Ast.makeConstant(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
case Token.NULL: {
|
case Token.NULL:
|
||||||
|
case Token.VOID: {
|
||||||
return Ast.makeConstant(null);
|
return Ast.makeConstant(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -985,6 +972,8 @@ public class RhinoToAstTranslator {
|
||||||
case Token.SUB:
|
case Token.SUB:
|
||||||
case Token.URSH:
|
case Token.URSH:
|
||||||
case Token.BITAND:
|
case Token.BITAND:
|
||||||
|
case Token.BITOR:
|
||||||
|
case Token.BITXOR:
|
||||||
case Token.EQ:
|
case Token.EQ:
|
||||||
case Token.SHEQ:
|
case Token.SHEQ:
|
||||||
case Token.GE:
|
case Token.GE:
|
||||||
|
@ -1021,10 +1010,6 @@ public class RhinoToAstTranslator {
|
||||||
.getFirstChild(), child));
|
.getFirstChild(), child));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (n.getNext().getType() == Token.ENUM_INIT_KEYS) {
|
|
||||||
context.getForInVar(nm.getString(), n.getNext().getFirstChild());
|
|
||||||
}
|
|
||||||
|
|
||||||
return Ast.makeNode(CAstNode.EMPTY);
|
return Ast.makeNode(CAstNode.EMPTY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1047,6 +1032,7 @@ public class RhinoToAstTranslator {
|
||||||
}
|
}
|
||||||
|
|
||||||
case Token.ENUM_INIT_KEYS: {
|
case Token.ENUM_INIT_KEYS: {
|
||||||
|
context.getForInVar(n.getFirstChild());
|
||||||
return Ast.makeNode(CAstNode.EMPTY);
|
return Ast.makeNode(CAstNode.EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue