Description
From #49810:
The plan is to generalize the existing
CanonicalVar
so that it represents a "bound" thing -- probably it just gets unified withDebruijnIndex
.
General instructions:
The canonical var is a "new type index" declared here:
Line 1107 in 3242880
We would basically just want to remove it completely and replace uses of it with DebruijnIndex
. There are a few complications to be overcome. One is that debruijn indices are currently 1-based (that is #49813), so indexing with them will require some tweaks. Another related problem is that DebruijnIndex
does not implement the Idx
trait, so we can't presently have a IndexVec<DebruijnIndex>
, as we do in the CanonicalVarValues
struct:
rust/src/librustc/infer/canonical.rs
Lines 76 to 78 in 3242880
This is not that big a deal -- we can just use a plain vector -- although if we make debruijn indices 0-based we could then generate it with the newtype_index!
macro, which would be nice.