diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-05-08 11:42:47 -0700 |
|---|---|---|
| committer | Pietro Albini <pietro@pietroalbini.org> | 2019-05-18 11:31:08 +0200 |
| commit | 6599770b21295e0bcb1f9a9080637c97c5c4b2be (patch) | |
| tree | 0e29f316aaf96da04eddec441174e5c693a937cb /src/test | |
| parent | d08ab3137301bb20440809271b1273e88be7f82c (diff) | |
| download | rust-6599770b21295e0bcb1f9a9080637c97c5c4b2be.tar.gz rust-6599770b21295e0bcb1f9a9080637c97c5c4b2be.zip | |
Use `delay_span_bug` for "Failed to unify obligation"
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/issues/issue-60283.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-60283.stderr | 34 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-60283.rs b/src/test/ui/issues/issue-60283.rs new file mode 100644 index 00000000000..e5a9caa32fa --- /dev/null +++ b/src/test/ui/issues/issue-60283.rs @@ -0,0 +1,17 @@ +pub trait Trait<'a> { + type Item; +} + +impl<'a> Trait<'a> for () { + type Item = (); +} + +pub fn foo<T, F>(_: T, _: F) +where T: for<'a> Trait<'a>, + F: for<'a> FnMut(<T as Trait<'a>>::Item) {} + +fn main() { + foo((), drop) + //~^ ERROR type mismatch in function arguments + //~| ERROR type mismatch resolving +} diff --git a/src/test/ui/issues/issue-60283.stderr b/src/test/ui/issues/issue-60283.stderr new file mode 100644 index 00000000000..a79b1959dca --- /dev/null +++ b/src/test/ui/issues/issue-60283.stderr @@ -0,0 +1,34 @@ +error[E0631]: type mismatch in function arguments + --> $DIR/issue-60283.rs:14:5 + | +LL | foo((), drop) + | ^^^ + | | + | expected signature of `for<'a> fn(<() as Trait<'a>>::Item) -> _` + | found signature of `fn(_) -> _` + | +note: required by `foo` + --> $DIR/issue-60283.rs:9:1 + | +LL | / pub fn foo<T, F>(_: T, _: F) +LL | | where T: for<'a> Trait<'a>, +LL | | F: for<'a> FnMut(<T as Trait<'a>>::Item) {} + | |_________________________________________________^ + +error[E0271]: type mismatch resolving `for<'a> <fn(_) {std::mem::drop::<_>} as std::ops::FnOnce<(<() as Trait<'a>>::Item,)>>::Output == ()` + --> $DIR/issue-60283.rs:14:5 + | +LL | foo((), drop) + | ^^^ expected bound lifetime parameter 'a, found concrete lifetime + | +note: required by `foo` + --> $DIR/issue-60283.rs:9:1 + | +LL | / pub fn foo<T, F>(_: T, _: F) +LL | | where T: for<'a> Trait<'a>, +LL | | F: for<'a> FnMut(<T as Trait<'a>>::Item) {} + | |_________________________________________________^ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0271`. |
