about summary refs log tree commit diff
path: root/src/test/ui/impl-trait
diff options
context:
space:
mode:
authorMatthew Jasper <mjjasper1@gmail.com>2019-12-28 15:54:27 +0000
committerMatthew Jasper <mjjasper1@gmail.com>2020-02-14 22:40:03 +0000
commit93ac5bc7de2b47f8848275254a0e327269ee5f06 (patch)
tree61ff326e5c920e427f01e8b98844588cfcf75898 /src/test/ui/impl-trait
parentbb8c9911f591b2f72d5d473acab3c27ef9ae1a46 (diff)
downloadrust-93ac5bc7de2b47f8848275254a0e327269ee5f06.tar.gz
rust-93ac5bc7de2b47f8848275254a0e327269ee5f06.zip
Update tests
Diffstat (limited to 'src/test/ui/impl-trait')
-rw-r--r--src/test/ui/impl-trait/auto-trait-leak.stderr100
-rw-r--r--src/test/ui/impl-trait/recursive-impl-trait-type-direct.rs5
-rw-r--r--src/test/ui/impl-trait/recursive-impl-trait-type-direct.stderr2
-rw-r--r--src/test/ui/impl-trait/recursive-impl-trait-type-indirect.rs65
-rw-r--r--src/test/ui/impl-trait/recursive-impl-trait-type-indirect.stderr42
5 files changed, 168 insertions, 46 deletions
diff --git a/src/test/ui/impl-trait/auto-trait-leak.stderr b/src/test/ui/impl-trait/auto-trait-leak.stderr
index 0ebaac89450..981fad57b0f 100644
--- a/src/test/ui/impl-trait/auto-trait-leak.stderr
+++ b/src/test/ui/impl-trait/auto-trait-leak.stderr
@@ -4,22 +4,72 @@ error[E0391]: cycle detected when processing `cycle1::{{opaque}}#0`
 LL | fn cycle1() -> impl Clone {
    |                ^^^^^^^^^^
    |
+note: ...which requires borrow-checking `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires processing `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires processing `cycle1`...
   --> $DIR/auto-trait-leak.rs:12:1
    |
 LL | fn cycle1() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires unsafety-checking `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires building MIR for...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires type-checking `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`...
 note: ...which requires processing `cycle2::{{opaque}}#0`...
   --> $DIR/auto-trait-leak.rs:22:16
    |
 LL | fn cycle2() -> impl Clone {
    |                ^^^^^^^^^^
+note: ...which requires borrow-checking `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires processing `cycle2`...
   --> $DIR/auto-trait-leak.rs:22:1
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires processing `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires unsafety-checking `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires building MIR for...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires type-checking `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`...
    = note: ...which again requires processing `cycle1::{{opaque}}#0`, completing the cycle
 note: cycle used when checking item types in top-level module
@@ -40,17 +90,47 @@ error[E0391]: cycle detected when processing `cycle1::{{opaque}}#0`
 LL | fn cycle1() -> impl Clone {
    |                ^^^^^^^^^^
    |
+note: ...which requires borrow-checking `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires processing `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires processing `cycle1`...
   --> $DIR/auto-trait-leak.rs:12:1
    |
 LL | fn cycle1() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires unsafety-checking `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires building MIR for...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires type-checking `cycle1`...
+  --> $DIR/auto-trait-leak.rs:12:1
+   |
+LL | fn cycle1() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: ...which requires evaluating trait selection obligation `impl std::clone::Clone: std::marker::Send`...
 note: ...which requires processing `cycle2::{{opaque}}#0`...
   --> $DIR/auto-trait-leak.rs:22:16
    |
 LL | fn cycle2() -> impl Clone {
    |                ^^^^^^^^^^
+note: ...which requires borrow-checking `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
 note: ...which requires processing `cycle2`...
   --> $DIR/auto-trait-leak.rs:22:1
    |
@@ -91,6 +171,26 @@ note: ...which requires processing `cycle2`...
    |
 LL | fn cycle2() -> impl Clone {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires processing `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires unsafety-checking `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires building MIR for...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+note: ...which requires type-checking `cycle2`...
+  --> $DIR/auto-trait-leak.rs:21:1
+   |
+LL | fn cycle2() -> impl Clone {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: ...which again requires processing `cycle1::{{opaque}}#0`, completing the cycle
 note: cycle used when checking item types in top-level module
   --> $DIR/auto-trait-leak.rs:1:1
diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-direct.rs b/src/test/ui/impl-trait/recursive-impl-trait-type-direct.rs
index 2b4f5e0975a..3cc53744097 100644
--- a/src/test/ui/impl-trait/recursive-impl-trait-type-direct.rs
+++ b/src/test/ui/impl-trait/recursive-impl-trait-type-direct.rs
@@ -1,6 +1,9 @@
 // Test that an `impl Trait` type that expands to itself is an error.
 
-fn test() -> impl Sized { //~ ERROR E0720
+#![allow(unconditional_recursion)]
+
+fn test() -> impl Sized {
+    //~^ ERROR E0720
     test()
 }
 
diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-direct.stderr b/src/test/ui/impl-trait/recursive-impl-trait-type-direct.stderr
index 1b5dbd814a4..5a95e2969d1 100644
--- a/src/test/ui/impl-trait/recursive-impl-trait-type-direct.stderr
+++ b/src/test/ui/impl-trait/recursive-impl-trait-type-direct.stderr
@@ -1,5 +1,5 @@
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-direct.rs:3:14
+  --> $DIR/recursive-impl-trait-type-direct.rs:5:14
    |
 LL | fn test() -> impl Sized {
    |              ^^^^^^^^^^ expands to a recursive type
diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.rs b/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.rs
index 2428b560b70..e3c621f0c57 100644
--- a/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.rs
+++ b/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.rs
@@ -2,59 +2,75 @@
 // otherwise forbidden.
 
 #![feature(generators)]
+#![allow(unconditional_recursion)]
 
-fn option(i: i32) -> impl Sized { //~ ERROR
-    if i < 0 {
-        None
-    } else {
-        Some((option(i - 1), i))
-    }
+fn option(i: i32) -> impl Sized {
+    //~^ ERROR
+    if i < 0 { None } else { Some((option(i - 1), i)) }
 }
 
-fn tuple() -> impl Sized { //~ ERROR
+fn tuple() -> impl Sized {
+    //~^ ERROR
     (tuple(),)
 }
 
-fn array() -> impl Sized { //~ ERROR
+fn array() -> impl Sized {
+    //~^ ERROR
     [array()]
 }
 
-fn ptr() -> impl Sized { //~ ERROR
+fn ptr() -> impl Sized {
+    //~^ ERROR
     &ptr() as *const _
 }
 
-fn fn_ptr() -> impl Sized { //~ ERROR
+fn fn_ptr() -> impl Sized {
+    //~^ ERROR
     fn_ptr as fn() -> _
 }
 
-fn closure_capture() -> impl Sized { //~ ERROR
+fn closure_capture() -> impl Sized {
+    //~^ ERROR
     let x = closure_capture();
-    move || { x; }
+    move || {
+        x;
+    }
 }
 
-fn closure_ref_capture() -> impl Sized { //~ ERROR
+fn closure_ref_capture() -> impl Sized {
+    //~^ ERROR
     let x = closure_ref_capture();
-    move || { &x; }
+    move || {
+        &x;
+    }
 }
 
-fn closure_sig() -> impl Sized { //~ ERROR
+fn closure_sig() -> impl Sized {
+    //~^ ERROR
     || closure_sig()
 }
 
-fn generator_sig() -> impl Sized { //~ ERROR
+fn generator_sig() -> impl Sized {
+    //~^ ERROR
     || generator_sig()
 }
 
-fn generator_capture() -> impl Sized { //~ ERROR
+fn generator_capture() -> impl Sized {
+    //~^ ERROR
     let x = generator_capture();
-    move || { yield; x; }
+    move || {
+        yield;
+        x;
+    }
 }
 
-fn substs_change<T>() -> impl Sized { //~ ERROR
+fn substs_change<T: 'static>() -> impl Sized {
+    //~^ ERROR
     (substs_change::<&T>(),)
 }
 
-fn generator_hold() -> impl Sized { //~ ERROR
+fn generator_hold() -> impl Sized {
+    //~^ ERROR
     move || {
         let x = generator_hold();
         yield;
@@ -62,15 +78,18 @@ fn generator_hold() -> impl Sized { //~ ERROR
     }
 }
 
-fn use_fn_ptr() -> impl Sized { // OK, error already reported
+fn use_fn_ptr() -> impl Sized {
+    // OK, error already reported
     fn_ptr()
 }
 
-fn mutual_recursion() -> impl Sync { //~ ERROR
+fn mutual_recursion() -> impl Sync {
+    //~^ ERROR
     mutual_recursion_b()
 }
 
-fn mutual_recursion_b() -> impl Sized { //~ ERROR
+fn mutual_recursion_b() -> impl Sized {
+    //~^ ERROR
     mutual_recursion()
 }
 
diff --git a/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.stderr b/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.stderr
index b7ba0d6ab17..6573b00870c 100644
--- a/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.stderr
+++ b/src/test/ui/impl-trait/recursive-impl-trait-type-indirect.stderr
@@ -1,5 +1,5 @@
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:6:22
+  --> $DIR/recursive-impl-trait-type-indirect.rs:7:22
    |
 LL | fn option(i: i32) -> impl Sized {
    |                      ^^^^^^^^^^ expands to a recursive type
@@ -7,7 +7,7 @@ LL | fn option(i: i32) -> impl Sized {
    = note: expanded type is `std::option::Option<(impl Sized, i32)>`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:14:15
+  --> $DIR/recursive-impl-trait-type-indirect.rs:12:15
    |
 LL | fn tuple() -> impl Sized {
    |               ^^^^^^^^^^ expands to a recursive type
@@ -15,7 +15,7 @@ LL | fn tuple() -> impl Sized {
    = note: expanded type is `(impl Sized,)`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:18:15
+  --> $DIR/recursive-impl-trait-type-indirect.rs:17:15
    |
 LL | fn array() -> impl Sized {
    |               ^^^^^^^^^^ expands to a recursive type
@@ -31,7 +31,7 @@ LL | fn ptr() -> impl Sized {
    = note: expanded type is `*const impl Sized`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:26:16
+  --> $DIR/recursive-impl-trait-type-indirect.rs:27:16
    |
 LL | fn fn_ptr() -> impl Sized {
    |                ^^^^^^^^^^ expands to a recursive type
@@ -39,63 +39,63 @@ LL | fn fn_ptr() -> impl Sized {
    = note: expanded type is `fn() -> impl Sized`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:30:25
+  --> $DIR/recursive-impl-trait-type-indirect.rs:32:25
    |
 LL | fn closure_capture() -> impl Sized {
    |                         ^^^^^^^^^^ expands to a recursive type
    |
-   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:32:5: 32:19 x:impl Sized]`
+   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:35:5: 37:6 x:impl Sized]`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:35:29
+  --> $DIR/recursive-impl-trait-type-indirect.rs:40:29
    |
 LL | fn closure_ref_capture() -> impl Sized {
    |                             ^^^^^^^^^^ expands to a recursive type
    |
-   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:37:5: 37:20 x:impl Sized]`
+   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:43:5: 45:6 x:impl Sized]`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:40:21
+  --> $DIR/recursive-impl-trait-type-indirect.rs:48:21
    |
 LL | fn closure_sig() -> impl Sized {
    |                     ^^^^^^^^^^ expands to a recursive type
    |
-   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:41:5: 41:21]`
+   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:50:5: 50:21]`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:44:23
+  --> $DIR/recursive-impl-trait-type-indirect.rs:53:23
    |
 LL | fn generator_sig() -> impl Sized {
    |                       ^^^^^^^^^^ expands to a recursive type
    |
-   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:45:5: 45:23]`
+   = note: expanded type is `[closure@$DIR/recursive-impl-trait-type-indirect.rs:55:5: 55:23]`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:48:27
+  --> $DIR/recursive-impl-trait-type-indirect.rs:58:27
    |
 LL | fn generator_capture() -> impl Sized {
    |                           ^^^^^^^^^^ expands to a recursive type
    |
-   = note: expanded type is `[generator@$DIR/recursive-impl-trait-type-indirect.rs:50:5: 50:26 x:impl Sized {()}]`
+   = note: expanded type is `[generator@$DIR/recursive-impl-trait-type-indirect.rs:61:5: 64:6 x:impl Sized {()}]`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:53:26
+  --> $DIR/recursive-impl-trait-type-indirect.rs:67:35
    |
-LL | fn substs_change<T>() -> impl Sized {
-   |                          ^^^^^^^^^^ expands to a recursive type
+LL | fn substs_change<T: 'static>() -> impl Sized {
+   |                                   ^^^^^^^^^^ expands to a recursive type
    |
    = note: expanded type is `(impl Sized,)`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:57:24
+  --> $DIR/recursive-impl-trait-type-indirect.rs:72:24
    |
 LL | fn generator_hold() -> impl Sized {
    |                        ^^^^^^^^^^ expands to a recursive type
    |
-   = note: expanded type is `[generator@$DIR/recursive-impl-trait-type-indirect.rs:58:5: 62:6 {impl Sized, ()}]`
+   = note: expanded type is `[generator@$DIR/recursive-impl-trait-type-indirect.rs:74:5: 78:6 {impl Sized, ()}]`
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:69:26
+  --> $DIR/recursive-impl-trait-type-indirect.rs:86:26
    |
 LL | fn mutual_recursion() -> impl Sync {
    |                          ^^^^^^^^^ expands to a recursive type
@@ -103,7 +103,7 @@ LL | fn mutual_recursion() -> impl Sync {
    = note: type resolves to itself
 
 error[E0720]: opaque type expands to a recursive type
-  --> $DIR/recursive-impl-trait-type-indirect.rs:73:28
+  --> $DIR/recursive-impl-trait-type-indirect.rs:91:28
    |
 LL | fn mutual_recursion_b() -> impl Sized {
    |                            ^^^^^^^^^^ expands to a recursive type