Package org.codehaus.groovy.classgen
Class BytecodeExpression
java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.classgen.BytecodeExpression
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>,NodeMetaDataHandler
- Direct Known Subclasses:
ExpressionAsVariableSlot,VariableSlotLoader
Represents some custom bytecode generation by the compiler.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final BytecodeExpressionA no-operation bytecode expression that generates no instructions.Fields inherited from class org.codehaus.groovy.ast.expr.Expression
EMPTY_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new bytecode expression.BytecodeExpression(ClassNode type) Creates a new bytecode expression with the specified type. -
Method Summary
Modifier and TypeMethodDescriptiongetText()Returns a human-readable text representation of this AST node.transformExpression(ExpressionTransformer transformer) Transforms this expression and any nested expressions according to the provided transformer.voidvisit(GroovyCodeVisitor visitor) Accepts a code visitor for AST traversal and transformation.abstract voidvisit(org.objectweb.asm.MethodVisitor visitor) Emits bytecode instructions using the provided method visitor.Methods inherited from class org.codehaus.groovy.ast.expr.Expression
getType, setType, transformExpressions, transformExpressionsMethods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSyntheticMethods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePositionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
Field Details
-
NOP
A no-operation bytecode expression that generates no instructions.
-
-
Constructor Details
-
BytecodeExpression
public BytecodeExpression()Creates a new bytecode expression. -
BytecodeExpression
Creates a new bytecode expression with the specified type.- Parameters:
type- the type of the expression
-
-
Method Details
-
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. -
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
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:
visitin classASTNode- Parameters:
visitor- theGroovyCodeVisitorto process this node
-
transformExpression
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:
transformExpressionin classExpression- Parameters:
transformer- theExpressionTransformerto apply- Returns:
- a transformed copy of this expression (or this expression itself if no changes are needed)
-