core: fix ArgType.equals
This commit is contained in:
@@ -173,7 +173,12 @@ public class RegionGen extends InsnGen {
|
||||
if (sb.length() != 0) {
|
||||
sb.append(mode);
|
||||
}
|
||||
sb.append('(').append(makeCondition(arg)).append(')');
|
||||
String s = makeCondition(arg);
|
||||
if (arg.isCompare()) {
|
||||
sb.append(s);
|
||||
} else {
|
||||
sb.append('(').append(s).append(')');
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
default:
|
||||
@@ -209,7 +214,7 @@ public class RegionGen extends InsnGen {
|
||||
return false;
|
||||
}
|
||||
InsnNode insn = ((InsnWrapArg) arg).getWrapInsn();
|
||||
if(insn.getType() == InsnType.ARITH) {
|
||||
if (insn.getType() == InsnType.ARITH) {
|
||||
ArithNode arith = ((ArithNode) insn);
|
||||
switch (arith.getOp()) {
|
||||
case ADD:
|
||||
|
||||
@@ -46,10 +46,6 @@ public abstract class ArgType {
|
||||
|
||||
private static ClspGraph clsp;
|
||||
|
||||
public static ClspGraph getClsp() {
|
||||
return clsp;
|
||||
}
|
||||
|
||||
public static void setClsp(ClspGraph clsp) {
|
||||
ArgType.clsp = clsp;
|
||||
}
|
||||
@@ -107,6 +103,11 @@ public abstract class ArgType {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean internalEquals(Object obj) {
|
||||
return type == ((PrimitiveArg) obj).type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return type.toString();
|
||||
@@ -118,7 +119,7 @@ public abstract class ArgType {
|
||||
|
||||
public ObjectArg(String obj) {
|
||||
this.object = Utils.cleanObjectName(obj);
|
||||
this.hash = obj.hashCode();
|
||||
this.hash = object.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -136,6 +137,11 @@ public abstract class ArgType {
|
||||
return PrimitiveType.OBJECT;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean internalEquals(Object obj) {
|
||||
return object.equals(((ObjectArg) obj).object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return object;
|
||||
@@ -167,6 +173,12 @@ public abstract class ArgType {
|
||||
return generics;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean internalEquals(Object obj) {
|
||||
return super.internalEquals(obj)
|
||||
&& Arrays.equals(generics, ((GenericObjectArg) obj).generics);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return super.toString() + "<" + Utils.arrayToString(generics) + ">";
|
||||
@@ -206,6 +218,11 @@ public abstract class ArgType {
|
||||
return arrayElement.getArrayRootElement();
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean internalEquals(Object obj) {
|
||||
return arrayElement.equals(((ArrayArg) obj).arrayElement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return arrayElement.toString() + "[]";
|
||||
@@ -247,6 +264,11 @@ public abstract class ArgType {
|
||||
return primitive(f);
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean internalEquals(Object obj) {
|
||||
return Arrays.equals(possibleTypes, ((UnknownArg) obj).possibleTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (possibleTypes.length == PrimitiveType.values().length)
|
||||
@@ -591,13 +613,14 @@ public abstract class ArgType {
|
||||
return hash;
|
||||
}
|
||||
|
||||
abstract boolean internalEquals(Object obj);
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) return true;
|
||||
if (obj == null) return false;
|
||||
if (hash != obj.hashCode()) return false;
|
||||
if (getClass() != obj.getClass()) return false;
|
||||
// TODO: don't use toString
|
||||
return toString().equals(obj.toString());
|
||||
return internalEquals(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ public final class IfCondition {
|
||||
case AND:
|
||||
return "&& " + args;
|
||||
case OR:
|
||||
return "||" + args;
|
||||
return "|| " + args;
|
||||
}
|
||||
return "??";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user