cinder icon indicating copy to clipboard operation
cinder copied to clipboard

Confusing error using primitive as Dict key

Open bennn opened this issue 1 year ago • 1 comments

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?!

bennn avatar Aug 14 '24 20:08 bennn

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

bennn avatar Oct 22 '24 06:10 bennn