-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Open
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsD-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.Diagnostics: A diagnostic that is giving misleading or incorrect information.F-negative_impls#![feature(negative_impls)]#![feature(negative_impls)]F-rustc_attrsInternal rustc attributes gated on the `#[rustc_attrs]` feature gate.Internal rustc attributes gated on the `#[rustc_attrs]` feature gate.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Follow up of this comment on #90104
This test https://github.com/rust-lang/rust/pull/90104/files#diff-2c291b05493bf924a05c167ef3923655ca244b6fd8bc2303ffdc2ed2132498cc is giving an ungreat error message.
#![feature(rustc_attrs)]
#![feature(trait_alias)]
trait A {}
trait B {}
trait AB = A + B;
impl A for u32 {}
impl B for u32 {}
trait C {}
#[rustc_strict_coherence]
impl<T: AB> C for T {}
#[rustc_strict_coherence]
impl C for u32 {}
//~^ ERROR
// FIXME it's giving an ungreat error but unsure if we care given that it's using an internal rustc
// attribute and an artificial code path for testing purposes
fn main() {}
fails with ...
error[E0283]: type annotations needed
--> $DIR/coherence-overlap-trait-alias.rs:15:6
|
LL | impl C for u32 {}
| ^ cannot infer type for type `u32`
|
= note: cannot satisfy `u32: C`
note: required by a bound in `C`
--> $DIR/coherence-overlap-trait-alias.rs:11:1
|
LL | trait C {}
| ^^^^^^^ required by this bound in `C`
error: aborting due to previous error
Error should mention about conflicting implementations for u32
or something like that. More similar to what happens without using the rustc_strict_coherence
attribute.
yerkeyerke
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsD-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.Diagnostics: A diagnostic that is giving misleading or incorrect information.F-negative_impls#![feature(negative_impls)]#![feature(negative_impls)]F-rustc_attrsInternal rustc attributes gated on the `#[rustc_attrs]` feature gate.Internal rustc attributes gated on the `#[rustc_attrs]` feature gate.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.