diff options
| author | Mu001999 <mu001999@outlook.com> | 2023-11-13 08:36:12 +0800 |
|---|---|---|
| committer | Mu001999 <mu001999@outlook.com> | 2023-11-13 08:36:12 +0800 |
| commit | 62b6529e039ccba88a02e1a2cdff65a7f0d25bef (patch) | |
| tree | 7dbf90864d5bd152f49523e37767bb88c85be109 | |
| parent | 6f308b871340bfb6ace25455495c5d57873c12ce (diff) | |
| download | rust-62b6529e039ccba88a02e1a2cdff65a7f0d25bef.tar.gz rust-62b6529e039ccba88a02e1a2cdff65a7f0d25bef.zip | |
Turn assert_eq into a delay_span_bug
| -rw-r--r-- | compiler/rustc_hir_analysis/src/coherence/orphan.rs | 8 | ||||
| -rw-r--r-- | tests/ui/auto-traits/issue-117789.rs | 7 | ||||
| -rw-r--r-- | tests/ui/auto-traits/issue-117789.stderr | 21 |
3 files changed, 35 insertions, 1 deletions
diff --git a/compiler/rustc_hir_analysis/src/coherence/orphan.rs b/compiler/rustc_hir_analysis/src/coherence/orphan.rs index 7eeb7837467..8d87cb57b90 100644 --- a/compiler/rustc_hir_analysis/src/coherence/orphan.rs +++ b/compiler/rustc_hir_analysis/src/coherence/orphan.rs @@ -452,7 +452,13 @@ fn lint_auto_trait_impl<'tcx>( trait_ref: ty::TraitRef<'tcx>, impl_def_id: LocalDefId, ) { - assert_eq!(trait_ref.args.len(), 1); + if trait_ref.args.len() != 1 { + tcx.sess.diagnostic().delay_span_bug( + tcx.def_span(impl_def_id), + "auto traits cannot have generic parameters", + ); + return; + } let self_ty = trait_ref.self_ty(); let (self_type_did, args) = match self_ty.kind() { ty::Adt(def, args) => (def.did(), args), diff --git a/tests/ui/auto-traits/issue-117789.rs b/tests/ui/auto-traits/issue-117789.rs new file mode 100644 index 00000000000..0c30931a1b5 --- /dev/null +++ b/tests/ui/auto-traits/issue-117789.rs @@ -0,0 +1,7 @@ +#![deny(suspicious_auto_trait_impls)] + +auto trait Trait<P> {} //~ ERROR auto traits cannot have generic parameters +//~^ ERROR auto traits are experimental and possibly buggy +impl<P> Trait<P> for () {} + +fn main() {} diff --git a/tests/ui/auto-traits/issue-117789.stderr b/tests/ui/auto-traits/issue-117789.stderr new file mode 100644 index 00000000000..9a3a7efed3e --- /dev/null +++ b/tests/ui/auto-traits/issue-117789.stderr @@ -0,0 +1,21 @@ +error[E0567]: auto traits cannot have generic parameters + --> $DIR/issue-117789.rs:3:17 + | +LL | auto trait Trait<P> {} + | -----^^^ help: remove the parameters + | | + | auto trait cannot have generic parameters + +error[E0658]: auto traits are experimental and possibly buggy + --> $DIR/issue-117789.rs:3:1 + | +LL | auto trait Trait<P> {} + | ^^^^^^^^^^^^^^^^^^^^^^ + | + = 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 + +error: aborting due to 2 previous errors + +Some errors have detailed explanations: E0567, E0658. +For more information about an error, try `rustc --explain E0567`. |
