about summary refs log tree commit diff
path: root/tests/ui/underscore-lifetimes.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/underscore-lifetimes.rs')
-rw-r--r--tests/ui/underscore-lifetimes.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/ui/underscore-lifetimes.rs b/tests/ui/underscore-lifetimes.rs
new file mode 100644
index 00000000000..a1593880d84
--- /dev/null
+++ b/tests/ui/underscore-lifetimes.rs
@@ -0,0 +1,38 @@
+// run-pass
+
+#![allow(dead_code)]
+struct Foo<'a>(&'a u8);
+
+fn foo(x: &u8) -> Foo<'_> {
+    Foo(x)
+}
+
+fn foo2(x: &'_ u8) -> Foo<'_> {
+    Foo(x)
+}
+
+fn foo3(x: &'_ u8) -> Foo {
+    Foo(x)
+}
+
+fn foo4(_: Foo<'_>) {}
+
+struct Foo2<'a, 'b> {
+    a: &'a u8,
+    b: &'b u8,
+}
+fn foo5<'b>(foo: Foo2<'_, 'b>) -> &'b u8 {
+    foo.b
+}
+
+fn main() {
+    let x = &5;
+    let _ = foo(x);
+    let _ = foo2(x);
+    let _ = foo3(x);
+    foo4(Foo(x));
+    let _ = foo5(Foo2 {
+        a: x,
+        b: &6,
+    });
+}