Improve UI test coverage

With this commit I believe I've covered all `compile_error!`-based
errors.
This commit is contained in:
hcpl
2018-11-30 03:07:31 +02:00
parent 034db9f20f
commit 14a3da9b16
56 changed files with 529 additions and 1 deletions
@@ -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
+10
View File
@@ -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
+10
View File
@@ -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,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
+8
View File
@@ -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