Skip to content

Commit

Permalink
Rollup merge of rust-lang#138173 - compiler-errors:incoherent-negativ…
Browse files Browse the repository at this point in the history
…e-impl, r=oli-obk

Delay bug for negative auto trait rather than ICEing

Fixes rust-lang#138149

r? oli-obk
  • Loading branch information
compiler-errors authored Mar 7, 2025
2 parents 3dafc37 + bbc80a8 commit 92e7038
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
5 changes: 4 additions & 1 deletion compiler/rustc_hir_analysis/src/check/always_applicable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,10 @@ pub(crate) fn check_negative_auto_trait_impl<'tcx>(
// be implemented here to handle non-ADT rigid types.
Ok(())
} else {
span_bug!(tcx.def_span(impl_def_id), "incoherent impl of negative auto trait");
Err(tcx.dcx().span_delayed_bug(
tcx.def_span(impl_def_id),
"incoherent impl of negative auto trait",
))
}
}
}
Expand Down
7 changes: 7 additions & 0 deletions tests/ui/auto-traits/ungated-impl.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
auto trait MyTrait {}
//~^ ERROR auto traits are experimental and possibly buggy

impl<T> !MyTrait for *mut T {}
//~^ ERROR negative trait bounds are not fully implemented

fn main() {}
23 changes: 23 additions & 0 deletions tests/ui/auto-traits/ungated-impl.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
error[E0658]: auto traits are experimental and possibly buggy
--> $DIR/ungated-impl.rs:1:1
|
LL | auto trait MyTrait {}
| ^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #13231 <https://github.com/rust-lang/rust/issues/13231> for more information
= help: add `#![feature(auto_traits)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0658]: negative trait bounds are not fully implemented; use marker types for now
--> $DIR/ungated-impl.rs:4:9
|
LL | impl<T> !MyTrait for *mut T {}
| ^^^^^^^^
|
= note: see issue #68318 <https://github.com/rust-lang/rust/issues/68318> for more information
= help: add `#![feature(negative_impls)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0658`.

0 comments on commit 92e7038

Please sign in to comment.