74 lines
1.3 KiB
Python
74 lines
1.3 KiB
Python
|
# Test inplace special methods enabled by MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS
|
||
|
|
||
|
|
||
|
class A:
|
||
|
def __imul__(self, other):
|
||
|
print("__imul__")
|
||
|
return self
|
||
|
|
||
|
def __imatmul__(self, other):
|
||
|
print("__imatmul__")
|
||
|
return self
|
||
|
|
||
|
def __ifloordiv__(self, other):
|
||
|
print("__ifloordiv__")
|
||
|
return self
|
||
|
|
||
|
def __itruediv__(self, other):
|
||
|
print("__itruediv__")
|
||
|
return self
|
||
|
|
||
|
def __imod__(self, other):
|
||
|
print("__imod__")
|
||
|
return self
|
||
|
|
||
|
def __ipow__(self, other):
|
||
|
print("__ipow__")
|
||
|
return self
|
||
|
|
||
|
def __ior__(self, other):
|
||
|
print("__ior__")
|
||
|
return self
|
||
|
|
||
|
def __ixor__(self, other):
|
||
|
print("__ixor__")
|
||
|
return self
|
||
|
|
||
|
def __iand__(self, other):
|
||
|
print("__iand__")
|
||
|
return self
|
||
|
|
||
|
def __ilshift__(self, other):
|
||
|
print("__ilshift__")
|
||
|
return self
|
||
|
|
||
|
def __irshift__(self, other):
|
||
|
print("__irshift__")
|
||
|
return self
|
||
|
|
||
|
|
||
|
a = A()
|
||
|
|
||
|
try:
|
||
|
a *= None
|
||
|
except TypeError:
|
||
|
print("SKIP")
|
||
|
raise SystemExit
|
||
|
|
||
|
a @= None
|
||
|
a //= None
|
||
|
a /= None
|
||
|
a %= None
|
||
|
a **= None
|
||
|
a |= None
|
||
|
a ^= None
|
||
|
a &= None
|
||
|
a <<= None
|
||
|
a >>= None
|
||
|
|
||
|
# Normal operator should not fallback to inplace operator
|
||
|
try:
|
||
|
a * None
|
||
|
except TypeError:
|
||
|
print("TypeError")
|