creeper-adventure/.venv/lib/python3.8/site-packages/mypyc/test-data/irbuild-isinstance.test
2022-03-31 20:20:07 -05:00

69 lines
1.6 KiB
Text

[case testIsinstanceInt]
def is_int(value: object) -> bool:
return isinstance(value, int)
[out]
def is_int(value):
value, r0 :: object
r1 :: int32
r2 :: bit
r3 :: bool
L0:
r0 = load_address PyLong_Type
r1 = PyObject_IsInstance(value, r0)
r2 = r1 >= 0 :: signed
r3 = truncate r1: int32 to builtins.bool
return r3
[case testIsinstanceNotBool1]
def is_not_bool(value: object) -> bool:
return not isinstance(value, bool)
[out]
def is_not_bool(value):
value, r0 :: object
r1 :: int32
r2 :: bit
r3, r4 :: bool
L0:
r0 = load_address PyBool_Type
r1 = PyObject_IsInstance(value, r0)
r2 = r1 >= 0 :: signed
r3 = truncate r1: int32 to builtins.bool
r4 = r3 ^ 1
return r4
[case testIsinstanceIntAndNotBool]
# This test is to ensure that 'value' doesn't get coerced to int when we are
# checking if it's a bool, since an int can never be an instance of a bool
def is_not_bool_and_is_int(value: object) -> bool:
return isinstance(value, int) and not isinstance(value, bool)
[out]
def is_not_bool_and_is_int(value):
value, r0 :: object
r1 :: int32
r2 :: bit
r3, r4 :: bool
r5 :: object
r6 :: int32
r7 :: bit
r8, r9 :: bool
L0:
r0 = load_address PyLong_Type
r1 = PyObject_IsInstance(value, r0)
r2 = r1 >= 0 :: signed
r3 = truncate r1: int32 to builtins.bool
if r3 goto L2 else goto L1 :: bool
L1:
r4 = r3
goto L3
L2:
r5 = load_address PyBool_Type
r6 = PyObject_IsInstance(value, r5)
r7 = r6 >= 0 :: signed
r8 = truncate r6: int32 to builtins.bool
r9 = r8 ^ 1
r4 = r9
L3:
return r4