mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 17:24:06 +00:00
Rollup merge of #72714 - JohnTitor:debug-assert, r=nikomatsakis
Fix debug assertion in typeck Fixes #72410
This commit is contained in:
commit
105cd49554
@ -1927,7 +1927,7 @@ fn explicit_predicates_of(tcx: TyCtxt<'_>, def_id: DefId) -> ty::GenericPredicat
|
||||
let re_root_empty = tcx.lifetimes.re_root_empty;
|
||||
let predicate = ty::OutlivesPredicate(ty, re_root_empty);
|
||||
predicates.push((
|
||||
ty::PredicateKind::TypeOutlives(ty::Binder::dummy(predicate))
|
||||
ty::PredicateKind::TypeOutlives(ty::Binder::bind(predicate))
|
||||
.to_predicate(tcx),
|
||||
span,
|
||||
));
|
||||
|
18
src/test/ui/traits/issue-72410.rs
Normal file
18
src/test/ui/traits/issue-72410.rs
Normal file
@ -0,0 +1,18 @@
|
||||
// Regression test for #72410, this should be used with debug assertion enabled.
|
||||
|
||||
// should be fine
|
||||
pub trait Foo {
|
||||
fn map()
|
||||
where
|
||||
Self: Sized,
|
||||
for<'a> &'a mut [u8]: ;
|
||||
}
|
||||
|
||||
// should fail
|
||||
pub trait Bar {
|
||||
fn map()
|
||||
where for<'a> &'a mut [dyn Bar]: ;
|
||||
//~^ ERROR: the trait `Bar` cannot be made into an object
|
||||
}
|
||||
|
||||
fn main() {}
|
18
src/test/ui/traits/issue-72410.stderr
Normal file
18
src/test/ui/traits/issue-72410.stderr
Normal file
@ -0,0 +1,18 @@
|
||||
error[E0038]: the trait `Bar` cannot be made into an object
|
||||
--> $DIR/issue-72410.rs:14:19
|
||||
|
|
||||
LL | pub trait Bar {
|
||||
| --- this trait cannot be made into an object...
|
||||
LL | fn map()
|
||||
| --- ...because associated function `map` has no `self` parameter
|
||||
LL | where for<'a> &'a mut [dyn Bar]: ;
|
||||
| ^^^^^^^^^^^^^^^^^ the trait `Bar` cannot be made into an object
|
||||
|
|
||||
help: consider turning `map` into a method by giving it a `&self` argument or constraining it so it does not apply to trait objects
|
||||
|
|
||||
LL | where for<'a> &'a mut [dyn Bar]:, Self: Sized ;
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0038`.
|
Loading…
Reference in New Issue
Block a user