Class: Prism::LocalVariableReadNode

Inherits:
PrismNode
  • Object
show all
Defined in:
lib/prism/node.rb,
ext/prism/api_node.c

Overview

Represents reading a local variable. Note that this requires that a local variable of the same name has already been written to in the same scope, otherwise it is parsed as a method call.

foo
^^^

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source, node_id, location, flags, name, depth) ⇒ LocalVariableReadNode

Initialize a new LocalVariableReadNode node.



12890
12891
12892
12893
12894
12895
12896
12897
# File 'lib/prism/node.rb', line 12890

def initialize(source, node_id, location, flags, name, depth)
  @source = source
  @node_id = node_id
  @location = location
  @flags = flags
  @name = name
  @depth = depth
end

Instance Attribute Details

#depth ⇒ Object (readonly)

The number of visible scopes that should be searched to find the origin of this local variable.

foo = 1; foo # depth 0

bar = 2; tap { bar } # depth 1

The specific rules for calculating the depth may differ from individual Ruby implementations, as they are not specified by the language. For more information, see the Prism documentation.



12956
12957
12958
# File 'lib/prism/node.rb', line 12956

def depth
  @depth
end

#name ⇒ Object (readonly)

The name of the local variable, which is an identifier.

x      # name `:x`

_Test  # name `:_Test`

Note that this can also be an underscore followed by a number for the default block parameters.

_1     # name `:_1`


12947
12948
12949
# File 'lib/prism/node.rb', line 12947

def name
  @name
end

Class Method Details

.type ⇒ Object

Return a symbol representation of this node type. See Node::type.



12969
12970
12971
# File 'lib/prism/node.rb', line 12969

def self.type
  :local_variable_read_node
end

Instance Method Details

#===(other) ⇒ Object

Implements case-equality for the node. This is effectively == but without comparing the value of locations. Locations are checked only for presence.



12975
12976
12977
12978
12979
# File 'lib/prism/node.rb', line 12975

def ===(other)
  other.is_a?(LocalVariableReadNode) &&
    (name === other.name) &&
    (depth === other.depth)
end

#accept(visitor) ⇒ Object

def accept: (Visitor visitor) -> void



12900
12901
12902
# File 'lib/prism/node.rb', line 12900

def accept(visitor)
  visitor.visit_local_variable_read_node(self)
end

#child_nodes ⇒ Object Also known as: deconstruct

def child_nodes: () -> Array



12905
12906
12907
# File 'lib/prism/node.rb', line 12905

def child_nodes
  []
end

#comment_targets ⇒ Object

def comment_targets: () -> Array[Node | Location]



12921
12922
12923
# File 'lib/prism/node.rb', line 12921

def comment_targets
  [] #: Array[Prism::node | Location]
end

#compact_child_nodes ⇒ Object

def compact_child_nodes: () -> Array



12916
12917
12918
# File 'lib/prism/node.rb', line 12916

def compact_child_nodes
  []
end

#copy(node_id: self.node_id, location: self.location, flags: self.flags, name: self.name, depth: self.depth) ⇒ Object

def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?depth: Integer) -> LocalVariableReadNode



12926
12927
12928
# File 'lib/prism/node.rb', line 12926

def copy(node_id: self.node_id, location: self.location, flags: self.flags, name: self.name, depth: self.depth)
  LocalVariableReadNode.new(source, node_id, location, flags, name, depth)
end

#deconstruct_keys(keys) ⇒ Object

def deconstruct_keys: (Array keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer }



12934
12935
12936
# File 'lib/prism/node.rb', line 12934

def deconstruct_keys(keys)
  { node_id: node_id, location: location, name: name, depth: depth }
end

#each_child_node ⇒ Object

def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator



12910
12911
12912
12913
# File 'lib/prism/node.rb', line 12910

def each_child_node
  return to_enum(:each_child_node) unless block_given?

end

#inspect ⇒ Object

def inspect -> String



12959
12960
12961
# File 'lib/prism/node.rb', line 12959

def inspect
  InspectVisitor.compose(self)
end

#type ⇒ Object

Return a symbol representation of this node type. See Node#type.



12964
12965
12966
# File 'lib/prism/node.rb', line 12964

def type
  :local_variable_read_node
end