summaryrefslogtreecommitdiffstats
path: root/tests/ui/regions/regions-outlives-projection-hrtype.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/regions/regions-outlives-projection-hrtype.rs')
-rw-r--r--tests/ui/regions/regions-outlives-projection-hrtype.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/ui/regions/regions-outlives-projection-hrtype.rs b/tests/ui/regions/regions-outlives-projection-hrtype.rs
new file mode 100644
index 000000000..5f9700df1
--- /dev/null
+++ b/tests/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() { }