blob: 407ab8bcda935ae0d4259b1a6e0eeaf97bc04434 [file] [log] [blame] [edit]
[case testBoolToAndFromInt]
from mypy_extensions import i64
def bool_to_int(b: bool) -> int:
return b
def int_to_bool(n: int) -> bool:
return bool(n)
def bool_to_i64(b: bool) -> i64:
return b
def i64_to_bool(n: i64) -> bool:
return bool(n)
def bit_to_int(n1: i64, n2: i64) -> int:
return bool(n1 == n2)
def bit_to_i64(n1: i64, n2: i64) -> i64:
return bool(n1 == n2)
[out]
def bool_to_int(b):
b, r0 :: bool
r1 :: int
L0:
r0 = b << 1
r1 = extend r0: builtins.bool to builtins.int
return r1
def int_to_bool(n):
n :: int
r0 :: bit
L0:
r0 = n != 0
return r0
def bool_to_i64(b):
b :: bool
r0 :: int64
L0:
r0 = extend b: builtins.bool to int64
return r0
def i64_to_bool(n):
n :: int64
r0 :: bit
L0:
r0 = n != 0
return r0
def bit_to_int(n1, n2):
n1, n2 :: int64
r0 :: bit
r1 :: bool
r2 :: int
L0:
r0 = n1 == n2
r1 = r0 << 1
r2 = extend r1: builtins.bool to builtins.int
return r2
def bit_to_i64(n1, n2):
n1, n2 :: int64
r0 :: bit
r1 :: int64
L0:
r0 = n1 == n2
r1 = extend r0: bit to int64
return r1
[case testConversionToBool]
from typing import List, Optional
class C: pass
class D:
def __bool__(self) -> bool:
return True
def list_to_bool(l: List[str]) -> bool:
return bool(l)
def always_truthy_instance_to_bool(o: C) -> bool:
return bool(o)
def instance_to_bool(o: D) -> bool:
return bool(o)
def optional_truthy_to_bool(o: Optional[C]) -> bool:
return bool(o)
def optional_maybe_falsey_to_bool(o: Optional[D]) -> bool:
return bool(o)
[out]
def D.__bool__(self):
self :: __main__.D
L0:
return 1
def list_to_bool(l):
l :: list
r0 :: ptr
r1 :: native_int
r2 :: short_int
r3 :: bit
L0:
r0 = get_element_ptr l ob_size :: PyVarObject
r1 = load_mem r0 :: native_int*
keep_alive l
r2 = r1 << 1
r3 = r2 != 0
return r3
def always_truthy_instance_to_bool(o):
o :: __main__.C
r0 :: int32
r1 :: bit
r2 :: bool
L0:
r0 = PyObject_IsTrue(o)
r1 = r0 >= 0 :: signed
r2 = truncate r0: int32 to builtins.bool
return r2
def instance_to_bool(o):
o :: __main__.D
r0 :: bool
L0:
r0 = o.__bool__()
return r0
def optional_truthy_to_bool(o):
o :: union[__main__.C, None]
r0 :: object
r1 :: bit
L0:
r0 = load_address _Py_NoneStruct
r1 = o != r0
return r1
def optional_maybe_falsey_to_bool(o):
o :: union[__main__.D, None]
r0 :: object
r1 :: bit
r2 :: __main__.D
r3 :: bool
r4 :: bit
L0:
r0 = load_address _Py_NoneStruct
r1 = o != r0
if r1 goto L1 else goto L2 :: bool
L1:
r2 = cast(__main__.D, o)
r3 = r2.__bool__()
r4 = r3
goto L3
L2:
r4 = 0
L3:
return r4