diff --git a/test_suite/tests/compile-fail/transparent/at_most_one.rs b/test_suite/tests/compile-fail/transparent/at_most_one.rs new file mode 100644 index 00000000..d5b7dae8 --- /dev/null +++ b/test_suite/tests/compile-fail/transparent/at_most_one.rs @@ -0,0 +1,20 @@ +// Copyright 2018 Serde Developers +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#[macro_use] +extern crate serde_derive; + +#[derive(Serialize)] //~ ERROR: proc-macro derive panicked +#[serde(transparent)] +struct S { + //~^^^ HELP: #[serde(transparent)] requires struct to have at most one transparent field + a: u8, + b: u8, +} + +fn main() {} diff --git a/test_suite/tests/compile-fail/transparent/de_at_least_one.rs b/test_suite/tests/compile-fail/transparent/de_at_least_one.rs new file mode 100644 index 00000000..a1abe474 --- /dev/null +++ b/test_suite/tests/compile-fail/transparent/de_at_least_one.rs @@ -0,0 +1,22 @@ +// Copyright 2018 Serde Developers +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#[macro_use] +extern crate serde_derive; + +#[derive(Deserialize)] //~ ERROR: proc-macro derive panicked +#[serde(transparent)] +struct S { + //~^^^ HELP: #[serde(transparent)] requires at least one field that is neither skipped nor has a default + #[serde(skip)] + a: u8, + #[serde(default)] + b: u8, +} + +fn main() {} diff --git a/test_suite/tests/compile-fail/transparent/ser_at_least_one.rs b/test_suite/tests/compile-fail/transparent/ser_at_least_one.rs new file mode 100644 index 00000000..19dd59c1 --- /dev/null +++ b/test_suite/tests/compile-fail/transparent/ser_at_least_one.rs @@ -0,0 +1,20 @@ +// Copyright 2018 Serde Developers +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#[macro_use] +extern crate serde_derive; + +#[derive(Serialize)] //~ ERROR: proc-macro derive panicked +#[serde(transparent)] +struct S { + //~^^^ HELP: #[serde(transparent)] requires at least one field that is not skipped + #[serde(skip)] + a: u8, +} + +fn main() {}