diff --git a/test_suite/tests/compile-fail/remote/bad_getter.rs b/test_suite/tests/compile-fail/remote/bad_getter.rs new file mode 100644 index 00000000..3495a10b --- /dev/null +++ b/test_suite/tests/compile-fail/remote/bad_getter.rs @@ -0,0 +1,17 @@ +#[macro_use] +extern crate serde_derive; + +mod remote { + pub struct S { + a: u8, + } +} + +#[derive(Serialize)] //~ ERROR: proc-macro derive panicked +#[serde(remote = "remote::S")] +struct S { + #[serde(getter = "~~~")] //~^^^ HELP: failed to parse path: "~~~" + a: u8, +} + +fn main() {} diff --git a/test_suite/tests/compile-fail/remote/bad_remote.rs b/test_suite/tests/compile-fail/remote/bad_remote.rs new file mode 100644 index 00000000..5ef17670 --- /dev/null +++ b/test_suite/tests/compile-fail/remote/bad_remote.rs @@ -0,0 +1,16 @@ +#[macro_use] +extern crate serde_derive; + +mod remote { + pub struct S { + a: u8, + } +} + +#[derive(Serialize)] //~ ERROR: proc-macro derive panicked +#[serde(remote = "~~~")] //~^ HELP: failed to parse path: "~~~" +struct S { + a: u8, +} + +fn main() {} diff --git a/test_suite/tests/compile-fail/remote/enum_getter.rs b/test_suite/tests/compile-fail/remote/enum_getter.rs new file mode 100644 index 00000000..e012cbe1 --- /dev/null +++ b/test_suite/tests/compile-fail/remote/enum_getter.rs @@ -0,0 +1,19 @@ +#[macro_use] +extern crate serde_derive; + +mod remote { + pub enum E { + A { a: u8 } + } +} + +#[derive(Serialize)] //~ ERROR: proc-macro derive panicked +#[serde(remote = "remote::E")] +pub enum E { + A { + #[serde(getter = "get_a")] //~^^^^ HELP: #[serde(getter = "...")] is not allowed in an enum + a: u8, + } +} + +fn main() {} diff --git a/test_suite/tests/compile-fail/remote/nonremote_getter.rs b/test_suite/tests/compile-fail/remote/nonremote_getter.rs new file mode 100644 index 00000000..11271e5a --- /dev/null +++ b/test_suite/tests/compile-fail/remote/nonremote_getter.rs @@ -0,0 +1,16 @@ +#[macro_use] +extern crate serde_derive; + +#[derive(Serialize)] //~ ERROR: proc-macro derive panicked +struct S { + #[serde(getter = "S::get")] //~^^ HELP: #[serde(getter = "...")] can only be used in structs that have #[serde(remote = "...")] + a: u8, +} + +impl S { + fn get(&self) -> u8 { + self.a + } +} + +fn main() {}