mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-22 19:28:01 +00:00
Add tests that ensures that error reported for a path for with and default attributes
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
|
||||
mod w {
|
||||
use serde::{Deserializer, Serializer};
|
||||
|
||||
pub fn deserialize<'de, D: Deserializer<'de>>(_: D) -> Result<(), D::Error> {
|
||||
unimplemented!()
|
||||
}
|
||||
pub fn serialize<T, S: Serializer>(_: S) -> Result<S::Ok, S::Error> {
|
||||
unimplemented!()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct W(#[serde(with = "w")] u8, u8);
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct S(#[serde(serialize_with = "w::serialize")] u8, u8);
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct D(#[serde(deserialize_with = "w::deserialize")] u8, u8);
|
||||
|
||||
fn main() {}
|
||||
@@ -0,0 +1,97 @@
|
||||
error[E0277]: the trait bound `&u8: Serializer` is not satisfied
|
||||
--> tests/ui/with/incorrect_type.rs:14:10
|
||||
|
|
||||
14 | #[derive(Serialize, Deserialize)]
|
||||
| ^^^^^^^^^ the trait `Serializer` is not implemented for `&u8`
|
||||
15 | struct W(#[serde(with = "w")] u8, u8);
|
||||
| --- required by a bound introduced by this call
|
||||
|
|
||||
= help: the following other types implement trait `Serializer`:
|
||||
&'a mut Formatter<'b>
|
||||
FlatMapSerializer<'a, M>
|
||||
_::_serde::__private::ser::content::ContentSerializer<E>
|
||||
note: required by a bound in `w::serialize`
|
||||
--> tests/ui/with/incorrect_type.rs:9:28
|
||||
|
|
||||
9 | pub fn serialize<T, S: Serializer>(_: S) -> Result<S::Ok, S::Error> {
|
||||
| ^^^^^^^^^^ required by this bound in `serialize`
|
||||
|
||||
error[E0061]: this function takes 1 argument but 2 arguments were supplied
|
||||
--> tests/ui/with/incorrect_type.rs:15:25
|
||||
|
|
||||
15 | struct W(#[serde(with = "w")] u8, u8);
|
||||
| ^^^ unexpected argument #2 of type `__S`
|
||||
|
|
||||
note: function defined here
|
||||
--> tests/ui/with/incorrect_type.rs:9:12
|
||||
|
|
||||
9 | pub fn serialize<T, S: Serializer>(_: S) -> Result<S::Ok, S::Error> {
|
||||
| ^^^^^^^^^ ----
|
||||
|
||||
error[E0277]: the trait bound `&u8: Serializer` is not satisfied
|
||||
--> tests/ui/with/incorrect_type.rs:15:25
|
||||
|
|
||||
15 | struct W(#[serde(with = "w")] u8, u8);
|
||||
| ^^^ the trait `Serializer` is not implemented for `&u8`
|
||||
|
|
||||
= help: the following other types implement trait `Serializer`:
|
||||
&'a mut Formatter<'b>
|
||||
FlatMapSerializer<'a, M>
|
||||
_::_serde::__private::ser::content::ContentSerializer<E>
|
||||
|
||||
error[E0308]: `?` operator has incompatible types
|
||||
--> tests/ui/with/incorrect_type.rs:15:25
|
||||
|
|
||||
15 | struct W(#[serde(with = "w")] u8, u8);
|
||||
| ^^^ expected `u8`, found `()`
|
||||
|
|
||||
= note: `?` operator cannot convert from `()` to `u8`
|
||||
|
||||
error[E0277]: the trait bound `&u8: Serializer` is not satisfied
|
||||
--> tests/ui/with/incorrect_type.rs:17:10
|
||||
|
|
||||
17 | #[derive(Serialize, Deserialize)]
|
||||
| ^^^^^^^^^ the trait `Serializer` is not implemented for `&u8`
|
||||
18 | struct S(#[serde(serialize_with = "w::serialize")] u8, u8);
|
||||
| -------------- required by a bound introduced by this call
|
||||
|
|
||||
= help: the following other types implement trait `Serializer`:
|
||||
&'a mut Formatter<'b>
|
||||
FlatMapSerializer<'a, M>
|
||||
_::_serde::__private::ser::content::ContentSerializer<E>
|
||||
note: required by a bound in `w::serialize`
|
||||
--> tests/ui/with/incorrect_type.rs:9:28
|
||||
|
|
||||
9 | pub fn serialize<T, S: Serializer>(_: S) -> Result<S::Ok, S::Error> {
|
||||
| ^^^^^^^^^^ required by this bound in `serialize`
|
||||
|
||||
error[E0061]: this function takes 1 argument but 2 arguments were supplied
|
||||
--> tests/ui/with/incorrect_type.rs:18:35
|
||||
|
|
||||
18 | struct S(#[serde(serialize_with = "w::serialize")] u8, u8);
|
||||
| ^^^^^^^^^^^^^^ unexpected argument #2 of type `__S`
|
||||
|
|
||||
note: function defined here
|
||||
--> tests/ui/with/incorrect_type.rs:9:12
|
||||
|
|
||||
9 | pub fn serialize<T, S: Serializer>(_: S) -> Result<S::Ok, S::Error> {
|
||||
| ^^^^^^^^^ ----
|
||||
|
||||
error[E0277]: the trait bound `&u8: Serializer` is not satisfied
|
||||
--> tests/ui/with/incorrect_type.rs:18:35
|
||||
|
|
||||
18 | struct S(#[serde(serialize_with = "w::serialize")] u8, u8);
|
||||
| ^^^^^^^^^^^^^^ the trait `Serializer` is not implemented for `&u8`
|
||||
|
|
||||
= help: the following other types implement trait `Serializer`:
|
||||
&'a mut Formatter<'b>
|
||||
FlatMapSerializer<'a, M>
|
||||
_::_serde::__private::ser::content::ContentSerializer<E>
|
||||
|
||||
error[E0308]: `?` operator has incompatible types
|
||||
--> tests/ui/with/incorrect_type.rs:21:37
|
||||
|
|
||||
21 | struct D(#[serde(deserialize_with = "w::deserialize")] u8, u8);
|
||||
| ^^^^^^^^^^^^^^^^ expected `u8`, found `()`
|
||||
|
|
||||
= note: `?` operator cannot convert from `()` to `u8`
|
||||
Reference in New Issue
Block a user