Package org.codehaus.groovy.ast.stmt

# Class IfStatement

java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.stmt.Statement
org.codehaus.groovy.ast.stmt.IfStatement

All Implemented Interfaces:
  `NodeMetaDataHandler`

public class IfStatement extends Statement
Represents an if (condition) { then-block } else { else-block } conditional statement in Groovy. The if statement evaluates a boolean `BooleanExpression` and executes one of two code paths: the if block if the condition is true, or the else block (if present) if the condition is false. The else block defaults to an empty statement if not explicitly provided.

See Also:
  - `Statement`
  - `BooleanExpression`
  - `BlockStatement`
  - `EmptyStatement`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `IfStatement(BooleanExpression booleanExpression, Statement ifBlock, Statement elseBlock)`
  Constructs an IfStatement with a condition and then/else code blocks.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `BooleanExpression`
  `getBooleanExpression()`
  Returns the `BooleanExpression` that is evaluated to determine which code path to execute.
  `Statement`
  `getElseBlock()`
  Returns the `Statement` to execute when the condition is false.
  `Statement`
  `getIfBlock()`
  Returns the `Statement` to execute when the condition is true.
  `String`
  `getText()`
  Returns a human-readable text representation of this AST node.
  `void`
  `setBooleanExpression(BooleanExpression booleanExpression)`
  Sets the `BooleanExpression` that is evaluated to determine control flow.
  `void`
  `setElseBlock(Statement statement)`
  Sets the `Statement` to execute when the condition is false.
  `void`
  `setIfBlock(Statement statement)`
  Sets the `Statement` to execute when the condition is true.
  `void`
  `visit(GroovyCodeVisitor visitor)`
  Accepts a code visitor for AST traversal and transformation.

  ### Methods inherited from class org.codehaus.groovy.ast.stmt.Statement

  `addStatementAnnotation, addStatementLabel, copyStatementLabels, getStatementAnnotations, getStatementLabel, getStatementLabels, isEmpty, setStatementLabel`

  ### Methods inherited from class org.codehaus.groovy.ast.ASTNode

  `copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePosition`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler

  `copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData`

- ## Constructor Details

  - ### IfStatement

    public IfStatement(BooleanExpression booleanExpression, Statement ifBlock, Statement elseBlock)
    Constructs an IfStatement with a condition and then/else code blocks.
    Parameters:
      `booleanExpression` - the `BooleanExpression` to evaluate; must not be null
      `ifBlock` - the `Statement` to execute if the condition is true; must not be null
      `elseBlock` - the `Statement` to execute if the condition is false, or null for no else clause

- ## Method Details

  - ### setBooleanExpression

    public void setBooleanExpression(BooleanExpression booleanExpression)
    Sets the `BooleanExpression` that is evaluated to determine control flow.
    Parameters:
      `booleanExpression` - the `BooleanExpression` to evaluate; must not be null
    Throws:
      `NullPointerException` - if booleanExpression is null

  - ### setIfBlock

    public void setIfBlock(Statement statement)
    Sets the `Statement` to execute when the condition is true.
    Parameters:
      `statement` - the then-block `Statement`; must not be null
    Throws:
      `NullPointerException` - if statement is null

  - ### setElseBlock

    public void setElseBlock(Statement statement)
    Sets the `Statement` to execute when the condition is false. If null is provided, the else block is replaced with an empty statement.
    Parameters:
      `statement` - the else-block `Statement`, or null for no else clause

  - ### visit

    public void visit(GroovyCodeVisitor visitor)
    Description copied from class: `ASTNode`
    Accepts a code visitor for AST traversal and transformation. Subclasses must implement this method to support visitor pattern-based processing. The visitor pattern enables decoupling of AST structure from processing logic.
    Overrides:
      `visit` in class `ASTNode`
    Parameters:
      `visitor` - the `GroovyCodeVisitor` to process this node

  - ### getBooleanExpression

    public BooleanExpression getBooleanExpression()
    Returns the `BooleanExpression` that is evaluated to determine which code path to execute.
    Returns:
      the `BooleanExpression` representing the condition

  - ### getIfBlock

    public Statement getIfBlock()
    Returns the `Statement` to execute when the condition is true.
    Returns:
      the then-block `Statement`

  - ### getElseBlock

    public Statement getElseBlock()
    Returns the `Statement` to execute when the condition is false. Returns `EmptyStatement.INSTANCE` if no else clause was specified.
    Returns:
      the else-block `Statement`

  - ### getText

    public String getText()
    Description copied from class: `ASTNode`
    Returns a human-readable text representation of this AST node. Used for debugging and error messages. Default implementation returns a message indicating the representation is not yet implemented for this node type.
    Overrides:
      `getText` in class `ASTNode`
    Returns:
      text representation of this node, or placeholder for unimplemented types