Skip to main content

pm_local_variable_write_node_t

Type Alias pm_local_variable_write_node_t 

Source
pub type pm_local_variable_write_node_t = pm_local_variable_write_node;
Expand description

LocalVariableWriteNode

Represents writing to a local variable.

 foo = 1
 ^^^^^^^

Type: ::PM_LOCAL_VARIABLE_WRITE_NODE

@extends pm_node_t

Aliased Type§

#[repr(C)]
pub struct pm_local_variable_write_node_t { pub base: pm_node, pub name: u32, pub depth: u32, pub name_loc: pm_location_t, pub value: *mut pm_node, pub operator_loc: pm_location_t, }

Fields§

§base: pm_node

The embedded base node.

§name: u32

LocalVariableWriteNode#name

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

 foo = :bar # name `:foo`
 abc = 123  # name `:abc`
§depth: u32

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.

§name_loc: pm_location_t

LocalVariableWriteNode#name_loc

The Location of the variable name.

 foo = :bar
 ^^^
§value: *mut pm_node

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
§operator_loc: pm_location_t

LocalVariableWriteNode#operator_loc

The Location of the = operator.

 x = :y
   ^