Skip to content

Commit 243ca16

Browse files
committed
Fix visitor to fit in new structure
1 parent 4de9580 commit 243ca16

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

ast/asdl_rs.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)