Class BytecodeExpression

All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>, NodeMetaDataHandler
Direct Known Subclasses:
ExpressionAsVariableSlot, VariableSlotLoader

public abstract class BytecodeExpression extends Expression
Represents some custom bytecode generation by the compiler.
  • Field Details

    • NOP

      public static final BytecodeExpression NOP
      A no-operation bytecode expression that generates no instructions.
  • Constructor Details

    • BytecodeExpression

      public BytecodeExpression()
      Creates a new bytecode expression.
    • BytecodeExpression

      public BytecodeExpression(ClassNode type)
      Creates a new bytecode expression with the specified type.
      Parameters:
      type - the type of the expression
  • Method Details

    • getText

      public String getText()
      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
    • visit

      public abstract void visit(org.objectweb.asm.MethodVisitor visitor)
      Emits bytecode instructions using the provided method visitor.
      Parameters:
      visitor - the ASM method visitor to generate bytecode
    • visit

      public void visit(GroovyCodeVisitor visitor)
      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)
      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)