type Alias<const B: bool> = [u8; B];
This previously didn't compile but started to in 1.83, not sure which PR but probably something like #129137.
This is because the RHS of free type aliases are not well formed checked. Previously we caught this anyway by implicitly having an anon const with type usize that wrapped the usage of B which caused a separate type checker error when type checking the anon const.
Nowadays we just directly represent it without an anon const and rely on WellFormed([u8; B]) checking that B is of type usize. It might be possible to generate the list of wf predicates for the RHS of free type aliases and then only prove the ConstArgHasType clauses to fix this?
cc @rust-lang/types
This previously didn't compile but started to in 1.83, not sure which PR but probably something like #129137.
This is because the RHS of free type aliases are not well formed checked. Previously we caught this anyway by implicitly having an anon const with type
usizethat wrapped the usage ofBwhich caused a separate type checker error when type checking the anon const.Nowadays we just directly represent it without an anon const and rely on
WellFormed([u8; B])checking thatBis of typeusize. It might be possible to generate the list of wf predicates for the RHS of free type aliases and then only prove theConstArgHasTypeclauses to fix this?cc @rust-lang/types