diff --git a/test_suite/tests/test_de.rs b/test_suite/tests/test_de.rs index 6c1f3d82..b4ca2e19 100644 --- a/test_suite/tests/test_de.rs +++ b/test_suite/tests/test_de.rs @@ -7,6 +7,7 @@ // except according to those terms. #![cfg_attr(feature = "cargo-clippy", allow(decimal_literal_representation))] +#![cfg_attr(feature = "unstable", feature(never_type))] #[macro_use] extern crate serde_derive; @@ -984,6 +985,16 @@ declare_tests! { } } +#[cfg(feature = "unstable")] +declare_tests! { + test_never_result { + Ok::(0) => &[ + Token::NewtypeVariant { name: "Result", variant: "Ok" }, + Token::U8(0), + ], + } +} + #[cfg(unix)] #[test] fn test_osstring() { @@ -1051,6 +1062,20 @@ fn test_cstr_internal_null_end() { ); } +#[cfg(feature = "unstable")] +#[test] +fn test_never_type() { + assert_de_tokens_error::(&[], "cannot deserialize `!`"); + + assert_de_tokens_error::>( + &[Token::NewtypeVariant { + name: "Result", + variant: "Err", + }], + "cannot deserialize `!`", + ); +} + declare_error_tests! { test_unknown_field { &[ diff --git a/test_suite/tests/test_ser.rs b/test_suite/tests/test_ser.rs index 21c641a7..0d4a35de 100644 --- a/test_suite/tests/test_ser.rs +++ b/test_suite/tests/test_ser.rs @@ -6,6 +6,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +#![cfg_attr(feature = "unstable", feature(never_type))] + #[macro_use] extern crate serde_derive; @@ -548,6 +550,16 @@ declare_tests! { } } +#[cfg(feature = "unstable")] +declare_tests! { + test_never_result { + Ok::(0) => &[ + Token::NewtypeVariant { name: "Result", variant: "Ok" }, + Token::U8(0), + ], + } +} + #[test] #[cfg(unix)] fn test_cannot_serialize_paths() {