diff --git a/ruma-events-macros/src/event_content.rs b/ruma-events-macros/src/event_content.rs index b5992cb4..3fdc7209 100644 --- a/ruma-events-macros/src/event_content.rs +++ b/ruma-events-macros/src/event_content.rs @@ -42,15 +42,19 @@ impl EventMeta { impl Parse for EventMeta { fn parse(input: ParseStream) -> syn::Result { - if input.parse::().is_ok() { + let lookahead = input.lookahead1(); + if lookahead.peek(Token![type]) { + input.parse::()?; input.parse::()?; - Ok(EventMeta::Type(input.parse::()?)) - } else if input.parse::().is_ok() { + input.parse().map(EventMeta::Type) + } else if lookahead.peek(kw::skip_redaction) { + input.parse::()?; Ok(EventMeta::SkipRedacted) - } else if input.parse::().is_ok() { + } else if lookahead.peek(kw::custom_redacted) { + input.parse::()?; Ok(EventMeta::CustomRedacted) } else { - Err(syn::Error::new(input.span(), "not a recognized `ruma_event` attribute")) + Err(lookahead.error()) } } } diff --git a/ruma-events/tests/ui/03-invalid-event-type.stderr b/ruma-events/tests/ui/03-invalid-event-type.stderr index 0569550d..7cf07183 100644 --- a/ruma-events/tests/ui/03-invalid-event-type.stderr +++ b/ruma-events/tests/ui/03-invalid-event-type.stderr @@ -1,4 +1,4 @@ -error: not a recognized `ruma_event` attribute +error: expected one of: `type`, `skip_redaction`, `custom_redacted` --> $DIR/03-invalid-event-type.rs:11:14 | 11 | #[ruma_event(event = "m.macro.test")]