py/objarray: Prohibit comparison of mismatching types.
Array equality is defined as each element being equal but to keep code size down MicroPython implements a binary comparison. This can only be used correctly for elements with the same binary layout though so turn it into an NotImplementedError when comparing types for which the binary comparison yielded incorrect results: types with different sizes, and floating point numbers because nan != nan.
This commit is contained in:
@@ -17,3 +17,15 @@ print(a[0])
|
||||
a = array.array('P')
|
||||
a.append(1)
|
||||
print(a[0])
|
||||
|
||||
# comparison between mismatching binary layouts is not implemented
|
||||
typecodes = ["b", "h", "i", "l", "q", "P", "O", "S", "f", "d"]
|
||||
for a in typecodes:
|
||||
for b in typecodes:
|
||||
if a == b and a not in ["f", "d"]:
|
||||
continue
|
||||
try:
|
||||
array.array(a) == array.array(b)
|
||||
print('FAIL')
|
||||
except NotImplementedError:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user