From b3196d7f6451717c19a38bddecd03e4fe315e9e0 Mon Sep 17 00:00:00 2001 From: Devin Ragotzy Date: Sat, 3 Oct 2020 05:39:32 -0400 Subject: [PATCH] Enforce public visibility of all fields of structs deriving Outgoing --- ruma-api/tests/optional_headers.rs | 4 ++-- ruma-api/tests/ruma_api_lifetime.rs | 4 ++-- ruma-common-macros/src/outgoing.rs | 3 +++ ruma-common/tests/outgoing.rs | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ruma-api/tests/optional_headers.rs b/ruma-api/tests/optional_headers.rs index 478e09e0..1a5adb26 100644 --- a/ruma-api/tests/optional_headers.rs +++ b/ruma-api/tests/optional_headers.rs @@ -12,10 +12,10 @@ ruma_api! { request: { #[ruma_api(header = LOCATION)] - location: Option, + pub location: Option, } response: { #[ruma_api(header = LOCATION)] - stuff: Option, + pub stuff: Option, } } diff --git a/ruma-api/tests/ruma_api_lifetime.rs b/ruma-api/tests/ruma_api_lifetime.rs index 8586de88..157dcbe1 100644 --- a/ruma-api/tests/ruma_api_lifetime.rs +++ b/ruma-api/tests/ruma_api_lifetime.rs @@ -1,8 +1,8 @@ #[allow(unused)] #[derive(Copy, Clone, Debug, ruma_common::Outgoing, serde::Serialize)] pub struct OtherThing<'t> { - some: &'t str, - t: &'t [u8], + pub some: &'t str, + pub t: &'t [u8], } mod empty_response { diff --git a/ruma-common-macros/src/outgoing.rs b/ruma-common-macros/src/outgoing.rs index 609901e0..ff72b955 100644 --- a/ruma-common-macros/src/outgoing.rs +++ b/ruma-common-macros/src/outgoing.rs @@ -106,6 +106,9 @@ pub fn expand_derive_outgoing(input: DeriveInput) -> syn::Result { DataKind::Struct(mut fields, struct_kind) => { let mut found_lifetime = false; for field in &mut fields { + if !matches!(field.vis, syn::Visibility::Public(_)) { + return Err(syn::Error::new_spanned(field, "All fields must be marked `pub`")); + } if strip_lifetimes(&mut field.ty) { found_lifetime = true; } diff --git a/ruma-common/tests/outgoing.rs b/ruma-common/tests/outgoing.rs index 1866a2a9..6bcc54d9 100644 --- a/ruma-common/tests/outgoing.rs +++ b/ruma-common/tests/outgoing.rs @@ -16,8 +16,8 @@ pub struct IncomingThing { #[allow(unused)] #[derive(Copy, Clone, Debug, Outgoing, serde::Serialize)] pub struct OtherThing<'t> { - some: &'t str, - t: &'t [u8], + pub some: &'t str, + pub t: &'t [u8], } #[derive(Outgoing)]