error: cannot derive FromPyObject for empty structs and variants
 --> tests/ui/invalid_frompy_derive.rs:4:11
  |
4 | struct Foo();
  |           ^^

error: cannot derive FromPyObject for empty structs and variants
 --> tests/ui/invalid_frompy_derive.rs:7:13
  |
7 | struct Foo2 {}
  |             ^^

error: cannot derive FromPyObject for empty enum
  --> tests/ui/invalid_frompy_derive.rs:10:6
   |
10 | enum EmptyEnum {}
   |      ^^^^^^^^^

error: cannot derive FromPyObject for empty structs and variants
  --> tests/ui/invalid_frompy_derive.rs:14:15
   |
14 |     EmptyTuple(),
   |               ^^

error: cannot derive FromPyObject for empty structs and variants
  --> tests/ui/invalid_frompy_derive.rs:20:17
   |
20 |     EmptyStruct {},
   |                 ^^

error: cannot derive FromPyObject for empty structs and variants
  --> tests/ui/invalid_frompy_derive.rs:26:27
   |
26 | struct EmptyTransparentTup();
   |                           ^^

error: cannot derive FromPyObject for empty structs and variants
  --> tests/ui/invalid_frompy_derive.rs:30:31
   |
30 | struct EmptyTransparentStruct {}
   |                               ^^

error: cannot derive FromPyObject for empty structs and variants
  --> tests/ui/invalid_frompy_derive.rs:35:15
   |
35 |     EmptyTuple(),
   |               ^^

error: cannot derive FromPyObject for empty structs and variants
  --> tests/ui/invalid_frompy_derive.rs:42:17
   |
42 |     EmptyStruct {},
   |                 ^^

error: transparent structs and variants can only have 1 field
  --> tests/ui/invalid_frompy_derive.rs:48:35
   |
48 | struct TransparentTupTooManyFields(String, String);
   |                                   ^^^^^^^^^^^^^^^^

error: transparent structs and variants can only have 1 field
  --> tests/ui/invalid_frompy_derive.rs:52:39
   |
52 |   struct TransparentStructTooManyFields {
   |  _______________________________________^
53 | |     foo: String,
54 | |     bar: String,
55 | | }
   | |_^

error: transparent structs and variants can only have 1 field
  --> tests/ui/invalid_frompy_derive.rs:60:15
   |
60 |     EmptyTuple(String, String),
   |               ^^^^^^^^^^^^^^^^

error: transparent structs and variants can only have 1 field
  --> tests/ui/invalid_frompy_derive.rs:67:17
   |
67 |       EmptyStruct {
   |  _________________^
68 | |         foo: String,
69 | |         bar: String,
70 | |     },
   | |_____^

error: expected one of: `attribute`, `item`, `from_py_with`
  --> tests/ui/invalid_frompy_derive.rs:76:12
   |
76 |     #[pyo3(attr)]
   |            ^^^^

error: expected string literal
  --> tests/ui/invalid_frompy_derive.rs:82:22
   |
82 |     #[pyo3(attribute(1))]
   |                      ^

error: expected at most one argument: `attribute` or `attribute("name")`
  --> tests/ui/invalid_frompy_derive.rs:88:25
   |
88 |     #[pyo3(attribute("a", "b"))]
   |                         ^

error: attribute name cannot be empty
  --> tests/ui/invalid_frompy_derive.rs:94:22
   |
94 |     #[pyo3(attribute(""))]
   |                      ^^

error: unexpected end of input, expected string literal
   --> tests/ui/invalid_frompy_derive.rs:100:22
    |
100 |     #[pyo3(attribute())]
    |                      ^

error: expected at most one argument: `item` or `item(key)`
   --> tests/ui/invalid_frompy_derive.rs:106:20
    |
106 |     #[pyo3(item("a", "b"))]
    |                    ^

error: unexpected end of input, expected literal
   --> tests/ui/invalid_frompy_derive.rs:112:17
    |
112 |     #[pyo3(item())]
    |                 ^

error: only one of `attribute` or `item` can be provided
   --> tests/ui/invalid_frompy_derive.rs:118:5
    |
118 |     #[pyo3(item, attribute)]
    |     ^

error: expected one of: `transparent`, `annotation`, `crate`
   --> tests/ui/invalid_frompy_derive.rs:123:8
    |
123 | #[pyo3(unknown = "should not work")]
    |        ^^^^^^^

error: `annotation` is unsupported for structs
   --> tests/ui/invalid_frompy_derive.rs:129:21
    |
129 | #[pyo3(annotation = "should not work")]
    |                     ^^^^^^^^^^^^^^^^^

error: expected string literal
   --> tests/ui/invalid_frompy_derive.rs:136:25
    |
136 |     #[pyo3(annotation = 1)]
    |                         ^

error: FromPyObject can be derived with at most one lifetime parameter
   --> tests/ui/invalid_frompy_derive.rs:141:22
    |
141 | enum TooManyLifetimes<'a, 'b> {
    |                      ^

error: #[derive(FromPyObject)] is not supported for unions
   --> tests/ui/invalid_frompy_derive.rs:147:1
    |
147 | union Union {
    | ^^^^^

error: cannot derive FromPyObject for empty structs and variants
   --> tests/ui/invalid_frompy_derive.rs:151:10
    |
151 | #[derive(FromPyObject)]
    |          ^^^^^^^^^^^^
    |
    = note: this error originates in the derive macro `FromPyObject` (in Nightly builds, run with -Z macro-backtrace for more info)

error: expected `=`
   --> tests/ui/invalid_frompy_derive.rs:158:24
    |
158 |     #[pyo3(from_py_with)]
    |                        ^

error: expected string literal
   --> tests/ui/invalid_frompy_derive.rs:164:27
    |
164 |     #[pyo3(from_py_with = func)]
    |                           ^^^^
