Class: RBS::Trace::ReturnValueVisitor
- Inherits:
-
Prism::BasicVisitor
- Object
- Prism::BasicVisitor
- RBS::Trace::ReturnValueVisitor
- Defined in:
- lib/rbs/trace/return_value_visitor.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize ⇒ ReturnValueVisitor
constructor
A new instance of ReturnValueVisitor.
- #visit_call_node(node) ⇒ Object
- #visit_child_nodes(node) ⇒ Object
- #void_type?(lineno, name) ⇒ Boolean
Constructor Details
#initialize ⇒ ReturnValueVisitor
Returns a new instance of ReturnValueVisitor.
20 21 22 23 24 |
# File 'lib/rbs/trace/return_value_visitor.rb', line 20 def initialize @void_types = {} #: Hash[Array[Integer|Symbol], bool] @parents = [] #: Array[Prism::Node] super end |
Class Method Details
.parse_file(path) ⇒ Object
8 9 10 11 12 13 |
# File 'lib/rbs/trace/return_value_visitor.rb', line 8 def parse_file(path) new.tap do |visitor| result = Prism.parse_file(path) visitor.visit(result.value) end end |
Instance Method Details
#visit_call_node(node) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/rbs/trace/return_value_visitor.rb', line 39 def visit_call_node(node) key = [node.location.start_line, node.name] @void_types[key] = void?(node) visit_child_nodes(node) end |
#visit_child_nodes(node) ⇒ Object
32 33 34 35 36 |
# File 'lib/rbs/trace/return_value_visitor.rb', line 32 def visit_child_nodes(node) @parents.push(node) super @parents.pop end |
#void_type?(lineno, name) ⇒ Boolean
27 28 29 |
# File 'lib/rbs/trace/return_value_visitor.rb', line 27 def void_type?(lineno, name) @void_types.fetch([lineno, name], false) end |