Ruby: pm_multi_write_node Struct Reference

Ruby 3.4.3p32 (2025-04-14 revision d0b7e5b6a04bde21ca483d20a1546b28b401c2d4)

Data Fields
pm_multi_write_node Struct Reference

MultiWriteNode. More...

`#include <ast.h>`

## Data Fields
pm_node_t | base
| The embedded base node.
struct pm_node_list | lefts
| MultiWriteNode#lefts.
struct pm_node * | rest
| MultiWriteNode#rest.
struct pm_node_list | rights
| MultiWriteNode#rights.
pm_location_t | lparen_loc
| MultiWriteNode#lparen_loc.
pm_location_t | rparen_loc
| MultiWriteNode#rparen_loc.
pm_location_t | operator_loc
| MultiWriteNode#operator_loc.
struct pm_node * | value
| MultiWriteNode#value.
Data Fields inherited from pm_node
pm_node_type_t | type
| This represents the type of the node.
pm_node_flags_t | flags
| This represents any flags on the node.
uint32_t | node_id
| The unique identifier for this node, which is deterministic based on the source.
pm_location_t | location
| This is the location of the node in the source.

## Detailed Description

MultiWriteNode.

Represents a write to a multi-target expression.

    a, b, c = 1, 2, 3
    ^^^^^^^^^^^^^^^^^

Type: PM_MULTI_WRITE_NODE

Definition at line 6028 of file ast.h.

## Field Documentation

## ◆ base

pm_node_t pm_multi_write_node::base

The embedded base node.

Definition at line 6030 of file ast.h.

Referenced by pm_dump_json().

## ◆ lefts

struct pm_node_list pm_multi_write_node::lefts

MultiWriteNode#lefts.

Represents the targets expressions before a splat node.

    a, b, * = 1, 2, 3, 4, 5
    ^^^^

The splat node can be absent, in that case all target expressions are in the left field.

    a, b, c = 1, 2, 3, 4, 5
    ^^^^^^^

Definition at line 6046 of file ast.h.

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

## ◆ lparen_loc

pm_location_t pm_multi_write_node::lparen_loc

MultiWriteNode#lparen_loc.

The location of the opening parenthesis.

    (a, b, c) = 1, 2, 3
    ^

Definition at line 6086 of file ast.h.

Referenced by pm_dump_json().

## ◆ operator_loc

pm_location_t pm_multi_write_node::operator_loc

MultiWriteNode#operator_loc.

The location of the operator.

    a, b, c = 1, 2, 3
            ^

Definition at line 6106 of file ast.h.

Referenced by pm_dump_json().

## ◆ rest

struct pm_node* pm_multi_write_node::rest

MultiWriteNode#rest.

Represents a splat node in the target expression.

    a, b, *c = 1, 2, 3, 4
          ^^

The variable can be empty, this results in a `SplatNode` with a `nil` expression field.

    a, b, * = 1, 2, 3, 4
          ^

If the `*` is omitted, this field will contain an `ImplicitRestNode`

    a, b, = 1, 2, 3, 4
        ^

Definition at line 6066 of file ast.h.

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

## ◆ rights

struct pm_node_list pm_multi_write_node::rights

MultiWriteNode#rights.

Represents the targets expressions after a splat node.

    a, *, b, c = 1, 2, 3, 4, 5
          ^^^^

Definition at line 6076 of file ast.h.

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

## ◆ rparen_loc

pm_location_t pm_multi_write_node::rparen_loc

MultiWriteNode#rparen_loc.

The location of the closing parenthesis.

    (a, b, c) = 1, 2, 3
            ^

Definition at line 6096 of file ast.h.

Referenced by pm_dump_json().

## ◆ value

struct pm_node* pm_multi_write_node::value

MultiWriteNode#value.

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

    a, b, c = 1, 2, 3
              ^^^^^^^

Definition at line 6116 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:

- prism/ast.h