Class: Solargraph::Parser::ParserGem::NodeProcessors::ResbodyNode

Inherits:
NodeProcessor::Base show all
Includes:
Solargraph::Parser::ParserGem::NodeMethods
Defined in:
lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb

Constant Summary

Constants included from Solargraph::Parser::ParserGem::NodeMethods

Solargraph::Parser::ParserGem::NodeMethods::NIL_NODE

Instance Attribute Summary

Attributes inherited from NodeProcessor::Base

#ivars, #locals, #node, #pins, #region

Instance Method Summary collapse

Methods included from Solargraph::Parser::ParserGem::NodeMethods

any_splatted_call?, call_nodes_from, const_nodes_from, convert_hash, drill_signature, find_recipient_node, get_node_end_position, get_node_start_position, infer_literal_node_type, pack_name, repaired_find_recipient_node, returns_from_method_body, splatted_call?, splatted_hash?, unpack_name, value_position_nodes_only

Methods inherited from NodeProcessor::Base

#initialize

Constructor Details

This class inherits a constructor from Solargraph::Parser::NodeProcessor::Base

Instance Method Details

#processvoid

This method returns an undefined value.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb', line 11

def process
  if node.children[1] # Exception local variable name
    here = get_node_start_position(node.children[1])
    # @sg-ignore Need to add nil check here
    presence = Range.new(here, region.closure.location.range.ending)
    loc = get_node_location(node.children[1])
    types = if node.children[0].nil?
              ['Exception']
            else
              node.children[0].children.map do |child|
                unpack_name(child)
              end
            end
    locals.push Solargraph::Pin::LocalVariable.new(
      location: loc,
      closure: region.closure,
      name: node.children[1].children[0].to_s,
      comments: "@type [#{types.join(',')}]",
      presence: presence,
      source: :parser
    )
  end
  NodeProcessor.process(node.children[2], region, pins, locals, ivars)
end