diff --git a/serde_derive/src/bound.rs b/serde_derive/src/bound.rs index 5f6e94c0..5dc68a0f 100644 --- a/serde_derive/src/bound.rs +++ b/serde_derive/src/bound.rs @@ -116,6 +116,14 @@ where } visit::walk_path(self, path); } + + // Type parameter should not be considered used by a macro path. + // + // struct TypeMacro { + // mac: T!(), + // marker: PhantomData, + // } + fn visit_mac(&mut self, _mac: &syn::Mac) {} } let all_ty_params: HashSet<_> = generics diff --git a/test_suite/tests/test_gen.rs b/test_suite/tests/test_gen.rs index 50cd13b7..c6a68213 100644 --- a/test_suite/tests/test_gen.rs +++ b/test_suite/tests/test_gen.rs @@ -519,6 +519,17 @@ fn test_gen() { other: isize, } assert::(); + + macro_rules! T { + () => { () } + } + + #[derive(Serialize, Deserialize)] + struct TypeMacro { + mac: T!(), + marker: PhantomData, + } + assert::>(); } //////////////////////////////////////////////////////////////////////////