@@ -184,6 +184,16 @@ pub enum RustEdition {
184184 Rust2021 ,
185185}
186186
187+ impl RustEdition {
188+ fn to_variant_tokens ( self ) -> TokenStream {
189+ match self {
190+ RustEdition :: Rust2015 => quote ! ( :: lrpar:: RustEdition :: Rust2015 ) ,
191+ RustEdition :: Rust2018 => quote ! ( :: lrpar:: RustEdition :: Rust2018 ) ,
192+ RustEdition :: Rust2021 => quote ! ( :: lrpar:: RustEdition :: Rust2021 ) ,
193+ }
194+ }
195+ }
196+
187197impl ToTokens for Visibility {
188198 fn to_tokens ( & self , tokens : & mut TokenStream ) {
189199 tokens. extend ( match self {
@@ -201,8 +211,8 @@ impl ToTokens for Visibility {
201211}
202212
203213impl Visibility {
204- fn to_variant_tokens ( & self , tokens : & mut TokenStream ) {
205- tokens . extend ( match self {
214+ fn to_variant_tokens ( & self ) -> TokenStream {
215+ match self {
206216 Visibility :: Private => quote ! ( :: lrpar:: Visibility :: Private ) ,
207217 Visibility :: Public => quote ! ( :: lrpar:: Visibility :: Public ) ,
208218 Visibility :: PublicSuper => quote ! ( :: lrpar:: Visibility :: PublicSuper ) ,
@@ -212,7 +222,7 @@ impl Visibility {
212222 let data = QuoteToString ( data) ;
213223 quote ! ( :: lrpar:: Visibility :: PublicIn ( #data) )
214224 }
215- } )
225+ }
216226 }
217227}
218228
@@ -806,10 +816,9 @@ where
806816 let mod_name = QuoteOption ( self . mod_name ) ;
807817 let recoverer = self . recoverer ;
808818 let yacckind = self . yacckind ;
809- let mut visibility = TokenStream :: new ( ) ;
810- self . visibility . to_variant_tokens ( & mut visibility ) ;
819+ let visibility = self . visibility . to_variant_tokens ( ) ;
820+ let rust_edition = self . rust_edition . to_variant_tokens ( ) ;
811821 let error_on_conflicts = self . error_on_conflicts ;
812-
813822 let rule_map = grm
814823 . iter_tidxs ( )
815824 . map ( |tidx| {
@@ -832,6 +841,7 @@ where
832841 const RECOVERER : RecoveryKind = #recoverer;
833842 const YACC_KIND : YaccKind = #yacckind;
834843 const ERROR_ON_CONFLICTS : bool = #error_on_conflicts;
844+ const RUST_EDITION : RustEdition = #rust_edition;
835845 const RULE_IDS_MAP : [ ( usize , & str ) ; #rule_map_len] = [ #( #rule_map, ) * ] ;
836846 fn visibility( ) -> Visibility {
837847 #visibility
0 commit comments