Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move "auto trait leak" impl-trait cycle dependency test to ui
- Loading branch information
Showing
2 changed files
with
70 additions
and
0 deletions.
There are no files selected for viewing
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
error[E0277]: the trait bound `std::rc::Rc<std::cell::Cell<i32>>: std::marker::Send` is not satisfied in `impl std::ops::Fn<(i32,)>` | ||
--> $DIR/auto-trait-leak.rs:27:5 | ||
| | ||
27 | send(before()); | ||
| ^^^^ `std::rc::Rc<std::cell::Cell<i32>>` cannot be sent between threads safely | ||
| | ||
= help: within `impl std::ops::Fn<(i32,)>`, the trait `std::marker::Send` is not implemented for `std::rc::Rc<std::cell::Cell<i32>>` | ||
= note: required because it appears within the type `[closure@$DIR/auto-trait-leak.rs:21:5: 21:22 p:std::rc::Rc<std::cell::Cell<i32>>]` | ||
= note: required because it appears within the type `impl std::ops::Fn<(i32,)>` | ||
= note: required by `send` | ||
|
||
error[E0277]: the trait bound `std::rc::Rc<std::cell::Cell<i32>>: std::marker::Send` is not satisfied in `impl std::ops::Fn<(i32,)>` | ||
--> $DIR/auto-trait-leak.rs:34:5 | ||
| | ||
34 | send(after()); | ||
| ^^^^ `std::rc::Rc<std::cell::Cell<i32>>` cannot be sent between threads safely | ||
| | ||
= help: within `impl std::ops::Fn<(i32,)>`, the trait `std::marker::Send` is not implemented for `std::rc::Rc<std::cell::Cell<i32>>` | ||
= note: required because it appears within the type `[closure@$DIR/auto-trait-leak.rs:46:5: 46:22 p:std::rc::Rc<std::cell::Cell<i32>>]` | ||
= note: required because it appears within the type `impl std::ops::Fn<(i32,)>` | ||
= note: required by `send` | ||
|
||
error[E0391]: unsupported cyclic reference between types/traits detected | ||
--> $DIR/auto-trait-leak.rs:52:1 | ||
| | ||
52 | / fn cycle1() -> impl Clone { | ||
53 | | //~^ ERROR unsupported cyclic reference between types/traits detected | ||
54 | | //~| cyclic reference | ||
55 | | //~| NOTE the cycle begins when processing `cycle1`... | ||
... | | ||
60 | | Rc::new(Cell::new(5)) | ||
61 | | } | ||
| |_^ cyclic reference | ||
| | ||
note: the cycle begins when processing `cycle1`... | ||
--> $DIR/auto-trait-leak.rs:52:1 | ||
| | ||
52 | / fn cycle1() -> impl Clone { | ||
53 | | //~^ ERROR unsupported cyclic reference between types/traits detected | ||
54 | | //~| cyclic reference | ||
55 | | //~| NOTE the cycle begins when processing `cycle1`... | ||
... | | ||
60 | | Rc::new(Cell::new(5)) | ||
61 | | } | ||
| |_^ | ||
note: ...which then requires processing `cycle2::{{impl-Trait}}`... | ||
--> $DIR/auto-trait-leak.rs:63:16 | ||
| | ||
63 | fn cycle2() -> impl Clone { | ||
| ^^^^^^^^^^ | ||
note: ...which then requires processing `cycle2`... | ||
--> $DIR/auto-trait-leak.rs:63:1 | ||
| | ||
63 | / fn cycle2() -> impl Clone { | ||
64 | | //~^ NOTE ...which then requires processing `cycle2::{{impl-Trait}}`... | ||
65 | | //~| NOTE ...which then requires processing `cycle2`... | ||
66 | | send(cycle1().clone()); | ||
67 | | | ||
68 | | Rc::new(String::from("foo")) | ||
69 | | } | ||
| |_^ | ||
note: ...which then requires processing `cycle1::{{impl-Trait}}`... | ||
--> $DIR/auto-trait-leak.rs:52:16 | ||
| | ||
52 | fn cycle1() -> impl Clone { | ||
| ^^^^^^^^^^ | ||
= note: ...which then again requires processing `cycle1`, completing the cycle. | ||
|
||
error: aborting due to 3 previous errors | ||
|