Ruby  3.4.0dev (2024-11-22 revision 0989400a925cd201defdca9eb28eb87200b30785)
Data Fields
pm_local_variable_write_node Struct Reference

LocalVariableWriteNode. More...

#include <ast.h>

Data Fields

pm_node_t base
 The embedded base node. More...
 
pm_constant_id_t name
 LocalVariableWriteNode::name. More...
 
uint32_t depth
 LocalVariableWriteNode::depth. More...
 
pm_location_t name_loc
 LocalVariableWriteNode::name_loc. More...
 
struct pm_nodevalue
 LocalVariableWriteNode::value. More...
 
pm_location_t operator_loc
 LocalVariableWriteNode::operator_loc. More...
 
- Data Fields inherited from pm_node
pm_node_type_t type
 This represents the type of the node. More...
 
pm_node_flags_t flags
 This represents any flags on the node. More...
 
uint32_t node_id
 The unique identifier for this node, which is deterministic based on the source. More...
 
pm_location_t location
 This is the location of the node in the source. More...
 

Detailed Description

LocalVariableWriteNode.

Represents writing to a local variable.

foo = 1
^^^^^^^

Type: PM_LOCAL_VARIABLE_WRITE_NODE

Definition at line 5239 of file ast.h.

Field Documentation

◆ base

pm_node_t pm_local_variable_write_node::base

The embedded base node.

Definition at line 5241 of file ast.h.

Referenced by pm_dump_json().

◆ depth

uint32_t pm_local_variable_write_node::depth

LocalVariableWriteNode::depth.

The number of semantic scopes we have to traverse to find the declaration of this variable.

foo = 1         # depth 0

tap { foo = 1 } # 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.

Definition at line 5266 of file ast.h.

Referenced by pm_dump_json().

◆ name

pm_constant_id_t pm_local_variable_write_node::name

LocalVariableWriteNode::name.

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

foo = :bar # name `:foo`

abc = 123  # name `:abc`

Definition at line 5253 of file ast.h.

Referenced by pm_dump_json().

◆ name_loc

pm_location_t pm_local_variable_write_node::name_loc

LocalVariableWriteNode::name_loc.

The location of the variable name.

foo = :bar
^^^

Definition at line 5276 of file ast.h.

Referenced by pm_dump_json().

◆ operator_loc

pm_location_t pm_local_variable_write_node::operator_loc

LocalVariableWriteNode::operator_loc.

The location of the = operator.

x = :y
  ^

Definition at line 5303 of file ast.h.

Referenced by pm_dump_json().

◆ value

struct pm_node* pm_local_variable_write_node::value

LocalVariableWriteNode::value.

The value to write to the local variable. It can be any non-void expression.

foo = :bar
      ^^^^

abc = 1234
      ^^^^

Note that since the name of a local variable is known before the value is parsed, it is valid for a local variable to appear within the value of its own write.

foo = foo

Definition at line 5293 of file ast.h.

Referenced by pm_dump_json(), pm_node_destroy(), and pm_visit_child_nodes().


The documentation for this struct was generated from the following file: