From b8a40551a29c84579229df1b0fc2e7f19e235125 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 5 Nov 2017 12:18:39 -0800 Subject: [PATCH] Fix bounds for macro named the same as a type parameter --- serde_derive/src/bound.rs | 8 ++++++++ test_suite/tests/test_gen.rs | 11 +++++++++++ 2 files changed, 19 insertions(+) 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::>(); } //////////////////////////////////////////////////////////////////////////