Package org.codehaus.groovy.transform.sc
Class TemporaryVariableExpression
java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.transform.sc.TemporaryVariableExpression
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>,NodeMetaDataHandler
A front-end class for
ExpressionAsVariableSlot which
allows defining temporary variables loaded from variable slots directly at the AST level,
without any knowledge of AsmClassGenerator.- Since:
- 2.4.0
-
Field Summary
Fields inherited from class org.codehaus.groovy.ast.expr.Expression
EMPTY_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT -
Constructor Summary
ConstructorsConstructorDescriptionTemporaryVariableExpression(Expression expression) Wraps an expression so it can be cached in a temporary variable slot during bytecode generation. -
Method Summary
Modifier and TypeMethodDescriptiongetType()Returns the wrapped expression type.voidremove(WriterController controller) Releases the temporary variable slot associated with this expression.transformExpression(ExpressionTransformer transformer) Transforms the wrapped expression while preserving the shared variable slot.voidvisit(GroovyCodeVisitor visitor) Emits the cached variable-slot access when visiting bytecode, or delegates to the wrapped expression otherwise.Methods inherited from class org.codehaus.groovy.ast.expr.Expression
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, getText, 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
-
Constructor Details
-
TemporaryVariableExpression
Wraps an expression so it can be cached in a temporary variable slot during bytecode generation.- Parameters:
expression- the expression to cache
-
-
Method Details
-
getType
Returns the wrapped expression type.- Overrides:
getTypein classExpression- Returns:
- the inferred type of the wrapped expression
-
remove
Releases the temporary variable slot associated with this expression.- Parameters:
controller- the active writer controller
-
transformExpression
Transforms the wrapped expression while preserving the shared variable slot.- Specified by:
transformExpressionin classExpression- Parameters:
transformer- the expression transformer to apply- Returns:
- a transformed temporary-variable expression
-
visit
Emits the cached variable-slot access when visiting bytecode, or delegates to the wrapped expression otherwise.
-