@@ -150,7 +150,7 @@ fn generate_x86_level(
150150
151151 let level_struct_name = level. to_uppercase ( ) ;
152152 // The target_feature(enable = "...") string.
153- let lcd_contents = lcd. join ( ", " ) ;
153+ let lcd_contents = lcd. join ( "," ) ;
154154 // The fields of the new struct.
155155 let lcd_field_definitions = lcd
156156 . iter ( )
@@ -159,11 +159,13 @@ fn generate_x86_level(
159159 . iter ( )
160160 . find ( |it| it. feature . feature_name == * feature)
161161 . unwrap ( ) ;
162- let type_path = format ! (
163- "crate::x86::{}::{}" ,
164- normalized. feature. module, normalized. feature. struct_name
165- ) ;
166- format ! ( "{feature}: {type_path},\n " )
162+ let type_path = format ! ( "crate::x86::{level}::{}" , normalized. feature. struct_name) ;
163+ let feature = feature. replace ( "." , "_" ) ;
164+ format ! (
165+ "/// The contained proof that {} is available.\n \
166+ pub {feature}: {type_path},\n ",
167+ normalized. feature. feature_docs_name
168+ )
167169 } )
168170 . collect :: < String > ( ) ;
169171 // The enabled FEATURES.
@@ -180,14 +182,12 @@ fn generate_x86_level(
180182 . iter ( )
181183 . find ( |it| it. feature . feature_name == * feature)
182184 . unwrap ( ) ;
183- let type_path = format ! (
184- "crate::x86::{}::{}" ,
185- normalized. feature. module, normalized. feature. struct_name
186- ) ;
185+ let type_path = format ! ( "crate::x86::{level}::{}" , normalized. feature. struct_name) ;
186+ let feature = feature. replace ( "." , "_" ) ;
187187 format ! ( "{type_path} = self.{feature}" )
188188 } )
189189 . collect :: < Vec < _ > > ( )
190- . join ( "," ) ;
190+ . join ( ", " ) ;
191191 // The version of the struct initializer in `try_new`.
192192 let struct_initializer_try_new = lcd
193193 . iter ( )
@@ -196,10 +196,8 @@ fn generate_x86_level(
196196 . iter ( )
197197 . find ( |it| it. feature . feature_name == * feature)
198198 . unwrap ( ) ;
199- let type_path = format ! (
200- "crate::x86::{}::{}" ,
201- normalized. feature. module, normalized. feature. struct_name
202- ) ;
199+ let type_path = format ! ( "crate::x86::{level}::{}" , normalized. feature. struct_name) ;
200+ let feature = feature. replace ( "." , "_" ) ;
203201 // We rely on rustfmt to get the tab spacing right.
204202 format ! ( "\t {feature}: {type_path}::try_new()?,\n " )
205203 } )
@@ -212,10 +210,8 @@ fn generate_x86_level(
212210 . iter ( )
213211 . find ( |it| it. feature . feature_name == * feature)
214212 . unwrap ( ) ;
215- let type_path = format ! (
216- "crate::x86::{}::{}" ,
217- normalized. feature. module, normalized. feature. struct_name
218- ) ;
213+ let type_path = format ! ( "crate::x86::{level}::{}" , normalized. feature. struct_name) ;
214+ let feature = feature. replace ( "." , "_" ) ;
219215 format ! ( "\t {feature}: {type_path}::new(),\n " )
220216 } )
221217 . collect :: < String > ( ) ;
@@ -226,10 +222,7 @@ fn generate_x86_level(
226222 . iter ( )
227223 . find ( |it| it. feature . feature_name == * child)
228224 . unwrap ( ) ;
229- let type_path = format ! (
230- "crate::x86::{}::{}" ,
231- from_feature. feature. module, from_feature. feature. struct_name
232- ) ;
225+ let type_path = format ! ( "crate::x86::{level}::{}" , from_feature. feature. struct_name) ;
233226 write ! (
234227 from_impls,
235228 "\n \
@@ -249,6 +242,9 @@ impl From<LEVEL_STRUCT_NAME> for {type_path} {{
249242 ) ;
250243 // We replace the from impls first, as they use template variables from the rest of this.
251244 result = result. replace ( "/*{FROM_IMPLS}*/" , & from_impls) ;
245+ result = result. replace ( "LEVEL_STRUCT_NAME" , & level_struct_name) ;
246+ result = result. replace ( "{LEVEL_ID}" , level) ;
247+ result = result. replace ( "{LEVEL_FEATURE_LCD_CONTENTS}" , & lcd_contents) ;
252248 result = result. replace (
253249 "/*{LEVEL_FEATURE_LCD_FIELD_DEFINITIONS}*/" ,
254250 & lcd_field_definitions,
0 commit comments