cinder
cinder copied to clipboard
Confusing error using primitive as Dict key
Are primitives like int64 allowed as Dict keys?
I guess not because they can't be sent as function arguments and this program gives a runtime error:
from __static__ import int64, Array, CheckedList, CheckedDict
def create(n: int):
d = CheckedDict[int64, bool]()
nn = int64(n)
if not d[nn]:
d[nn] = True
return
create(4)
But the error message is very confusing:
....
File "test.py", line 6, in create
if not d[nn]:
TypeError: chkdict[int64, bool].__getitem__()() argument 1 expected int64
Argument 1 is an int64 ... right?!
Similar error with CheckedList[int64] :
from __static__ import int64, CheckedList
def init():
empties: CheckedList[int64] = CheckedList[int64]([])
empties.append(int64(0))
init()
...
File "test.py", line 5, in init
empties.append(int64(0))
TypeError: chklist[int64].append()() argument 1 expected int64