Skip to content

Lifetime generics on Generic Const Items should not affect if const is checked for evaluatability #136204

Open
@compiler-errors

Description

@compiler-errors

There's a difference between const _: () = panic!(); and const _<'a>: () = panic!();: The former is a pre-mono error, the latter is a post-mono error.

This seems inconsistent, and pretty bad. But luckily something we can change before stabilizing generic consts :)

I think we should probably change the code introduced in #121387 to instead call requires_monomorphization instead of is_empty on the generics.

It should also preferably check for impossible predicates in the same way we do for -Clink-dead-code/-Zcollect-mono-items=eager, since we must avoid monomorphizing consts with impossible (possibly trivial) preds. You could probably turn that into an ICE today.

Originally posted by @compiler-errors in #136168 (review)

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.F-generic_const_items`#![feature(generic_const_items)]`T-typesRelevant to the types team, which will review and decide on the PR/issue.

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions