mirror of
https://github.com/micropython/micropython.git
synced 2026-01-07 12:40:15 +01:00
py/runtime: If inplace binop fails then try corresponding normal binop.
The code that handles inplace-operator to normal-binary-operator fallback is moved in this commit from py/objtype.c to py/runtime.c, making it apply to all types, not just user classes. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -46,3 +46,8 @@ print("a" | B("b"))
|
||||
print("a" + B("b"))
|
||||
print("a" * B("b"))
|
||||
print("a" / B("b"))
|
||||
|
||||
x = "a"; x |= B("b"); print(x)
|
||||
x = "a"; x += B("b"); print(x)
|
||||
x = "a"; x *= B("b"); print(x)
|
||||
x = "a"; x /= B("b"); print(x)
|
||||
|
||||
@@ -11,6 +11,16 @@ a = [1, 2, 3]
|
||||
c = a * 3
|
||||
print(a, c)
|
||||
|
||||
# check inplace multiplication
|
||||
a = [4, 5, 6]
|
||||
a *= 3
|
||||
print(a)
|
||||
|
||||
# check reverse inplace multiplication
|
||||
a = 3
|
||||
a *= [7, 8, 9]
|
||||
print(a)
|
||||
|
||||
# unsupported type on RHS
|
||||
try:
|
||||
[] * None
|
||||
|
||||
@@ -10,3 +10,13 @@ for i in (-4, -2, 0, 2, 4):
|
||||
a = '123'
|
||||
c = a * 3
|
||||
print(a, c)
|
||||
|
||||
# check inplace multiplication
|
||||
a = '456'
|
||||
a *= 3
|
||||
print(a)
|
||||
|
||||
# check reverse inplace multiplication
|
||||
a = 3
|
||||
a *= '789'
|
||||
print(a)
|
||||
|
||||
Reference in New Issue
Block a user