aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--prism/templates/lib/prism/dot_visitor.rb.erb14
1 files changed, 9 insertions, 5 deletions
diff --git a/prism/templates/lib/prism/dot_visitor.rb.erb b/prism/templates/lib/prism/dot_visitor.rb.erb
index 5e01388c6d..fc3dd4b223 100644
--- a/prism/templates/lib/prism/dot_visitor.rb.erb
+++ b/prism/templates/lib/prism/dot_visitor.rb.erb
@@ -122,13 +122,17 @@ module Prism
digraph.edge("#{id}:<%= field.name %> -> #{node_id(<%= field.name %>)};")
end
<%- when Prism::NodeListField -%>
- table.field("<%= field.name %>", port: true)
+ if node.<%= field.name %>.any?
+ table.field("<%= field.name %>", port: true)
- waypoint = "#{id}_<%= field.name %>"
- digraph.waypoint("#{waypoint};")
+ waypoint = "#{id}_<%= field.name %>"
+ digraph.waypoint("#{waypoint};")
- digraph.edge("#{id}:<%= field.name %> -> #{waypoint};")
- node.<%= field.name %>.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
+ digraph.edge("#{id}:<%= field.name %> -> #{waypoint};")
+ node.<%= field.name %>.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
+ else
+ table.field("<%= field.name %>", "[]")
+ end
<%- when Prism::StringField, Prism::ConstantField, Prism::OptionalConstantField, Prism::UInt8Field, Prism::UInt32Field, Prism::ConstantListField -%>
table.field("<%= field.name %>", node.<%= field.name %>.inspect)
<%- when Prism::LocationField -%>