From c8f13421441719ef8777d6173ded0b08ddf970a7 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Mon, 11 Nov 2019 22:32:10 +0100 Subject: [PATCH] Disallow multiple ruma_api(body) attributes in one request / response --- ruma-api-macros/src/api/request.rs | 5 +++++ ruma-api-macros/src/api/response.rs | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/ruma-api-macros/src/api/request.rs b/ruma-api-macros/src/api/request.rs index a4c271a7..5028724d 100644 --- a/ruma-api-macros/src/api/request.rs +++ b/ruma-api-macros/src/api/request.rs @@ -144,6 +144,11 @@ impl From> for Request { Meta::Word(ident) => { match &ident.to_string()[..] { "body" => { + assert!( + !has_newtype_body, + "ruma_api! body attribute can only be used once per request definition" + ); + has_newtype_body = true; field_kind = RequestFieldKind::NewtypeBody; } diff --git a/ruma-api-macros/src/api/response.rs b/ruma-api-macros/src/api/response.rs index b0ad5165..8bf74528 100644 --- a/ruma-api-macros/src/api/response.rs +++ b/ruma-api-macros/src/api/response.rs @@ -116,6 +116,10 @@ impl From> for Response { ident == "body", "ruma_api! single-word attribute on responses must be: body" ); + assert!( + !has_newtype_body, + "ruma_api! body attribute can only be used once per response definition" + ); has_newtype_body = true; field_kind = ResponseFieldKind::NewtypeBody;