Package org.codehaus.groovy.ast.expr

# Class GStringExpression

java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.ast.expr.GStringExpression

All Implemented Interfaces:
  `GroovydocHolder<AnnotatedNode>`, `NodeMetaDataHandler`

public class GStringExpression extends Expression
Represents a GString (interpolated string) expression containing embedded values. A GString consists of constant string parts and interpolated expression values that are evaluated at runtime. For example, `"hello there ${user} how are you"` contains constant strings and user variable expressions. The type of a GString expression is always `ClassHelper.GSTRING_TYPE`. GStrings are expanded lazily during execution.

- ## Field Summary

  ### Fields inherited from class org.codehaus.groovy.ast.expr.Expression

  `EMPTY_ARRAY`

  ### Fields inherited from interface groovy.lang.groovydoc.GroovydocHolder

  `DOC_COMMENT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GStringExpression(String verbatimText)`
  Creates an empty GString expression with the given verbatim text.
  `GStringExpression(String verbatimText, List<ConstantExpression> strings, List<Expression> values)`
  Creates a GString expression with pre-populated strings and values.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addString(ConstantExpression text)`
  Adds a constant string part to this GString.
  `void`
  `addValue(Expression value)`
  Adds an interpolated expression (value) to this GString.
  `Expression`
  `asConstantString()`
  Converts this GString to a constant string expression by concatenating all string parts.
  `List<ConstantExpression>`
  `getStrings()`
  Returns the constant string parts of this GString.
  `String`
  `getText()`
  Returns a human-readable text representation of this AST node.
  `Expression`
  `getValue(int idx)`
  Returns the interpolated expression at the specified index.
  `List<Expression>`
  `getValues()`
  Returns the interpolated expressions in this GString.
  `boolean`
  `isConstantString()`
  Indicates whether this GString contains no interpolated values (only constant strings).
  `String`
  `toString()`
  `Expression`
  `transformExpression(ExpressionTransformer transformer)`
  Transforms this expression and any nested expressions according to the provided transformer.
  `void`
  `visit(GroovyCodeVisitor visitor)`
  Accepts a code visitor for AST traversal and transformation.

  ### Methods inherited from class org.codehaus.groovy.ast.expr.Expression

  `getType, setType, transformExpressions, transformExpressions`

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

  `addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic`

  ### 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, wait, wait, wait`

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

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

- ## Constructor Details

  - ### GStringExpression

    public GStringExpression(String verbatimText)
    Creates an empty GString expression with the given verbatim text.
    Parameters:
      `verbatimText` - the original text representation (non-null)

  - ### GStringExpression

    public GStringExpression(String verbatimText, List<ConstantExpression> strings, List<Expression> values)
    Creates a GString expression with pre-populated strings and values.
    Parameters:
      `verbatimText` - the original text representation (non-null)
      `strings` - the list of constant string parts (non-null)
      `values` - the list of interpolated expressions (non-null)

- ## Method Details

  - ### 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

  - ### transformExpression

    public Expression transformExpression(ExpressionTransformer transformer)
    Description copied from class: `Expression`
    Transforms this expression and any nested expressions according to the provided transformer. This method is called during AST transformation phases and must recursively transform any nested expressions to support full AST tree transformation.
    Specified by:
      `transformExpression` in class `Expression`
    Parameters:
      `transformer` - the `ExpressionTransformer` to apply
    Returns:
      a transformed copy of this expression (or this expression itself if no changes are needed)

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### 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

  - ### getStrings

    public List<ConstantExpression> getStrings()
    Returns the constant string parts of this GString. These alternate with the interpolated values in the final string.
    Returns:
      a list of constant string expressions (non-null)

  - ### getValues

    public List<Expression> getValues()
    Returns the interpolated expressions in this GString. These are evaluated at runtime and converted to strings.
    Returns:
      a list of value expressions (non-null)

  - ### addString

    public void addString(ConstantExpression text)
    Adds a constant string part to this GString.
    Parameters:
      `text` - the constant string expression to add (non-null)
    Throws:
      `NullPointerException` - if text is null

  - ### addValue

    public void addValue(Expression value)
    Adds an interpolated expression (value) to this GString. If this is the first value being added, an empty string constant is prepended to maintain alternation.
    Parameters:
      `value` - the expression to add (non-null)

  - ### getValue

    public Expression getValue(int idx)
    Returns the interpolated expression at the specified index.
    Parameters:
      `idx` - the index of the value
    Returns:
      the expression at the specified index
    Throws:
      `IndexOutOfBoundsException` - if the index is out of range

  - ### isConstantString

    public boolean isConstantString()
    Indicates whether this GString contains no interpolated values (only constant strings).
    Returns:
      true if there are no interpolated values, false if there are embedded expressions

  - ### asConstantString

    public Expression asConstantString()
    Converts this GString to a constant string expression by concatenating all string parts. This is only valid if `isConstantString()` returns true.
    Returns:
      a `ConstantExpression` with the complete concatenated string value