diff --git a/ExprPrimaryNodes.py b/ExprPrimaryNodes.py index 1d948a4b60aef56693a681b698fc91204ae5d62d..2fba479b1f0aaef3a1805c31a922fed38f1903e9 100644 --- a/ExprPrimaryNodes.py +++ b/ExprPrimaryNodes.py @@ -375,13 +375,9 @@ class ExprNode(ASTNode): if self.op in ['&&', '&', '|', '||', '!=', '==']: self.myType = TypeStruct("boolean", None) return - # Other Comparisons: - if self.op == 'instanceof': - self.myType = TypeStruct("boolean", None) - return - + if self.left.myType.assignable(self.right.myType) or self.right.myType.assignable(self.left.myType): - if self.op == '==' or self.op == '!=': + if self.op == '==' or self.op == '!=' or self.op == 'instanceof': self.myType = TypeStruct("boolean", None) return diff --git a/TheTypeNode.py b/TheTypeNode.py index b75db2a86b18192e82e57e561001adb354f6e054..68b6988a09a97e179520f4eea7482e301f40b070 100644 --- a/TheTypeNode.py +++ b/TheTypeNode.py @@ -70,6 +70,9 @@ class TypeStruct(): return True return False + if right.isArray and self.name in ['java.lang.Object', 'java.lang.Cloneable', 'java.io.Serializable']: + return True + return False # helper: get list of all super class/interface of a ClassInterNode