Class: Prism::LocalVariableReadNode
- Inherits:
-
PrismNode
- Object
- PrismNode
- Prism::LocalVariableReadNode
- 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
-
#depth ⇒ Object
readonly
The number of visible scopes that should be searched to find the origin of this local variable.
-
#name ⇒ Object
readonly
The name of the local variable, which is an identifier.
Class Method Summary collapse
-
.type ⇒ Object
Return a symbol representation of this node type.
Instance Method Summary collapse
-
#===(other) ⇒ Object
Implements case-equality for the node.
-
#accept(visitor) ⇒ Object
def accept: (Visitor visitor) -> void.
-
#child_nodes ⇒ Object
(also: #deconstruct)
def child_nodes: () -> Array.
-
#comment_targets ⇒ Object
def comment_targets: () -> Array[Node | Location].
-
#compact_child_nodes ⇒ Object
def compact_child_nodes: () -> Array.
-
#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.
-
#deconstruct_keys(keys) ⇒ Object
def deconstruct_keys: (Array keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer }.
-
#each_child_node ⇒ Object
def each_child_node: () { (Prism::node) -> void } -> void | () -> Enumerator.
-
#initialize(source, node_id, location, flags, name, depth) ⇒ LocalVariableReadNode
constructor
Initialize a new LocalVariableReadNode node.
-
#inspect ⇒ Object
def inspect -> String.
-
#type ⇒ Object
Return a symbol representation of this node type.
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
= 2; tap { } # 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 |