def union((int1, int2)): if int1.unsigned == int2.unsigned: knowntype = rarithmetic.compute_restype(int1.knowntype, int2.knowntype) else: t1 = int1.knowntype if t1 is bool: t1 = int t2 = int2.knowntype if t2 is bool: t2 = int if t2 is int: if int2.nonneg == False: raise UnionError(int1, int2, "RPython cannot prove that these " + \ "integers are of the same signedness") knowntype = t1 elif t1 is int: if int1.nonneg == False: raise UnionError(int1, int2, "RPython cannot prove that these " + \ "integers are of the same signedness") knowntype = t2 else: raise UnionError(int1, int2) return SomeInteger(nonneg=int1.nonneg and int2.nonneg, knowntype=knowntype)
def union((int1, int2)): if int1.unsigned == int2.unsigned: knowntype = rarithmetic.compute_restype(int1.knowntype, int2.knowntype) else: t1 = int1.knowntype if t1 is bool: t1 = int t2 = int2.knowntype if t2 is bool: t2 = int if t2 is int: if int2.nonneg == False: raise UnionError(int1, int2, "RPython cannot prove that these " + \ "integers are of the same signedness") knowntype = t1 elif t1 is int: if int1.nonneg == False: raise UnionError(int1, int2, "RPython cannot prove that these " + \ "integers are of the same signedness") knowntype = t2 else: raise UnionError(int1, int2) return SomeInteger(nonneg=int1.nonneg and int2.nonneg, knowntype=knowntype)
def union((int1, int2)): if int1.unsigned == int2.unsigned: knowntype = rarithmetic.compute_restype(int1.knowntype, int2.knowntype) else: t1 = int1.knowntype if t1 is bool: t1 = int t2 = int2.knowntype if t2 is bool: t2 = int if t2 is int: if int2.nonneg == False: raise UnionError, "Merging %s and a possibly negative int is not allowed" % t1 knowntype = t1 elif t1 is int: if int1.nonneg == False: raise UnionError, "Merging %s and a possibly negative int is not allowed" % t2 knowntype = t2 else: raise UnionError, "Merging these types (%s, %s) is not supported" % (t1, t2) return SomeInteger(nonneg=int1.nonneg and int2.nonneg, knowntype=knowntype)
def and_((int1, int2)): knowntype = rarithmetic.compute_restype(int1.knowntype, int2.knowntype) return SomeInteger(nonneg=int1.nonneg or int2.nonneg, knowntype=knowntype)
def sub((int1, int2)): knowntype = rarithmetic.compute_restype(int1.knowntype, int2.knowntype) return SomeInteger(knowntype=knowntype)
def and_((int1, int2)): knowntype = rarithmetic.compute_restype(int1.knowntype, int2.knowntype) return SomeInteger(nonneg=int1.nonneg or int2.nonneg, knowntype=knowntype)
def sub((int1, int2)): knowntype = rarithmetic.compute_restype(int1.knowntype, int2.knowntype) return SomeInteger(knowntype=knowntype)