Ruby  3.4.0dev (2024-12-06 revision 892c46283a5ea4179500d951c9d4866c0051f27b)
Data Fields
pm_if_node Struct Reference

IfNode. More...

#include <ast.h>

Data Fields

pm_node_t base
 The embedded base node. More...
 
pm_location_t if_keyword_loc
 IfNode::if_keyword_loc. More...
 
struct pm_nodepredicate
 IfNode::predicate. More...
 
pm_location_t then_keyword_loc
 IfNode::then_keyword_loc. More...
 
struct pm_statements_nodestatements
 IfNode::statements. More...
 
struct pm_nodesubsequent
 IfNode::subsequent. More...
 
pm_location_t end_keyword_loc
 IfNode::end_keyword_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

IfNode.

Represents the use of the if keyword, either in the block form or the modifier form, or a ternary expression.

bar if foo
^^^^^^^^^^

if foo then bar end
^^^^^^^^^^^^^^^^^^^

foo ? bar : baz
^^^^^^^^^^^^^^^

Type: PM_IF_NODE

Definition at line 4362 of file ast.h.

Field Documentation

◆ base

pm_node_t pm_if_node::base

The embedded base node.

Definition at line 4364 of file ast.h.

Referenced by pm_dump_json().

◆ end_keyword_loc

pm_location_t pm_if_node::end_keyword_loc

IfNode::end_keyword_loc.

The location of the end keyword if present, nil otherwise.

if foo
  bar
end
^^^

Definition at line 4453 of file ast.h.

Referenced by pm_dump_json().

◆ if_keyword_loc

pm_location_t pm_if_node::if_keyword_loc

IfNode::if_keyword_loc.

The location of the if keyword if present.

bar if foo
    ^^

The if_keyword_loc field will be nil when the IfNode represents a ternary expression.

Definition at line 4377 of file ast.h.

Referenced by pm_dump_json().

◆ predicate

struct pm_node* pm_if_node::predicate

IfNode::predicate.

The node for the condition the IfNode is testing.

if foo
   ^^^
  bar
end

bar if foo
       ^^^

foo ? bar : baz
^^^

Definition at line 4395 of file ast.h.

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

◆ statements

struct pm_statements_node* pm_if_node::statements

IfNode::statements.

Represents the body of statements that will be executed when the predicate is evaluated as truthy. Will be nil when no body is provided.

if foo
  bar
  ^^^
  baz
  ^^^
end

Definition at line 4422 of file ast.h.

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

◆ subsequent

struct pm_node* pm_if_node::subsequent

IfNode::subsequent.

Represents an ElseNode or an IfNode when there is an else or an elsif in the if statement.

if foo
  bar
elsif baz
^^^^^^^^^
  qux
  ^^^
end
^^^

if foo then bar else baz end
                ^^^^^^^^^^^^

Definition at line 4441 of file ast.h.

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

◆ then_keyword_loc

pm_location_t pm_if_node::then_keyword_loc

IfNode::then_keyword_loc.

The location of the then keyword (if present) or the ? in a ternary expression, nil otherwise.

if foo then bar end
       ^^^^

a ? b : c
  ^

Definition at line 4408 of file ast.h.

Referenced by pm_dump_json().


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