Checks that an opaque type does not contain cycles and does not use Self or T::Foo
projections that would result in βinheriting lifetimesβ.
Checks that an opaque type does not contain cycles.
Check that the concrete type behind impl Trait actually implements Trait.
Check that the opaqueβs precise captures list is valid (if present).
We check this for regular impl Traits and also RPITITs, even though the latter
are technically GATs.
Check that a static is inhabited.
Check that the fields of the union do not need dropping.
Check the representation of adts with unnamed fields.
Part of enum check. Given the discriminants of an enum, errors if two or more discriminants are equal
Emit an error for recursive opaque types.