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

No one assigned

    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