From 605680530b229d008ea54485e26cf4242e008c1f Mon Sep 17 00:00:00 2001 From: Devin R Date: Wed, 15 Jul 2020 15:56:17 -0400 Subject: [PATCH] Add ability to feature gate fields in ruma_api! macro --- ruma-api-macros/src/api/request.rs | 3 +++ ruma-api-macros/src/api/response.rs | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/ruma-api-macros/src/api/request.rs b/ruma-api-macros/src/api/request.rs index 3e6395b6..95e3ef0c 100644 --- a/ruma-api-macros/src/api/request.rs +++ b/ruma-api-macros/src/api/request.rs @@ -168,8 +168,11 @@ impl Request { let field_name = field.ident.as_ref().expect("expected field to have an identifier"); let span = field.span(); + let cfg_attrs = + field.attrs.iter().filter(|a| a.path.is_ident("cfg")).collect::>(); quote_spanned! {span=> + #( #cfg_attrs )* #field_name: #src.#field_name } }) diff --git a/ruma-api-macros/src/api/response.rs b/ruma-api-macros/src/api/response.rs index 78330717..7c9f64b7 100644 --- a/ruma-api-macros/src/api/response.rs +++ b/ruma-api-macros/src/api/response.rs @@ -43,10 +43,13 @@ impl Response { let field = response_field.field(); let field_name = field.ident.as_ref().expect("expected field to have an identifier"); let span = field.span(); + let cfg_attrs = + field.attrs.iter().filter(|a| a.path.is_ident("cfg")).collect::>(); match response_field { ResponseField::Body(_) => { quote_spanned! {span=> + #( #cfg_attrs )* #field_name: response_body.#field_name } } @@ -114,8 +117,11 @@ impl Response { let field_name = field.ident.as_ref().expect("expected field to have an identifier"); let span = field.span(); + let cfg_attrs = + field.attrs.iter().filter(|a| a.path.is_ident("cfg")).collect::>(); Some(quote_spanned! {span=> + #( #cfg_attrs )* #field_name: response.#field_name }) } else {