diff options
Diffstat (limited to 'src/test/ui/regions/regions-outlives-projection-hrtype.rs')
-rw-r--r-- | src/test/ui/regions/regions-outlives-projection-hrtype.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/ui/regions/regions-outlives-projection-hrtype.rs b/src/test/ui/regions/regions-outlives-projection-hrtype.rs new file mode 100644 index 000000000..5f9700df1 --- /dev/null +++ b/src/test/ui/regions/regions-outlives-projection-hrtype.rs @@ -0,0 +1,26 @@ +// Test for the outlives relation when applied to a projection on a +// type with bound regions. In this case, we are checking that +// `<for<'r> fn(&'r T) as TheTrait>::TheType: 'a` If we're not +// careful, we could wind up with a constraint that `'r:'a`, but since +// `'r` is bound, that leads to badness. This test checks that +// everything works. + +// check-pass +#![allow(dead_code)] + +trait TheTrait { + type TheType; +} + +fn wf<T>() { } + +type FnType<T> = for<'r> fn(&'r T); + +fn foo<'a,'b,T>() + where FnType<T>: TheTrait +{ + wf::< <FnType<T> as TheTrait>::TheType >(); +} + + +fn main() { } |