Skip to content

Not using anon consts for uses of const parameters caused us to accept more code for free type aliases #149774

@BoxyUwU

Description

@BoxyUwU
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

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.I-types-nominatedNominated for discussion during a types team meeting.P-highHigh priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-typesRelevant to the types team, which will review and decide on the PR/issue.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions