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); 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);
} }