aboutsummaryrefslogtreecommitdiff
path: root/tests/ui/pin_project
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/pin_project')
-rw-r--r--tests/ui/pin_project/conflict-drop.stderr4
-rw-r--r--tests/ui/pin_project/conflict-unpin.rs24
-rw-r--r--tests/ui/pin_project/conflict-unpin.stderr48
-rw-r--r--tests/ui/pin_project/invalid-bounds.stderr90
-rw-r--r--tests/ui/pin_project/invalid.stderr78
-rw-r--r--tests/ui/pin_project/overlapping_lifetime_names.stderr40
-rw-r--r--tests/ui/pin_project/overlapping_unpin_struct.stderr15
-rw-r--r--tests/ui/pin_project/packed.rs2
-rw-r--r--tests/ui/pin_project/packed.stderr136
-rw-r--r--tests/ui/pin_project/unpin_sneaky.stderr6
-rw-r--r--tests/ui/pin_project/unsupported.stderr80
11 files changed, 345 insertions, 178 deletions
diff --git a/tests/ui/pin_project/conflict-drop.stderr b/tests/ui/pin_project/conflict-drop.stderr
index 66872bd..8c870d7 100644
--- a/tests/ui/pin_project/conflict-drop.stderr
+++ b/tests/ui/pin_project/conflict-drop.stderr
@@ -1,4 +1,4 @@
-error[E0119]: conflicting implementations of trait `_::MustNotImplDrop` for type `Foo<_, _>`
+error[E0119]: conflicting implementations of trait `MustNotImplDrop` for type `Foo<_, _>`
--> tests/ui/pin_project/conflict-drop.rs:3:1
|
3 | / pin_project! { //~ ERROR E0119
@@ -13,4 +13,4 @@ error[E0119]: conflicting implementations of trait `_::MustNotImplDrop` for type
| |_first implementation here
| conflicting implementation for `Foo<_, _>`
|
- = note: this error originates in the macro `$crate::__pin_project_make_drop_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_make_drop_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/tests/ui/pin_project/conflict-unpin.rs b/tests/ui/pin_project/conflict-unpin.rs
index f702f06..bdab20f 100644
--- a/tests/ui/pin_project/conflict-unpin.rs
+++ b/tests/ui/pin_project/conflict-unpin.rs
@@ -37,4 +37,28 @@ pin_project! { //~ ERROR E0119
// conflicting implementations
impl<T: Unpin, U: Unpin> Unpin for Baz<T, U> {} // Conditional Unpin impl
+pin_project! { //~ ERROR E0119
+ #[project(!Unpin)]
+ struct Qux<T, U> {
+ #[pin]
+ future: T,
+ field: U,
+ }
+}
+
+// conflicting implementations
+impl<T, U> Unpin for Qux<T, U> {} // Non-conditional Unpin impl
+
+pin_project! { //~ ERROR E0119
+ #[project(!Unpin)]
+ struct Fred<T, U> {
+ #[pin]
+ future: T,
+ field: U,
+ }
+}
+
+// conflicting implementations
+impl<T: Unpin, U: Unpin> Unpin for Fred<T, U> {} // Conditional Unpin impl
+
fn main() {}
diff --git a/tests/ui/pin_project/conflict-unpin.stderr b/tests/ui/pin_project/conflict-unpin.stderr
index bd30faf..cf9818e 100644
--- a/tests/ui/pin_project/conflict-unpin.stderr
+++ b/tests/ui/pin_project/conflict-unpin.stderr
@@ -1,4 +1,4 @@
-error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Foo<_, _>`
+error[E0119]: conflicting implementations of trait `Unpin` for type `Foo<_, _>`
--> tests/ui/pin_project/conflict-unpin.rs:5:1
|
5 | / pin_project! { //~ ERROR E0119
@@ -11,11 +11,11 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type
| |_^ conflicting implementation for `Foo<_, _>`
...
14 | impl<T, U> Unpin for Foo<T, U> where T: Unpin {} // Conditional Unpin impl
- | --------------------------------------------- first implementation here
+ | ------------------------------ first implementation here
|
- = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
-error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Bar<_, _>`
+error[E0119]: conflicting implementations of trait `Unpin` for type `Bar<_, _>`
--> tests/ui/pin_project/conflict-unpin.rs:18:1
|
18 | / pin_project! { //~ ERROR E0119
@@ -30,9 +30,9 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type
27 | impl<T, U> Unpin for Bar<T, U> {} // Non-conditional Unpin impl
| ------------------------------ first implementation here
|
- = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
-error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type `Baz<_, _>`
+error[E0119]: conflicting implementations of trait `Unpin` for type `Baz<_, _>`
--> tests/ui/pin_project/conflict-unpin.rs:29:1
|
29 | / pin_project! { //~ ERROR E0119
@@ -47,4 +47,38 @@ error[E0119]: conflicting implementations of trait `std::marker::Unpin` for type
38 | impl<T: Unpin, U: Unpin> Unpin for Baz<T, U> {} // Conditional Unpin impl
| -------------------------------------------- first implementation here
|
- = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0119]: conflicting implementations of trait `Unpin` for type `Qux<_, _>`
+ --> tests/ui/pin_project/conflict-unpin.rs:40:1
+ |
+40 | / pin_project! { //~ ERROR E0119
+41 | | #[project(!Unpin)]
+42 | | struct Qux<T, U> {
+43 | | #[pin]
+... |
+46 | | }
+47 | | }
+ | |_^ conflicting implementation for `Qux<_, _>`
+...
+50 | impl<T, U> Unpin for Qux<T, U> {} // Non-conditional Unpin impl
+ | ------------------------------ first implementation here
+ |
+ = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0119]: conflicting implementations of trait `Unpin` for type `Fred<_, _>`
+ --> tests/ui/pin_project/conflict-unpin.rs:52:1
+ |
+52 | / pin_project! { //~ ERROR E0119
+53 | | #[project(!Unpin)]
+54 | | struct Fred<T, U> {
+55 | | #[pin]
+... |
+58 | | }
+59 | | }
+ | |_^ conflicting implementation for `Fred<_, _>`
+...
+62 | impl<T: Unpin, U: Unpin> Unpin for Fred<T, U> {} // Conditional Unpin impl
+ | --------------------------------------------- first implementation here
+ |
+ = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/tests/ui/pin_project/invalid-bounds.stderr b/tests/ui/pin_project/invalid-bounds.stderr
index 40e79bf..ae15b7a 100644
--- a/tests/ui/pin_project/invalid-bounds.stderr
+++ b/tests/ui/pin_project/invalid-bounds.stderr
@@ -3,12 +3,24 @@ error: no rules expected the token `:`
|
4 | struct Generics1<T: 'static : Sized> { //~ ERROR no rules expected the token `:`
| ^ no rules expected this token in macro call
+ |
+note: while trying to match `>`
+ --> src/lib.rs
+ |
+ | >)?
+ | ^
error: no rules expected the token `:`
--> tests/ui/pin_project/invalid-bounds.rs:10:33
|
10 | struct Generics2<T: 'static : ?Sized> { //~ ERROR no rules expected the token `:`
| ^ no rules expected this token in macro call
+ |
+note: while trying to match `>`
+ --> src/lib.rs
+ |
+ | >)?
+ | ^
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:15:1
@@ -24,7 +36,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:15:1
@@ -39,7 +51,8 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_expected one of `+`, `,`, `=`, or `>`
| unexpected token
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:15:1
@@ -55,7 +68,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:15:1
@@ -71,7 +84,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:21:1
@@ -87,7 +100,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:21:1
@@ -102,7 +115,8 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_expected one of `+`, `,`, `=`, or `>`
| unexpected token
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:21:1
@@ -118,7 +132,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:21:1
@@ -134,7 +148,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:27:1
@@ -150,7 +164,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:27:1
@@ -165,7 +179,8 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_expected one of `+`, `,`, `=`, or `>`
| unexpected token
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:27:1
@@ -181,7 +196,7 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, `=`, or `>`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:27:1
@@ -197,25 +212,43 @@ error: expected one of `+`, `,`, `=`, or `>`, found `:`
| |_unexpected token
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: no rules expected the token `Sized`
--> tests/ui/pin_project/invalid-bounds.rs:34:34
|
34 | struct Generics6<T: ?Sized : Sized> { //~ ERROR no rules expected the token `Sized`
| ^^^^^ no rules expected this token in macro call
+ |
+note: while trying to match meta-variable `$generics_lifetime_bound:lifetime`
+ --> src/lib.rs
+ |
+ | $(: $generics_lifetime_bound:lifetime)?
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: no rules expected the token `:`
--> tests/ui/pin_project/invalid-bounds.rs:42:20
|
42 | T: 'static : Sized //~ ERROR no rules expected the token `:`
| ^ no rules expected this token in macro call
+ |
+note: while trying to match `{`
+ --> src/lib.rs
+ |
+ | {
+ | ^
error: no rules expected the token `:`
--> tests/ui/pin_project/invalid-bounds.rs:51:20
|
51 | T: 'static : ?Sized //~ ERROR no rules expected the token `:`
| ^ no rules expected this token in macro call
+ |
+note: while trying to match `{`
+ --> src/lib.rs
+ |
+ | {
+ | ^
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:57:1
@@ -232,7 +265,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, or `{`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:57:1
@@ -249,7 +282,8 @@ error: expected one of `+`, `,`, or `{`, found `:`
| |_expected one of `+`, `,`, or `{`
| unexpected token
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:57:1
@@ -266,7 +300,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:57:1
@@ -283,7 +317,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:66:1
@@ -300,7 +334,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, or `{`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:66:1
@@ -317,7 +351,8 @@ error: expected one of `+`, `,`, or `{`, found `:`
| |_expected one of `+`, `,`, or `{`
| unexpected token
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:66:1
@@ -334,7 +369,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:66:1
@@ -351,7 +386,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:75:1
@@ -368,7 +403,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected one of `+`, `,`, or `{`, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:75:1
@@ -385,7 +420,8 @@ error: expected one of `+`, `,`, or `{`, found `:`
| |_expected one of `+`, `,`, or `{`
| unexpected token
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728>
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:75:1
@@ -402,7 +438,7 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: expected `{` after struct name, found `:`
--> tests/ui/pin_project/invalid-bounds.rs:75:1
@@ -419,10 +455,16 @@ error: expected `{` after struct name, found `:`
| |_expected `{` after struct name
| in this macro invocation
|
- = note: this error originates in the macro `$crate::__pin_project_parse_generics` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_parse_generics` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: no rules expected the token `Sized`
--> tests/ui/pin_project/invalid-bounds.rs:87:21
|
87 | T: ?Sized : Sized //~ ERROR no rules expected the token `Sized`
| ^^^^^ no rules expected this token in macro call
+ |
+note: while trying to match meta-variable `$where_clause_lifetime_bound:lifetime`
+ --> src/lib.rs
+ |
+ | $(: $where_clause_lifetime_bound:lifetime)?
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/pin_project/invalid.stderr b/tests/ui/pin_project/invalid.stderr
index 623a886..5d2e305 100644
--- a/tests/ui/pin_project/invalid.stderr
+++ b/tests/ui/pin_project/invalid.stderr
@@ -1,56 +1,50 @@
-error: no rules expected the token `struct`
- --> tests/ui/pin_project/invalid.rs:3:1
+error: no rules expected the token `(`
+ --> tests/ui/pin_project/invalid.rs:5:14
|
-3 | / pin_project! {
-4 | | struct A<T> {
-5 | | #[pin()] //~ ERROR no rules expected the token `(`
-6 | | pinned: T,
-7 | | }
-8 | | }
- | |_^ no rules expected this token in macro call
+5 | #[pin()] //~ ERROR no rules expected the token `(`
+ | ^ no rules expected this token in macro call
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: while trying to match `]`
+ --> src/lib.rs
+ |
+ | $(#[$pin:ident])?
+ | ^
-error: no rules expected the token `struct`
- --> tests/ui/pin_project/invalid.rs:3:1
+error: no rules expected the token `(`
+ --> tests/ui/pin_project/invalid.rs:5:14
+ |
+5 | #[pin()] //~ ERROR no rules expected the token `(`
+ | ^ no rules expected this token in macro call
|
-3 | / pin_project! {
-4 | | struct A<T> {
-5 | | #[pin()] //~ ERROR no rules expected the token `(`
-6 | | pinned: T,
-7 | | }
-8 | | }
- | |_^ no rules expected this token in macro call
+note: while trying to match `]`
+ --> src/lib.rs
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+ | $(#[$pin:ident])?
+ | ^
-error: no rules expected the token `struct`
- --> tests/ui/pin_project/invalid.rs:17:1
+error: no rules expected the token `#`
+ --> tests/ui/pin_project/invalid.rs:20:9
|
-17 | / pin_project! {
-18 | | struct C<T> {
-19 | | #[pin]
-20 | | #[pin] //~ ERROR no rules expected the token `#`
-21 | | pinned: T,
-22 | | }
-23 | | }
- | |_^ no rules expected this token in macro call
+20 | #[pin] //~ ERROR no rules expected the token `#`
+ | ^ no rules expected this token in macro call
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: while trying to match meta-variable `$field_vis:vis`
+ --> src/lib.rs
+ |
+ | $field_vis:vis $field:ident: $field_ty:ty
+ | ^^^^^^^^^^^^^^
-error: no rules expected the token `struct`
- --> tests/ui/pin_project/invalid.rs:17:1
+error: no rules expected the token `#`
+ --> tests/ui/pin_project/invalid.rs:20:9
+ |
+20 | #[pin] //~ ERROR no rules expected the token `#`
+ | ^ no rules expected this token in macro call
|
-17 | / pin_project! {
-18 | | struct C<T> {
-19 | | #[pin]
-20 | | #[pin] //~ ERROR no rules expected the token `#`
-21 | | pinned: T,
-22 | | }
-23 | | }
- | |_^ no rules expected this token in macro call
+note: while trying to match meta-variable `$field_vis:vis`
+ --> src/lib.rs
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+ | $field_vis:vis $field:ident: $field_ty:ty
+ | ^^^^^^^^^^^^^^
error: cannot find attribute `pin` in this scope
--> tests/ui/pin_project/invalid.rs:11:7
diff --git a/tests/ui/pin_project/overlapping_lifetime_names.stderr b/tests/ui/pin_project/overlapping_lifetime_names.stderr
index 35074d0..cfdffb2 100644
--- a/tests/ui/pin_project/overlapping_lifetime_names.stderr
+++ b/tests/ui/pin_project/overlapping_lifetime_names.stderr
@@ -1,38 +1,40 @@
-error[E0263]: lifetime name `'__pin` declared twice in the same scope
+error[E0403]: the name `'__pin` is already used for a generic parameter in this item's generic parameters
--> tests/ui/pin_project/overlapping_lifetime_names.rs:4:20
|
3 | / pin_project! { //~ ERROR E0263,E0496
4 | | pub struct Foo<'__pin, T> {
- | | ^^^^^^ declared twice
+ | | ^^^^^^ already used
5 | | #[pin]
6 | | field: &'__pin mut T,
7 | | }
8 | | }
- | |_- previous declaration here
+ | |_- first use of `'__pin`
-error[E0263]: lifetime name `'__pin` declared twice in the same scope
+error[E0403]: the name `'__pin` is already used for a generic parameter in this item's generic parameters
--> tests/ui/pin_project/overlapping_lifetime_names.rs:4:20
|
3 | / pin_project! { //~ ERROR E0263,E0496
4 | | pub struct Foo<'__pin, T> {
- | | ^^^^^^ declared twice
+ | | ^^^^^^ already used
5 | | #[pin]
6 | | field: &'__pin mut T,
7 | | }
8 | | }
- | |_- previous declaration here
+ | |_- first use of `'__pin`
-error[E0263]: lifetime name `'__pin` declared twice in the same scope
- --> tests/ui/pin_project/overlapping_lifetime_names.rs:4:20
+error[E0496]: lifetime name `'__pin` shadows a lifetime name that is already in scope
+ --> tests/ui/pin_project/overlapping_lifetime_names.rs:3:1
|
3 | / pin_project! { //~ ERROR E0263,E0496
4 | | pub struct Foo<'__pin, T> {
- | | ^^^^^^ declared twice
+ | | ------ first declared here
5 | | #[pin]
6 | | field: &'__pin mut T,
7 | | }
8 | | }
- | |_- previous declaration here
+ | |_^ lifetime `'__pin` already in scope
+ |
+ = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0496]: lifetime name `'__pin` shadows a lifetime name that is already in scope
--> tests/ui/pin_project/overlapping_lifetime_names.rs:3:1
@@ -46,30 +48,28 @@ error[E0496]: lifetime name `'__pin` shadows a lifetime name that is already in
8 | | }
| |_^ lifetime `'__pin` already in scope
|
- = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
-error[E0496]: lifetime name `'__pin` shadows a lifetime name that is already in scope
- --> tests/ui/pin_project/overlapping_lifetime_names.rs:3:1
+error[E0403]: the name `'__pin` is already used for a generic parameter in this item's generic parameters
+ --> tests/ui/pin_project/overlapping_lifetime_names.rs:4:20
|
3 | / pin_project! { //~ ERROR E0263,E0496
4 | | pub struct Foo<'__pin, T> {
- | | ------ first declared here
+ | | ^^^^^^ already used
5 | | #[pin]
6 | | field: &'__pin mut T,
7 | | }
8 | | }
- | |_^ lifetime `'__pin` already in scope
- |
- = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` (in Nightly builds, run with -Z macro-backtrace for more info)
+ | |_- first use of `'__pin`
-error[E0263]: lifetime name `'__pin` declared twice in the same scope
+error[E0403]: the name `'__pin` is already used for a generic parameter in this item's generic parameters
--> tests/ui/pin_project/overlapping_lifetime_names.rs:4:20
|
3 | / pin_project! { //~ ERROR E0263,E0496
4 | | pub struct Foo<'__pin, T> {
- | | ^^^^^^ declared twice
+ | | ^^^^^^ already used
5 | | #[pin]
6 | | field: &'__pin mut T,
7 | | }
8 | | }
- | |_- previous declaration here
+ | |_- first use of `'__pin`
diff --git a/tests/ui/pin_project/overlapping_unpin_struct.stderr b/tests/ui/pin_project/overlapping_unpin_struct.stderr
index 303e7cb..fd7d64f 100644
--- a/tests/ui/pin_project/overlapping_unpin_struct.stderr
+++ b/tests/ui/pin_project/overlapping_unpin_struct.stderr
@@ -1,11 +1,12 @@
error[E0277]: `PhantomPinned` cannot be unpinned
- --> tests/ui/pin_project/overlapping_unpin_struct.rs:19:5
+ --> tests/ui/pin_project/overlapping_unpin_struct.rs:19:16
|
19 | is_unpin::<Foo<PhantomPinned>>(); //~ ERROR E0277
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `_::__Origin<'_, PhantomPinned>`, the trait `Unpin` is not implemented for `PhantomPinned`
+ | ^^^^^^^^^^^^^^^^^^ within `_::__Origin<'_, PhantomPinned>`, the trait `Unpin` is not implemented for `PhantomPinned`
|
- = note: consider using `Box::pin`
-note: required because it appears within the type `_::__Origin<'_, PhantomPinned>`
+ = note: consider using the `pin!` macro
+ consider using `Box::pin` if you need to access the pinned value outside of the current scope
+note: required because it appears within the type `__Origin<'_, PhantomPinned>`
--> tests/ui/pin_project/overlapping_unpin_struct.rs:5:1
|
5 | / pin_project! {
@@ -15,7 +16,7 @@ note: required because it appears within the type `_::__Origin<'_, PhantomPinned
9 | | }
10 | | }
| |_^
-note: required because of the requirements on the impl of `Unpin` for `Foo<PhantomPinned>`
+note: required for `Foo<PhantomPinned>` to implement `Unpin`
--> tests/ui/pin_project/overlapping_unpin_struct.rs:5:1
|
5 | / pin_project! {
@@ -24,10 +25,10 @@ note: required because of the requirements on the impl of `Unpin` for `Foo<Phant
8 | | inner: T,
9 | | }
10 | | }
- | |_^
+ | |_^ unsatisfied trait bound introduced here
note: required by a bound in `is_unpin`
--> tests/ui/pin_project/overlapping_unpin_struct.rs:16:16
|
16 | fn is_unpin<T: Unpin>() {}
| ^^^^^ required by this bound in `is_unpin`
- = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_make_unpin_impl` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/tests/ui/pin_project/packed.rs b/tests/ui/pin_project/packed.rs
index 50afb11..507a038 100644
--- a/tests/ui/pin_project/packed.rs
+++ b/tests/ui/pin_project/packed.rs
@@ -1,5 +1,3 @@
-#![allow(unaligned_references)]
-
use pin_project_lite::pin_project;
pin_project! { //~ ERROR reference to packed field is unaligned
diff --git a/tests/ui/pin_project/packed.stderr b/tests/ui/pin_project/packed.stderr
index 81fb4f1..710ec08 100644
--- a/tests/ui/pin_project/packed.stderr
+++ b/tests/ui/pin_project/packed.stderr
@@ -1,57 +1,101 @@
-error: reference to packed field is unaligned
- --> tests/ui/pin_project/packed.rs:5:1
+error[E0793]: reference to packed field is unaligned
+ --> tests/ui/pin_project/packed.rs:3:1
+ |
+3 | / pin_project! { //~ ERROR reference to packed field is unaligned
+4 | | #[repr(packed, C)]
+5 | | struct Packed {
+6 | | #[pin]
+7 | | field: u16,
+8 | | }
+9 | | }
+ | |_^
+ |
+ = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses
+ = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+ = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
+ = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0793]: reference to packed field is unaligned
+ --> tests/ui/pin_project/packed.rs:3:1
+ |
+3 | / pin_project! { //~ ERROR reference to packed field is unaligned
+4 | | #[repr(packed, C)]
+5 | | struct Packed {
+6 | | #[pin]
+7 | | field: u16,
+8 | | }
+9 | | }
+ | |_^
+ |
+ = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses
+ = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+ = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
+ = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0793]: reference to packed field is unaligned
+ --> tests/ui/pin_project/packed.rs:3:1
+ |
+3 | / pin_project! { //~ ERROR reference to packed field is unaligned
+4 | | #[repr(packed, C)]
+5 | | struct Packed {
+6 | | #[pin]
+7 | | field: u16,
+8 | | }
+9 | | }
+ | |_^
+ |
+ = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses
+ = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+ = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
+ = note: this error originates in the macro `$crate::__pin_project_constant` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0793]: reference to packed field is unaligned
+ --> tests/ui/pin_project/packed.rs:11:1
|
-5 | / pin_project! { //~ ERROR reference to packed field is unaligned
-6 | | #[repr(packed, C)]
-7 | | struct Packed {
-8 | | #[pin]
-9 | | field: u16,
-10 | | }
-11 | | }
+11 | / pin_project! { //~ ERROR reference to packed field is unaligned
+12 | | #[repr(packed(2))]
+13 | | struct PackedN {
+14 | | #[pin]
+15 | | field: u32,
+16 | | }
+17 | | }
| |_^
|
-note: the lint level is defined here
- --> tests/ui/pin_project/packed.rs:5:1
- |
-5 | / pin_project! { //~ ERROR reference to packed field is unaligned
-6 | | #[repr(packed, C)]
-7 | | struct Packed {
-8 | | #[pin]
-9 | | field: u16,
-10 | | }
-11 | | }
- | |_^
- = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
- = note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
- = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+ = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses
+ = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
- = note: this error originates in the macro `$crate::__pin_project_constant` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
-error: reference to packed field is unaligned
- --> tests/ui/pin_project/packed.rs:13:1
+error[E0793]: reference to packed field is unaligned
+ --> tests/ui/pin_project/packed.rs:11:1
|
-13 | / pin_project! { //~ ERROR reference to packed field is unaligned
-14 | | #[repr(packed(2))]
-15 | | struct PackedN {
-16 | | #[pin]
-17 | | field: u32,
-18 | | }
-19 | | }
+11 | / pin_project! { //~ ERROR reference to packed field is unaligned
+12 | | #[repr(packed(2))]
+13 | | struct PackedN {
+14 | | #[pin]
+15 | | field: u32,
+16 | | }
+17 | | }
| |_^
|
-note: the lint level is defined here
- --> tests/ui/pin_project/packed.rs:13:1
+ = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses
+ = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+ = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
+ = note: this error originates in the macro `$crate::__pin_project_struct_make_proj_method` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0793]: reference to packed field is unaligned
+ --> tests/ui/pin_project/packed.rs:11:1
|
-13 | / pin_project! { //~ ERROR reference to packed field is unaligned
-14 | | #[repr(packed(2))]
-15 | | struct PackedN {
-16 | | #[pin]
-17 | | field: u32,
-18 | | }
-19 | | }
+11 | / pin_project! { //~ ERROR reference to packed field is unaligned
+12 | | #[repr(packed(2))]
+13 | | struct PackedN {
+14 | | #[pin]
+15 | | field: u32,
+16 | | }
+17 | | }
| |_^
- = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
- = note: for more information, see issue #82523 <https://github.com/rust-lang/rust/issues/82523>
- = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+ |
+ = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses
+ = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
- = note: this error originates in the macro `$crate::__pin_project_constant` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::__pin_project_constant` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/tests/ui/pin_project/unpin_sneaky.stderr b/tests/ui/pin_project/unpin_sneaky.stderr
index 4eb6eff..aadd1f9 100644
--- a/tests/ui/pin_project/unpin_sneaky.stderr
+++ b/tests/ui/pin_project/unpin_sneaky.stderr
@@ -3,9 +3,3 @@ error[E0412]: cannot find type `__Origin` in this scope
|
10 | impl Unpin for __Origin {} //~ ERROR E0412,E0321
| ^^^^^^^^ not found in this scope
-
-error[E0321]: cross-crate traits with a default impl, like `Unpin`, can only be implemented for a struct/enum type, not `[type error]`
- --> tests/ui/pin_project/unpin_sneaky.rs:10:1
- |
-10 | impl Unpin for __Origin {} //~ ERROR E0412,E0321
- | ^^^^^^^^^^^^^^^^^^^^^^^ can't implement cross-crate trait with a default impl for non-struct/enum type
diff --git a/tests/ui/pin_project/unsupported.stderr b/tests/ui/pin_project/unsupported.stderr
index a7d215a..f1d3b9c 100644
--- a/tests/ui/pin_project/unsupported.stderr
+++ b/tests/ui/pin_project/unsupported.stderr
@@ -6,7 +6,12 @@ error: no rules expected the token `}`
5 | | }
| |_^ no rules expected this token in macro call
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: while trying to match meta-variable `$field_vis:vis`
+ --> src/lib.rs
+ |
+ | $field_vis:vis $field:ident: $field_ty:ty
+ | ^^^^^^^^^^^^^^
+ = note: this error originates in the macro `$crate::__pin_project_expand` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: no rules expected the token `}`
--> tests/ui/pin_project/unsupported.rs:3:1
@@ -16,43 +21,60 @@ error: no rules expected the token `}`
5 | | }
| |_^ no rules expected this token in macro call
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: while trying to match meta-variable `$field_vis:vis`
+ --> src/lib.rs
+ |
+ | $field_vis:vis $field:ident: $field_ty:ty
+ | ^^^^^^^^^^^^^^
+ = note: this error originates in the macro `$crate::__pin_project_expand` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: no rules expected the token `(`
--> tests/ui/pin_project/unsupported.rs:8:19
|
8 | struct Struct2(); //~ ERROR no rules expected the token `(`
| ^ no rules expected this token in macro call
+ |
+note: while trying to match `{`
+ --> src/lib.rs
+ |
+ | {
+ | ^
error: no rules expected the token `;`
--> tests/ui/pin_project/unsupported.rs:12:19
|
12 | struct Struct3; //~ ERROR no rules expected the token `;`
| ^ no rules expected this token in macro call
+ |
+note: while trying to match `{`
+ --> src/lib.rs
+ |
+ | {
+ | ^
-error: no rules expected the token `enum`
- --> tests/ui/pin_project/unsupported.rs:15:1
+error: no rules expected the token `(`
+ --> tests/ui/pin_project/unsupported.rs:17:10
|
-15 | / pin_project! {
-16 | | enum Enum { //~ ERROR no rules expected the token `enum`
-17 | | A(u8)
-18 | | }
-19 | | }
- | |_^ no rules expected this token in macro call
+17 | A(u8)
+ | ^ no rules expected this token in macro call
+ |
+note: while trying to match `}`
+ --> src/lib.rs
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+ | }
+ | ^
-error: no rules expected the token `enum`
- --> tests/ui/pin_project/unsupported.rs:15:1
+error: no rules expected the token `(`
+ --> tests/ui/pin_project/unsupported.rs:17:10
|
-15 | / pin_project! {
-16 | | enum Enum { //~ ERROR no rules expected the token `enum`
-17 | | A(u8)
-18 | | }
-19 | | }
- | |_^ no rules expected this token in macro call
+17 | A(u8)
+ | ^ no rules expected this token in macro call
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: while trying to match `}`
+ --> src/lib.rs
+ |
+ | }
+ | ^
error: no rules expected the token `union`
--> tests/ui/pin_project/unsupported.rs:21:1
@@ -64,7 +86,14 @@ error: no rules expected the token `union`
25 | | }
| |_^ no rules expected this token in macro call
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: while trying to match `struct`
+ --> src/lib.rs
+ |
+ | [$(#[$attrs:meta])* $vis:vis struct $ident:ident]
+ | ^^^^^^
+ = note: captured metavariables except for `:tt`, `:ident` and `:lifetime` cannot be compared to other tokens
+ = note: see <https://doc.rust-lang.org/nightly/reference/macros-by-example.html#forwarding-a-matched-fragment> for more information
+ = note: this error originates in the macro `$crate::__pin_project_expand` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)
error: no rules expected the token `union`
--> tests/ui/pin_project/unsupported.rs:21:1
@@ -76,4 +105,11 @@ error: no rules expected the token `union`
25 | | }
| |_^ no rules expected this token in macro call
|
- = note: this error originates in the macro `$crate::__pin_project_expand` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: while trying to match `struct`
+ --> src/lib.rs
+ |
+ | [$(#[$attrs:meta])* $vis:vis struct $ident:ident]
+ | ^^^^^^
+ = note: captured metavariables except for `:tt`, `:ident` and `:lifetime` cannot be compared to other tokens
+ = note: see <https://doc.rust-lang.org/nightly/reference/macros-by-example.html#forwarding-a-matched-fragment> for more information
+ = note: this error originates in the macro `$crate::__pin_project_expand` which comes from the expansion of the macro `pin_project` (in Nightly builds, run with -Z macro-backtrace for more info)