|
Ruby 3.5.0dev (2025-10-29 revision 6e618a2c79973557847ad23d5a5d9f97146068ba)
|
MatchRequiredNode. More...
#include <ast.h>
Data Fields | |
| pm_node_t | base |
| The embedded base node. | |
| struct pm_node * | value |
| MatchRequiredNode::value. | |
| struct pm_node * | pattern |
| MatchRequiredNode::pattern. | |
| pm_location_t | operator_loc |
| MatchRequiredNode::operator_loc. | |
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. | |
MatchRequiredNode.
Represents the use of the => operator.
foo => bar ^^^^^^^^^^
Type: PM_MATCH_REQUIRED_NODE
| pm_node_t pm_match_required_node::base |
| pm_location_t pm_match_required_node::operator_loc |
MatchRequiredNode::operator_loc.
The location of the operator.
foo => bar
^^
Definition at line 6025 of file ast.h.
Referenced by pm_dump_json().
| struct pm_node* pm_match_required_node::pattern |
MatchRequiredNode::pattern.
Represents the right-hand side of the operator. The type of the node depends on the expression.
Anything that looks like a local variable name (including _) will result in a LocalVariableTargetNode.
foo => a # This is equivalent to writing `a = foo`
^
Using an explicit Array or combining expressions with , will result in a ArrayPatternNode. This can be preceded by a constant.
foo => [a]
^^^
foo => a, b
^^^^
foo => Bar[a, b]
^^^^^^^^^
If the array pattern contains at least two wildcard matches, a FindPatternNode is created instead.
foo => *, 1, *a
^^^^^
Using an explicit Hash or a constant with square brackets and hash keys in the square brackets will result in a HashPatternNode.
foo => { a: 1, b: }
foo => Bar[a: 1, b:]
foo => Bar[**]
To use any variable that needs run time evaluation, pinning is required. This results in a PinnedVariableNode
foo => ^a
^^
Similar, any expression can be used with pinning. This results in a PinnedExpressionNode.
foo => ^(a + 1)
Anything else will result in the regular node for that expression, for example a ConstantReadNode.
foo => CONST
Definition at line 6015 of file ast.h.
Referenced by pm_dump_json(), pm_node_destroy(), and pm_visit_child_nodes().
| struct pm_node* pm_match_required_node::value |
MatchRequiredNode::value.
Represents the left-hand side of the operator.
foo => bar ^^^
Definition at line 5966 of file ast.h.
Referenced by pm_dump_json(), pm_node_destroy(), and pm_visit_child_nodes().