about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorJack Huey <31162821+jackh726@users.noreply.github.com>2022-10-18 20:08:13 -0400
committerJack Huey <31162821+jackh726@users.noreply.github.com>2022-11-07 17:39:30 -0500
commitcececca7c7fdae8730027615c2e89120e40bac66 (patch)
tree0b4d8c301d9513edc0abf176ed44e9882f906e4c /src/test
parent00e314d5edb735baef84c314c8c1a53587911887 (diff)
Get spans for a couple more region types, add some optimizations, and extend test
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/generic-associated-types/bugs/issue-100013.rs19
-rw-r--r--src/test/ui/generic-associated-types/bugs/issue-100013.stderr60
2 files changed, 76 insertions, 3 deletions
diff --git a/src/test/ui/generic-associated-types/bugs/issue-100013.rs b/src/test/ui/generic-associated-types/bugs/issue-100013.rs
index f995591d76c..fc4e47a3ba1 100644
--- a/src/test/ui/generic-associated-types/bugs/issue-100013.rs
+++ b/src/test/ui/generic-associated-types/bugs/issue-100013.rs
@@ -11,7 +11,7 @@ pub trait FutureIterator {
         's: 'cx;
 }
 
-fn call_2<I: FutureIterator>() -> impl Send {
+fn call<I: FutureIterator>() -> impl Send {
     async { // a generator checked for autotrait impl `Send`
         //~^ lifetime bound not satisfied
         let x = None::<I::Future<'_, '_>>; // a type referencing GAT
@@ -19,4 +19,21 @@ fn call_2<I: FutureIterator>() -> impl Send {
     }
 }
 
+fn call2<'a, 'b, I: FutureIterator>() -> impl Send {
+    async { // a generator checked for autotrait impl `Send`
+        //~^ lifetime bound not satisfied
+        let x = None::<I::Future<'a, 'b>>; // a type referencing GAT
+        //~^ lifetime may not live long enough
+        async {}.await; // a yield point
+    }
+}
+
+fn call3<'a: 'b, 'b, I: FutureIterator>() -> impl Send {
+    async { // a generator checked for autotrait impl `Send`
+        //~^ lifetime bound not satisfied
+        let x = None::<I::Future<'a, 'b>>; // a type referencing GAT
+        async {}.await; // a yield point
+    }
+}
+
 fn main() {}
diff --git a/src/test/ui/generic-associated-types/bugs/issue-100013.stderr b/src/test/ui/generic-associated-types/bugs/issue-100013.stderr
index 11d149faa8f..d9fcf8c48e2 100644
--- a/src/test/ui/generic-associated-types/bugs/issue-100013.stderr
+++ b/src/test/ui/generic-associated-types/bugs/issue-100013.stderr
@@ -8,7 +8,7 @@ LL | |         async {}.await; // a yield point
 LL | |     }
    | |_____^
    |
-note: the lifetime defined here, ...
+note: the lifetime defined here...
   --> $DIR/issue-100013.rs:17:38
    |
 LL |         let x = None::<I::Future<'_, '_>>; // a type referencing GAT
@@ -19,5 +19,61 @@ note: ...must outlive the lifetime defined here
 LL |         let x = None::<I::Future<'_, '_>>; // a type referencing GAT
    |                                  ^^
 
-error: aborting due to previous error
+error: lifetime bound not satisfied
+  --> $DIR/issue-100013.rs:23:5
+   |
+LL | /     async { // a generator checked for autotrait impl `Send`
+LL | |
+LL | |         let x = None::<I::Future<'a, 'b>>; // a type referencing GAT
+LL | |
+LL | |         async {}.await; // a yield point
+LL | |     }
+   | |_____^
+   |
+note: the lifetime defined here...
+  --> $DIR/issue-100013.rs:22:14
+   |
+LL | fn call2<'a, 'b, I: FutureIterator>() -> impl Send {
+   |              ^^
+note: ...must outlive the lifetime defined here
+  --> $DIR/issue-100013.rs:22:10
+   |
+LL | fn call2<'a, 'b, I: FutureIterator>() -> impl Send {
+   |          ^^
+
+error: lifetime may not live long enough
+  --> $DIR/issue-100013.rs:25:17
+   |
+LL | fn call2<'a, 'b, I: FutureIterator>() -> impl Send {
+   |          --  -- lifetime `'b` defined here
+   |          |
+   |          lifetime `'a` defined here
+...
+LL |         let x = None::<I::Future<'a, 'b>>; // a type referencing GAT
+   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'b`
+   |
+   = help: consider adding the following bound: `'a: 'b`
+
+error: lifetime bound not satisfied
+  --> $DIR/issue-100013.rs:32:5
+   |
+LL | /     async { // a generator checked for autotrait impl `Send`
+LL | |
+LL | |         let x = None::<I::Future<'a, 'b>>; // a type referencing GAT
+LL | |         async {}.await; // a yield point
+LL | |     }
+   | |_____^
+   |
+note: the lifetime defined here...
+  --> $DIR/issue-100013.rs:31:18
+   |
+LL | fn call3<'a: 'b, 'b, I: FutureIterator>() -> impl Send {
+   |                  ^^
+note: ...must outlive the lifetime defined here
+  --> $DIR/issue-100013.rs:31:10
+   |
+LL | fn call3<'a: 'b, 'b, I: FutureIterator>() -> impl Send {
+   |          ^^
+
+error: aborting due to 4 previous errors