@@ -600,15 +600,18 @@ def emit_empty_generic_visitor(self, nodename, rusttype, depth):
600600 self .emit ("}" , depth )
601601
602602 def simple_sum (self , sum , name , depth ):
603- rustname = get_rust_type (name )
604- self .emit_visitor (name , rustname , depth )
605- self .emit_empty_generic_visitor (name , rustname , depth )
606-
607- def visit_match_for_type (self , enumname , type_ , depth ):
608- self .emit (f"{ enumname } ::{ type_ .name } {{" , depth )
609- for field in type_ .fields :
610- self .emit (f"{ rust_field (field .name )} ," , depth + 1 )
611- self .emit (f"}} => self.visit_{ type_ .name } (" , depth )
603+ enumname = get_rust_type (name )
604+ self .emit_visitor (name , enumname , depth )
605+ self .emit_empty_generic_visitor (name , enumname , depth )
606+
607+ def visit_match_for_type (self , enumname , rustname , type_ , depth ):
608+ self .emit (f"{ rustname } ::{ type_ .name } " , depth )
609+ if type_ .fields :
610+ self .emit (f"({ enumname } { type_ .name } {{" , depth )
611+ for field in type_ .fields :
612+ self .emit (f"{ rust_field (field .name )} ," , depth + 1 )
613+ self .emit ("})" , depth )
614+ self .emit (f"=> self.visit_{ type_ .name } (" , depth )
612615 self .emit (f"{ type_ .name } Node {{" , depth + 2 )
613616 self .emit ("location: node.location," , depth + 2 )
614617 self .emit ("end_location: node.end_location," , depth + 2 )
@@ -622,7 +625,7 @@ def visit_match_for_type(self, enumname, type_, depth):
622625
623626 def visit_sumtype (self , type_ , depth ):
624627 rustname = get_rust_type (type_ .name ) + "Node"
625- self .emit_visitor (type_ .name , rustname , depth )
628+ self .emit_visitor (type_ .name , rustname , depth )
626629 self .emit_generic_visitor_signature (type_ .name , rustname , depth )
627630 for f in type_ .fields :
628631 fieldname = rust_field (f .name )
@@ -656,13 +659,13 @@ def sum_with_constructors(self, sum, name, depth):
656659
657660 rustname = enumname = get_rust_type (name )
658661 if sum .attributes :
659- enumname += "Kind"
660- self .emit_visitor (name , rustname , depth )
661- self .emit_generic_visitor_signature (name , rustname , depth )
662+ rustname = enumname + "Kind"
663+ self .emit_visitor (name , enumname , depth )
664+ self .emit_generic_visitor_signature (name , enumname , depth )
662665 depth += 1
663666 self .emit ("match node.node {" , depth )
664667 for t in sum .types :
665- self .visit_match_for_type (enumname , t , depth + 1 )
668+ self .visit_match_for_type (enumname , rustname , t , depth + 1 )
666669 self .emit ("}" , depth )
667670 depth -= 1
668671 self .emit ("}" , depth )
0 commit comments