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:
dolby-oss 2008-10-03 20:08:26 +00:00
parent 9160a2f565
commit 9200772866
1 changed files with 14 additions and 28 deletions

View File

@ -83,12 +83,10 @@ public class RhinoToAstTranslator {
void setCatchVar(String name);
String getForInVar(String loopVarName, Node initExpr);
String getForInVar(Node initExpr);
String getForInInitVar();
String getForInLoopVar();
void addInitializer(CAstNode n);
}
@ -143,7 +141,7 @@ public class RhinoToAstTranslator {
public void setCatchVar(String name) {
}
public String getForInVar(String loopVarName, Node initExpr) {
public String getForInVar(Node initExpr) {
return null;
}
@ -151,10 +149,6 @@ public class RhinoToAstTranslator {
return null;
}
public String getForInLoopVar() {
return null;
}
public void addInitializer(CAstNode n) {
}
}
@ -218,18 +212,14 @@ public class RhinoToAstTranslator {
parent.setCatchVar(name);
}
public String getForInVar(String loopVarName, Node initExpr) {
return parent.getForInVar(loopVarName, initExpr);
public String getForInVar(Node initExpr) {
return parent.getForInVar(initExpr);
}
public String getForInInitVar() {
return parent.getForInInitVar();
}
public String getForInLoopVar() {
return parent.getForInLoopVar();
}
public void addInitializer(CAstNode n) {
parent.addInitializer(n);
}
@ -388,8 +378,6 @@ public class RhinoToAstTranslator {
private static class LoopContext extends DelegatingContext {
private static int counter = 0;
private String loopVarName;
private String forInVar = null;
private Node forInInitExpr = null;
@ -398,8 +386,7 @@ public class RhinoToAstTranslator {
super(parent);
}
public String getForInVar(String loopVarName, Node initExpr) {
this.loopVarName = loopVarName;
public String getForInVar(Node initExpr) {
this.forInVar = "_forin_tmp" + counter++;
this.forInInitExpr = initExpr;
return forInVar;
@ -410,11 +397,6 @@ public class RhinoToAstTranslator {
return forInVar;
}
public String getForInLoopVar() {
Assertions._assert(loopVarName != null);
return loopVarName;
}
}
private CAstNode translateOpcode(int nodeType) {
@ -437,6 +419,10 @@ public class RhinoToAstTranslator {
return CAstOperator.OP_URSH;
case Token.BITAND:
return CAstOperator.OP_BIT_AND;
case Token.BITOR:
return CAstOperator.OP_BIT_OR;
case Token.BITXOR:
return CAstOperator.OP_BIT_XOR;
case Token.EQ:
return CAstOperator.OP_EQ;
@ -972,7 +958,8 @@ public class RhinoToAstTranslator {
return Ast.makeConstant(true);
}
case Token.NULL: {
case Token.NULL:
case Token.VOID: {
return Ast.makeConstant(null);
}
@ -985,6 +972,8 @@ public class RhinoToAstTranslator {
case Token.SUB:
case Token.URSH:
case Token.BITAND:
case Token.BITOR:
case Token.BITXOR:
case Token.EQ:
case Token.SHEQ:
case Token.GE:
@ -1021,10 +1010,6 @@ public class RhinoToAstTranslator {
.getFirstChild(), child));
} else {
if (n.getNext().getType() == Token.ENUM_INIT_KEYS) {
context.getForInVar(nm.getString(), n.getNext().getFirstChild());
}
return Ast.makeNode(CAstNode.EMPTY);
}
}
@ -1047,6 +1032,7 @@ public class RhinoToAstTranslator {
}
case Token.ENUM_INIT_KEYS: {
context.getForInVar(n.getFirstChild());
return Ast.makeNode(CAstNode.EMPTY);
}