Open fsoikin opened 8 years ago
Correct, symbol/node ids are globally unique whereas type ids are unique only to a particular type checker instance. I would be fine with a PR to add a getTypeId
method with the caveat that you can only ever compare type ids from the same type checker instance.
I am using language service to "traverse" the program, and I would like very much to "remember" which types and symbols I already saw, and to cache my computation results for them. Performance boost and avoiding infinite loops.
The compiler very helpfully supplies
id
forType
,Symbol
andNode
, and it seems to be "really, really" unique for symbols and nodes, and "relatively unique" (i.e. within a given typechecker) for types.The problem is, however, that, unlike nodes and symbols, types hide their
id
s behind the "internal" qualifier and the lack of accessor function, making them not legally visible to me as a consumer of the language service. Of course, this being JavaScript, nothing prevents me from accessing them anyway, and that is what I currently do, but this is not ideal, because I am not protected from the code evolution in the future.So it seems to me that nothing stands in the way of adding a
getTypeId
method to the typechecker, unless I'm missing something very important.