@@ -284,22 +284,30 @@ def generate_syntax_node_template_gyb_files(
284
284
verbose = verbose ,
285
285
)
286
286
287
+ # Gyb-files that should be generated before running code generation using SwiftSyntaxBuilder.
288
+ # Maps directories containing .gyb files to the directories the generated files should
289
+ # live in.
290
+ def first_stage_gyb_dir_mapping (
291
+ generateswiftsyntaxbuilder_destination : Optional [str ] = None ,
292
+ ) -> Dict [str , Optional [str ]]:
293
+ return {
294
+ GENERATESWIFTSYNTAXBUILDER_DIR : generateswiftsyntaxbuilder_destination ,
295
+ }
287
296
297
+ # Gyb-files that should be generated after running code generation using SwiftSyntaxBuilder.
288
298
# Maps directories containing .gyb files to the directories the generated files should
289
299
# live in.
290
- def gyb_dir_mapping (
300
+ def second_stage_gyb_dir_mapping (
291
301
swiftsyntax_destination : Optional [str ] = None ,
292
302
swiftsyntax_raw_destination : Optional [str ] = None ,
293
303
swiftsyntaxbuilder_destination : Optional [str ] = None ,
294
304
swiftsyntaxparser_destination : Optional [str ] = None ,
295
- generateswiftsyntaxbuilder_destination : Optional [str ] = None ,
296
305
) -> Dict [str , Optional [str ]]:
297
306
return {
298
307
SWIFTSYNTAX_DIR : swiftsyntax_destination ,
299
308
os .path .join (SWIFTSYNTAX_DIR , "Raw" ): swiftsyntax_raw_destination ,
300
309
SWIFTSYNTAXBUILDER_DIR : swiftsyntaxbuilder_destination ,
301
310
SWIFTSYNTAXPARSER_DIR : swiftsyntaxparser_destination ,
302
- GENERATESWIFTSYNTAXBUILDER_DIR : generateswiftsyntaxbuilder_destination ,
303
311
}
304
312
305
313
@@ -453,14 +461,18 @@ def build(self, product_name: str) -> None:
453
461
# Testing
454
462
455
463
456
- def verify_generated_files (gyb_exec : str , verbose : bool ) -> None :
457
- gyb_dirs = gyb_dir_mapping (
464
+ def verify_gyb_generated_files (gyb_exec : str , verbose : bool ) -> None :
465
+ first_stage_gyb_dirs = first_stage_gyb_dir_mapping (
466
+ generateswiftsyntaxbuilder_destination = tempfile .mkdtemp (),
467
+ )
468
+ second_stage_gyb_dirs = second_stage_gyb_dir_mapping (
458
469
swiftsyntax_destination = tempfile .mkdtemp (),
459
470
swiftsyntax_raw_destination = tempfile .mkdtemp (),
460
471
swiftsyntaxbuilder_destination = tempfile .mkdtemp (),
461
472
swiftsyntaxparser_destination = tempfile .mkdtemp (),
462
- generateswiftsyntaxbuilder_destination = tempfile .mkdtemp (),
463
473
)
474
+ gyb_dirs = first_stage_gyb_dirs
475
+ gyb_dirs .update (second_stage_gyb_dirs )
464
476
465
477
generate_gyb_files (
466
478
gyb_exec ,
@@ -685,7 +697,7 @@ def generate_source_code_command(args: argparse.Namespace) -> None:
685
697
try :
686
698
generate_gyb_files (
687
699
args .gyb_exec ,
688
- gyb_dir_mapping = gyb_dir_mapping (),
700
+ gyb_dir_mapping = first_stage_gyb_dir_mapping (),
689
701
add_source_locations = args .add_source_locations ,
690
702
verbose = args .verbose ,
691
703
)
@@ -707,10 +719,20 @@ def generate_source_code_command(args: argparse.Namespace) -> None:
707
719
fail_for_called_process_error (
708
720
"Source generation using SwiftSyntaxBuilder failed" , e )
709
721
722
+ try :
723
+ generate_gyb_files (
724
+ args .gyb_exec ,
725
+ gyb_dir_mapping = second_stage_gyb_dir_mapping (),
726
+ add_source_locations = args .add_source_locations ,
727
+ verbose = args .verbose ,
728
+ )
729
+ except subprocess .CalledProcessError as e :
730
+ fail_for_called_process_error ("Generating .gyb files failed" , e )
731
+
710
732
711
733
def verify_source_code_command (args : argparse .Namespace ) -> None :
712
734
try :
713
- verify_generated_files (args .gyb_exec , verbose = args .verbose )
735
+ verify_gyb_generated_files (args .gyb_exec , verbose = args .verbose )
714
736
715
737
verify_code_generated_files (
716
738
toolchain = args .toolchain ,
0 commit comments