rust/compiler/rustc_typeck
Nicholas Nethercote 4852291417 Introduce `ConstAllocation`.
Currently some `Allocation`s are interned, some are not, and it's very
hard to tell at a use point which is which.

This commit introduces `ConstAllocation` for the known-interned ones,
which makes the division much clearer. `ConstAllocation::inner()` is
used to get the underlying `Allocation`.

In some places it's natural to use an `Allocation`, in some it's natural
to use a `ConstAllocation`, and in some places there's no clear choice.
I've tried to make things look as nice as possible, while generally
favouring `ConstAllocation`, which is the type that embodies more
information. This does require quite a few calls to `inner()`.

The commit also tweaks how `PartialOrd` works for `Interned`. The
previous code was too clever by half, building on `T: Ord` to make the
code shorter. That caused problems with deriving `PartialOrd` and `Ord`
for `ConstAllocation`, so I changed it to build on `T: PartialOrd`,
which is slightly more verbose but much more standard and avoided the
problems.
2022-03-07 08:25:50 +11:00
..
src Introduce `ConstAllocation`. 2022-03-07 08:25:50 +11:00
Cargo.toml Fix control flow handling in generator_interior 2022-01-18 14:25:26 -08:00
README.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00

README.md

For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.