Trivial bounds check doesn't consider non-global predicates *after* normalization
Open
@lcnr is already working on this.
Since Apr 25, 2025.
C-bug
T-types
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
trait Hello {}
impl<const N: usize> Hello for [(); N] {}
trait Foo {
type Assoc;
}
fn foo<const N: usize>()
where
<u32 as Foo>::Assoc: Hello,
u32: Foo<Assoc = [(); N]>,
{
}
I expected to see this pass.
Instead, this ICEd.
<u32 as Foo>::Assoc: Hello is considered global, but it is not global.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.