class RBI::SigBuilder
Attributes
current[RW]
Public Class Methods
build(node)
click to toggle source
# File lib/rbi/parser.rb, line 493 def self.build(node) v = SigBuilder.new v.visit_all(node.children[2..-1]) v.current end
new()
click to toggle source
Calls superclass method
# File lib/rbi/parser.rb, line 503 def initialize super @current = T.let(Sig.new, Sig) end
Public Instance Methods
visit(node)
click to toggle source
# File lib/rbi/parser.rb, line 509 def visit(node) return unless node case node.type when :send visit_send(node) end end
visit_send(node)
click to toggle source
# File lib/rbi/parser.rb, line 518 def visit_send(node) visit(node.children[0]) if node.children[0] name = node.children[1] case name when :abstract @current.is_abstract = true when :override @current.is_override = true when :overridable @current.is_overridable = true when :checked @current.checked = node.children[2].children[0] when :type_parameters node.children[2..-1].each do |child| @current.type_params << child.children[0].to_s end when :params node.children[2].children.each do |child| name = child.children[0].children[0].to_s type = parse_expr(child.children[1]) @current << SigParam.new(name, type) end when :returns @current.return_type = parse_expr(node.children[2]) when :void @current.return_type = nil else raise "#{node.location.line}: Unhandled #{name}" end end