diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2019-08-09 08:37:40 +0900 |
|---|---|---|
| committer | Yuki Okushi <huyuumi.dev@gmail.com> | 2019-08-09 08:37:40 +0900 |
| commit | 642ee709427ada3711fb27dba9d26bbdaee6a3da (patch) | |
| tree | 4473f8d4c667c3b5aa15782b6a223baeacda717e /src/test | |
| parent | 2d1a551e144335e0d60a637d12f410cf65849876 (diff) | |
| download | rust-642ee709427ada3711fb27dba9d26bbdaee6a3da.tar.gz rust-642ee709427ada3711fb27dba9d26bbdaee6a3da.zip | |
Add test for issue-43623
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/issues/issue-43623.rs | 19 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-43623.stderr | 42 |
2 files changed, 61 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-43623.rs b/src/test/ui/issues/issue-43623.rs new file mode 100644 index 00000000000..b259e9e269d --- /dev/null +++ b/src/test/ui/issues/issue-43623.rs @@ -0,0 +1,19 @@ +pub trait Trait<'a> { + type Assoc; +} + +pub struct Type; + +impl<'a> Trait<'a> for Type { + type Assoc = (); +} + +pub fn break_me<T, F>(f: F) +where T: for<'b> Trait<'b>, + F: for<'b> FnMut(<T as Trait<'b>>::Assoc) { + break_me::<Type, fn(_)>; + //~^ ERROR: type mismatch in function arguments + //~| ERROR: type mismatch resolving +} + +fn main() {} diff --git a/src/test/ui/issues/issue-43623.stderr b/src/test/ui/issues/issue-43623.stderr new file mode 100644 index 00000000000..b5674105f75 --- /dev/null +++ b/src/test/ui/issues/issue-43623.stderr @@ -0,0 +1,42 @@ +error[E0631]: type mismatch in function arguments + --> $DIR/issue-43623.rs:14:5 + | +LL | break_me::<Type, fn(_)>; + | ^^^^^^^^^^^^^^^^^^^^^^^ + | | + | expected signature of `for<'b> fn(<Type as Trait<'b>>::Assoc) -> _` + | found signature of `fn(_) -> _` + | +note: required by `break_me` + --> $DIR/issue-43623.rs:11:1 + | +LL | / pub fn break_me<T, F>(f: F) +LL | | where T: for<'b> Trait<'b>, +LL | | F: for<'b> FnMut(<T as Trait<'b>>::Assoc) { +LL | | break_me::<Type, fn(_)>; +LL | | +LL | | +LL | | } + | |_^ + +error[E0271]: type mismatch resolving `for<'b> <fn(_) as std::ops::FnOnce<(<Type as Trait<'b>>::Assoc,)>>::Output == ()` + --> $DIR/issue-43623.rs:14:5 + | +LL | break_me::<Type, fn(_)>; + | ^^^^^^^^^^^^^^^^^^^^^^^ expected bound lifetime parameter 'b, found concrete lifetime + | +note: required by `break_me` + --> $DIR/issue-43623.rs:11:1 + | +LL | / pub fn break_me<T, F>(f: F) +LL | | where T: for<'b> Trait<'b>, +LL | | F: for<'b> FnMut(<T as Trait<'b>>::Assoc) { +LL | | break_me::<Type, fn(_)>; +LL | | +LL | | +LL | | } + | |_^ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0271`. |
