facebookincubator / cinder

Cinder is Meta's internal performance-oriented production version of CPython.
https://trycinder.com
Other
3.49k stars 121 forks source link

Confusing error using primitive as Dict key #144

Open bennn opened 1 month ago

bennn commented 1 month ago

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