use proc_macro2::{Delimiter, Group}; use quote::quote; #[test] fn main() { // Okay. Rustc allows top-level `static` with no value syntactically, but // not semantically. Syn parses as Item::Verbatim. let tokens = quote! { pub static FOO: usize; pub static BAR: usize; }; let file = syn::parse2::(tokens).unwrap(); println!("{:#?}", file); // Okay. let inner = Group::new( Delimiter::None, quote!(static FOO: usize = 0; pub static BAR: usize = 0), ); let tokens = quote!(pub #inner;); let file = syn::parse2::(tokens).unwrap(); println!("{:#?}", file); // Formerly parser crash. let inner = Group::new( Delimiter::None, quote!(static FOO: usize; pub static BAR: usize), ); let tokens = quote!(pub #inner;); let file = syn::parse2::(tokens).unwrap(); println!("{:#?}", file); }