mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-23 01:18:02 +00:00
Improve UI test coverage
With this commit I believe I've covered all `compile_error!`-based errors.
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(default = "default_e")]
|
||||
enum E {
|
||||
S { f: u8 },
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: #[serde(default = "...")] can only be used on structs with named fields
|
||||
--> $DIR/enum_path.rs:6:1
|
||||
|
|
||||
6 | enum E {
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(default = "default_t")]
|
||||
struct T(u8, u8);
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: #[serde(default = "...")] can only be used on structs with named fields
|
||||
--> $DIR/nameless_struct_fields_path.rs:6:9
|
||||
|
|
||||
6 | struct T(u8, u8);
|
||||
| ^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(content = "c")]
|
||||
enum E {
|
||||
A(u8),
|
||||
B(String),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: #[serde(tag = "...", content = "...")] must be used together
|
||||
--> $DIR/content-no-tag.rs:5:9
|
||||
|
|
||||
5 | #[serde(content = "c")]
|
||||
| ^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(untagged)]
|
||||
#[serde(tag = "t", content = "c")]
|
||||
enum E {
|
||||
A(u8),
|
||||
B(String),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,20 @@
|
||||
error: untagged enum cannot have #[serde(tag = "...", content = "...")]
|
||||
--> $DIR/untagged-and-adjacent.rs:5:9
|
||||
|
|
||||
5 | #[serde(untagged)]
|
||||
| ^^^^^^^^
|
||||
|
||||
error: untagged enum cannot have #[serde(tag = "...", content = "...")]
|
||||
--> $DIR/untagged-and-adjacent.rs:6:9
|
||||
|
|
||||
6 | #[serde(tag = "t", content = "c")]
|
||||
| ^^^
|
||||
|
||||
error: untagged enum cannot have #[serde(tag = "...", content = "...")]
|
||||
--> $DIR/untagged-and-adjacent.rs:6:20
|
||||
|
|
||||
6 | #[serde(tag = "t", content = "c")]
|
||||
| ^^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(untagged)]
|
||||
#[serde(content = "c")]
|
||||
enum E {
|
||||
A(u8),
|
||||
B(String),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,14 @@
|
||||
error: untagged enum cannot have #[serde(content = "...")]
|
||||
--> $DIR/untagged-and-content.rs:5:9
|
||||
|
|
||||
5 | #[serde(untagged)]
|
||||
| ^^^^^^^^
|
||||
|
||||
error: untagged enum cannot have #[serde(content = "...")]
|
||||
--> $DIR/untagged-and-content.rs:6:9
|
||||
|
|
||||
6 | #[serde(content = "c")]
|
||||
| ^^^^^^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(rename = true)]
|
||||
boolean: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: expected serde rename attribute to be a string: `rename = "..."`
|
||||
--> $DIR/boolean.rs:6:22
|
||||
|
|
||||
6 | #[serde(rename = true)]
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(rename = b'a')]
|
||||
byte_character: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: expected serde rename attribute to be a string: `rename = "..."`
|
||||
--> $DIR/byte_character.rs:6:22
|
||||
|
|
||||
6 | #[serde(rename = b'a')]
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(rename = b"byte string")]
|
||||
byte_string: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: expected serde rename attribute to be a string: `rename = "..."`
|
||||
--> $DIR/byte_string.rs:6:22
|
||||
|
|
||||
6 | #[serde(rename = b"byte string")]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(rename = 'a')]
|
||||
character: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: expected serde rename attribute to be a string: `rename = "..."`
|
||||
--> $DIR/character.rs:6:22
|
||||
|
|
||||
6 | #[serde(rename = 'a')]
|
||||
| ^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(rename = 3.14)]
|
||||
float: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: expected serde rename attribute to be a string: `rename = "..."`
|
||||
--> $DIR/float.rs:6:22
|
||||
|
|
||||
6 | #[serde(rename = 3.14)]
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(rename = 100)]
|
||||
integer: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: expected serde rename attribute to be a string: `rename = "..."`
|
||||
--> $DIR/integer.rs:6:22
|
||||
|
|
||||
6 | #[serde(rename = 100)]
|
||||
| ^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(untagged)]
|
||||
enum F {
|
||||
#[serde(other)]
|
||||
Other,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,9 @@
|
||||
error: #[serde(other)] cannot appear on untagged enum
|
||||
--> $DIR/other_untagged.rs:7:5
|
||||
|
|
||||
7 | / #[serde(other)]
|
||||
8 | | Other,
|
||||
| |_________^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[serde(variant_identifier)]
|
||||
enum F {
|
||||
#[serde(other)]
|
||||
Other,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,9 @@
|
||||
error: #[serde(other)] may not be used on a variant identifier
|
||||
--> $DIR/other_variant.rs:7:5
|
||||
|
|
||||
7 | / #[serde(other)]
|
||||
8 | | Other,
|
||||
| |_________^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(bound(unknown))]
|
||||
x: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: malformed bound attribute, expected `bound(serialize = ..., deserialize = ...)`
|
||||
--> $DIR/bound.rs:6:19
|
||||
|
|
||||
6 | #[serde(bound(unknown))]
|
||||
| ^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde(rename(unknown))]
|
||||
x: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: malformed rename attribute, expected `rename(serialize = ..., deserialize = ...)`
|
||||
--> $DIR/rename.rs:6:20
|
||||
|
|
||||
6 | #[serde(rename(unknown))]
|
||||
| ^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
error: field identifiers cannot be serialized
|
||||
--> $DIR/serialize.rs:5:1
|
||||
--> $DIR/serialize_field_identifier.rs:5:1
|
||||
|
|
||||
5 | / #[serde(field_identifier)]
|
||||
6 | | enum F {
|
||||
@@ -0,0 +1,11 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(variant_identifier)]
|
||||
enum F {
|
||||
A,
|
||||
B,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,12 @@
|
||||
error: variant identifiers cannot be serialized
|
||||
--> $DIR/serialize_variant_identifier.rs:5:1
|
||||
|
|
||||
5 | / #[serde(variant_identifier)]
|
||||
6 | | enum F {
|
||||
7 | | A,
|
||||
8 | | B,
|
||||
9 | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(rename_all = "abc")]
|
||||
struct S {
|
||||
name: u8,
|
||||
long_name: u8,
|
||||
very_long_name: u8,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: unknown rename rule for #[serde(rename_all = "abc")]
|
||||
--> $DIR/container_unknown_rename_rule.rs:5:22
|
||||
|
|
||||
5 | #[serde(rename_all = "abc")]
|
||||
| ^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
enum S {
|
||||
#[serde(rename_all = "abc")]
|
||||
V {
|
||||
name: u8,
|
||||
long_name: u8,
|
||||
very_long_name: u8,
|
||||
},
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: unknown rename rule for #[serde(rename_all = "abc")]
|
||||
--> $DIR/variant_unknown_rename_rule.rs:6:26
|
||||
|
|
||||
6 | #[serde(rename_all = "abc")]
|
||||
| ^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(transparent)]
|
||||
enum E {}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,9 @@
|
||||
error: #[serde(transparent)] is not allowed on an enum
|
||||
--> $DIR/enum.rs:5:1
|
||||
|
|
||||
5 | / #[serde(transparent)]
|
||||
6 | | enum E {}
|
||||
| |_________^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(transparent)]
|
||||
struct S;
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,9 @@
|
||||
error: #[serde(transparent)] is not allowed on a unit struct
|
||||
--> $DIR/unit_struct.rs:5:1
|
||||
|
|
||||
5 | / #[serde(transparent)]
|
||||
6 | | struct S;
|
||||
| |_________^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(transparent, from = "u64")]
|
||||
struct S {
|
||||
a: u8,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,11 @@
|
||||
error: #[serde(transparent)] is not allowed with #[serde(from = "...")]
|
||||
--> $DIR/with_from.rs:5:1
|
||||
|
|
||||
5 | / #[serde(transparent, from = "u64")]
|
||||
6 | | struct S {
|
||||
7 | | a: u8,
|
||||
8 | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(transparent, into = "u64")]
|
||||
struct S {
|
||||
a: u8,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,11 @@
|
||||
error: #[serde(transparent)] is not allowed with #[serde(into = "...")]
|
||||
--> $DIR/with_into.rs:5:1
|
||||
|
|
||||
5 | / #[serde(transparent, into = "u64")]
|
||||
6 | | struct S {
|
||||
7 | | a: u8,
|
||||
8 | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde("literal")]
|
||||
struct S;
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: unexpected literal in serde container attribute
|
||||
--> $DIR/container.rs:5:9
|
||||
|
|
||||
5 | #[serde("literal")]
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct S {
|
||||
#[serde("literal")]
|
||||
x: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: unexpected literal in serde field attribute
|
||||
--> $DIR/field.rs:6:13
|
||||
|
|
||||
6 | #[serde("literal")]
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Serialize)]
|
||||
enum E {
|
||||
#[serde("literal")]
|
||||
V,
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
error: unexpected literal in serde variant attribute
|
||||
--> $DIR/variant.rs:6:13
|
||||
|
|
||||
6 | #[serde("literal")]
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
union Union {
|
||||
x: u8,
|
||||
y: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,11 @@
|
||||
error: Serde does not support derive for unions
|
||||
--> $DIR/union_de.rs:5:1
|
||||
|
|
||||
5 | / union Union {
|
||||
6 | | x: u8,
|
||||
7 | | y: (),
|
||||
8 | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
union Union {
|
||||
x: u8,
|
||||
y: (),
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,11 @@
|
||||
error: Serde does not support derive for unions
|
||||
--> $DIR/union_ser.rs:5:1
|
||||
|
|
||||
5 | / union Union {
|
||||
6 | | x: u8,
|
||||
7 | | y: (),
|
||||
8 | | }
|
||||
| |_^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
Reference in New Issue
Block a user