Skip to content

Commit

Permalink
Rollup merge of rust-lang#72714 - JohnTitor:debug-assert, r=nikomatsakis
Browse files Browse the repository at this point in the history
Fix debug assertion in typeck

Fixes rust-lang#72410
  • Loading branch information
Manishearth committed Jul 20, 2020
2 parents f9a3086 + a11024f commit 105cd49
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/librustc_typeck/collect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
));
Expand Down
18 changes: 18 additions & 0 deletions src/test/ui/traits/issue-72410.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 18 additions & 0 deletions src/test/ui/traits/issue-72410.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 105cd49

Please sign in to comment.