diff --git a/src/parse.rs b/src/parse.rs index 020fffe..bbae32b 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -60,7 +60,14 @@ use std::iter::Peekable; pub fn parse_declaration(tokens: TokenStream) -> Result { let mut tokens = tokens.into_iter().peekable(); - parse_declaration_tokens(&mut tokens) + let declaration = parse_declaration_tokens(&mut tokens); + if tokens.peek().is_some() { + panic!( + "cannot parse declaration, unexpected trailing tokens: {}", + tokens.collect::() + ); + } + declaration } pub(crate) fn parse_declaration_tokens( diff --git a/src/tests.rs b/src/tests.rs index 4a0f738..a244f2a 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -122,6 +122,12 @@ fn parse_empty_enum() { assert_debug_snapshot!(enum_type); } +#[test] +#[should_panic] +fn reject_trailing_junk() { + dbg!(parse_declaration(quote::quote! {struct Good {} bad})).unwrap(); +} + // ========== // VISIBILITY // ==========