about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMara Bos <m-ou.se@m-ou.se>2025-05-07 14:29:23 +0200
committerMara Bos <m-ou.se@m-ou.se>2025-06-13 09:20:55 +0200
commit855ea48ccc01b040539d1d32d76cd4cd472aa7c0 (patch)
treef0fd1535bb10b3fa11c1004469d7ae8498a597b8
parent578fa8e945fa7af10dddf4861da718fbaf4c34f3 (diff)
Add test for temporary lifetime extension in `Self()` syntax.
-rw-r--r--tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.rs11
-rw-r--r--tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.stderr2
2 files changed, 12 insertions, 1 deletions
diff --git a/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.rs b/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.rs
index cf60991e519..bb537f855a4 100644
--- a/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.rs
+++ b/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.rs
@@ -7,6 +7,17 @@ fn temp() -> String {
 #[derive(Debug)]
 struct X<'a>(&'a String);
 
+trait T<'a> {
+    const A: X<'a>;
+    const B: X<'a>;
+}
+
+impl<'a> T<'a> for X<'a> {
+    // Check both Self() and X() syntax:
+    const A: X<'a> = Self(&String::new());
+    const B: X<'a> = X(&String::new());
+}
+
 fn main() {
     let a = &temp();
     let b = Some(&temp());
diff --git a/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.stderr b/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.stderr
index 8a4b7e8ae43..66f9140f63c 100644
--- a/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.stderr
+++ b/tests/ui/lifetimes/temporary-lifetime-extension-tuple-ctor.stderr
@@ -1,5 +1,5 @@
 error[E0716]: temporary value dropped while borrowed
-  --> $DIR/temporary-lifetime-extension-tuple-ctor.rs:23:19
+  --> $DIR/temporary-lifetime-extension-tuple-ctor.rs:34:19
    |
 LL |     let g = some(&temp());
    |                   ^^^^^^ - temporary value is freed at the end of this statement