Package org.codehaus.groovy.ast.tools

# Class GeneralUtils

java.lang.Object
org.codehaus.groovy.ast.tools.GeneralUtils

public class GeneralUtils extends Object
Handy methods when working with the Groovy AST

## Field Summary

Fields
Modifier and Type
Field
Description
`static final Token`
`AND`
`static final Token`
`ASSIGN`
`static final Token`
`CMP`
`static final Token`
`EQ`
`static final Token`
`LT`
`static final Token`
`NE`
`static final Token`
`OR`

## Constructor Summary

Constructors
Constructor
Description
`GeneralUtils()`

## Method Summary

Modifier and Type
Method
Description
`static BinaryExpression`
`andX(Expression lhv, Expression rhv)`
`static ArgumentListExpression`
`args(String... names)`
`static ArgumentListExpression`
`args(List<Expression> expressions)`
`static ArgumentListExpression`
`args(Expression... expressions)`
`static ArgumentListExpression`
`args(Parameter[] parameters)`
`static Statement`
`assignS(Expression target, Expression value)`
`static Expression`
`assignX(Expression target, Expression value)`
`static Expression`
`attrX(Expression oe, Expression prop)`
`static BinaryExpression`
`binX(Expression left, Token token, Expression right)`
`static BlockStatement`
`block(Statement... stmts)`
`static BlockStatement`
`block(VariableScope varScope, List<Statement> stmts)`
`static BlockStatement`
`block(VariableScope varScope, Statement... stmts)`
`static MethodCallExpression`
`callSuperX(String methodName)`
`static MethodCallExpression`
`callSuperX(String methodName, Expression args)`
`static MethodCallExpression`
`callThisX(String methodName)`
`static MethodCallExpression`
`callThisX(String methodName, Expression args)`
`static StaticMethodCallExpression`
`callX(ClassNode receiver, String methodName)`
`static StaticMethodCallExpression`
`callX(ClassNode receiver, String methodName, Expression args)`
`static MethodCallExpression`
`callX(Expression receiver, String methodName)`
`static MethodCallExpression`
`callX(Expression receiver, String methodName, Expression args)`
`static MethodCallExpression`
`callX(Expression receiver, Expression method, Expression args)`
`static CastExpression`
`castX(ClassNode type, Expression expression)`
`static CastExpression`
`castX(ClassNode type, Expression expression, boolean ignoreAutoboxing)`
`static CatchStatement`
`catchS(Parameter variable, Statement code)`
`static ClassExpression`
`classX(Class clazz)`
`static ClassExpression`
`classX(ClassNode clazz)`
`static Parameter[]`
`cloneParams(Parameter[] source)`
`static ClosureExpression`
`closureX(Parameter[] params, Statement code)`
`static ClosureExpression`
`closureX(Statement code)`
`static BinaryExpression`
`cmpX(Expression lhv, Expression rhv)`
`static ConstantExpression`
`constX(Object val)`
`static ConstantExpression`
`constX(Object val, boolean keepPrimitive)`
`static void`
`copyAnnotatedNodeAnnotations(AnnotatedNode annotatedNode, List<AnnotationNode> copied, List<AnnotationNode> notCopied)`
Copies all `candidateAnnotations` with retention policy `RetentionPolicy.RUNTIME` and `RetentionPolicy.CLASS`.
`static Statement`
`createConstructorStatementDefault(FieldNode fNode)`
`static Statement`
`ctorSuperS()`
`static Statement`
`ctorSuperS(Expression args)`
`static Statement`
`ctorThisS()`
`static Statement`
`ctorThisS(Expression args)`
`static ConstructorCallExpression`
`ctorX(ClassNode type)`
`static ConstructorCallExpression`
`ctorX(ClassNode type, Expression args)`
`static Statement`
`declS(Expression target, Expression init)`
`static BooleanExpression`
`equalsNullX(Expression argExpr)`
`static BinaryExpression`
`eqX(Expression lhv, Expression rhv)`
`static FieldExpression`
`fieldX(ClassNode owner, String fieldName)`
`static FieldExpression`
`fieldX(FieldNode fieldNode)`
`static Expression`
`findArg(String argName)`
`static List<MethodNode>`
`getAllMethods(ClassNode type)`
`static List<PropertyNode>`
`getAllProperties(ClassNode type)`
`static String`
`getGetterName(PropertyNode pNode)`
`static List<FieldNode>`
`getInstanceNonPropertyFields(ClassNode cNode)`
`static List<PropertyNode>`
`getInstanceProperties(ClassNode cNode)`
`static List<FieldNode>`
`getInstancePropertyFields(ClassNode cNode)`
`static Set<ClassNode>`
`getInterfacesAndSuperInterfaces(ClassNode type)`
`static List<FieldNode>`
`getSuperNonPropertyFields(ClassNode cNode)`
`static List<FieldNode>`
`getSuperPropertyFields(ClassNode cNode)`
`static Expression`
`getterThisX(ClassNode annotatedNode, PropertyNode pNode)`
This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.
`static Expression`
`getterX(ClassNode annotatedNode, Expression receiver, PropertyNode pNode)`
This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.
`static Expression`
`getterX(ClassNode annotatedNode, PropertyNode pNode)`
Deprecated.
use getterThisX instead
`static BinaryExpression`
`hasClassX(Expression instance, ClassNode cNode)`
`static boolean`
`hasDeclaredMethod(ClassNode cNode, String name, int argsCount)`
`static BinaryExpression`
`hasEqualFieldX(FieldNode fNode, Expression other)`
`static BinaryExpression`
`hasEqualPropertyX(PropertyNode pNode, Expression other)`
`static BooleanExpression`
`hasSameFieldX(FieldNode fNode, Expression other)`
`static BooleanExpression`
`hasSamePropertyX(PropertyNode pNode, Expression other)`
`static Statement`
`ifElseS(Expression cond, Statement thenStmt, Statement elseStmt)`
`static Statement`
`ifS(Expression cond, Expression trueExpr)`
`static Statement`
`ifS(Expression cond, Statement trueStmt)`
`static Expression`
`indexX(Expression target, Expression value)`
`static BooleanExpression`
`isInstanceOfX(Expression objectExpression, ClassNode cNode)`
`static BooleanExpression`
`isOneX(Expression expr)`
`static boolean`
`isOrImplements(ClassNode type, ClassNode interfaceType)`
`static BooleanExpression`
`isTrueX(Expression argExpr)`
`static BooleanExpression`
`isZeroX(Expression expr)`
`static BinaryExpression`
`ltX(Expression lhv, Expression rhv)`
`static String`
`makeDescriptorWithoutReturnType(MethodNode mn)`
`static BinaryExpression`
`neX(Expression lhv, Expression rhv)`
`static BooleanExpression`
`notNullX(Expression argExpr)`
`static NotExpression`
`notX(Expression expr)`
`static BinaryExpression`
`orX(Expression lhv, Expression rhv)`
`static Parameter`
`param(ClassNode type, String name)`
`static Parameter`
`param(ClassNode type, String name, Expression initialExpression)`
`static Parameter[]`
`params(Parameter... params)`
`static BinaryExpression`
`plusX(Expression lhv, Expression rhv)`
`static Expression`
`propX(Expression owner, String property)`
`static Expression`
`propX(Expression owner, Expression property)`
`static Statement`
`returnS(Expression expr)`
`static Statement`
`safeExpression(Expression fieldExpr, Expression expression)`
`static BooleanExpression`
`sameX(Expression self, Expression other)`
`static Statement`
`stmt(Expression expr)`
`static TernaryExpression`
`ternaryX(Expression cond, Expression trueExpr, Expression elseExpr)`
`static ThrowStatement`
`throwS(Expression expr)`
`static VariableExpression`
`varX(String name)`
`static VariableExpression`
`varX(String name, ClassNode type)`
`static VariableExpression`
`varX(Variable variable)`

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

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

## Field Details

### ASSIGN

public static final Token ASSIGN

### EQ

public static final Token EQ

### NE

public static final Token NE

### LT

public static final Token LT

### AND

public static final Token AND

### OR

public static final Token OR

### CMP

public static final Token CMP

## Constructor Details

### GeneralUtils

public GeneralUtils()

## Method Details

### andX

public static BinaryExpression andX(Expression lhv, Expression rhv)

### args

public static ArgumentListExpression args(Expression... expressions)

### args

public static ArgumentListExpression args(List<Expression> expressions)

### args

public static ArgumentListExpression args(Parameter[] parameters)

### args

public static ArgumentListExpression args(String... names)

### assignS

public static Statement assignS(Expression target, Expression value)

### assignX

public static Expression assignX(Expression target, Expression value)

### attrX

public static Expression attrX(Expression oe, Expression prop)

### binX

public static BinaryExpression binX(Expression left, Token token, Expression right)

### block

public static BlockStatement block(VariableScope varScope, Statement... stmts)

### block

public static BlockStatement block(VariableScope varScope, List<Statement> stmts)

### block

public static BlockStatement block(Statement... stmts)

### callSuperX

public static MethodCallExpression callSuperX(String methodName, Expression args)

### callSuperX

public static MethodCallExpression callSuperX(String methodName)

### callThisX

public static MethodCallExpression callThisX(String methodName, Expression args)

### callThisX

public static MethodCallExpression callThisX(String methodName)

### callX

public static MethodCallExpression callX(Expression receiver, String methodName, Expression args)

### callX

public static MethodCallExpression callX(Expression receiver, Expression method, Expression args)

### callX

public static MethodCallExpression callX(Expression receiver, String methodName)

### callX

public static StaticMethodCallExpression callX(ClassNode receiver, String methodName, Expression args)

### callX

public static StaticMethodCallExpression callX(ClassNode receiver, String methodName)

### castX

public static CastExpression castX(ClassNode type, Expression expression)

### castX

public static CastExpression castX(ClassNode type, Expression expression, boolean ignoreAutoboxing)

### classX

public static ClassExpression classX(ClassNode clazz)

### classX

public static ClassExpression classX(Class clazz)

### closureX

public static ClosureExpression closureX(Parameter[] params, Statement code)

### closureX

public static ClosureExpression closureX(Statement code)

### cloneParams

public static Parameter[] cloneParams(Parameter[] source)

### cmpX

public static BinaryExpression cmpX(Expression lhv, Expression rhv)

### constX

public static ConstantExpression constX(Object val)

### constX

public static ConstantExpression constX(Object val, boolean keepPrimitive)

### copyAnnotatedNodeAnnotations

public static void copyAnnotatedNodeAnnotations(AnnotatedNode annotatedNode, List<AnnotationNode> copied, List<AnnotationNode> notCopied)
Copies all `candidateAnnotations` with retention policy `RetentionPolicy.RUNTIME` and `RetentionPolicy.CLASS`.

Annotations with `GeneratedClosure` members are not supported at present.

### createConstructorStatementDefault

public static Statement createConstructorStatementDefault(FieldNode fNode)

### ctorX

public static ConstructorCallExpression ctorX(ClassNode type, Expression args)

### ctorX

public static ConstructorCallExpression ctorX(ClassNode type)

### ctorSuperS

public static Statement ctorSuperS(Expression args)

### ctorThisS

public static Statement ctorThisS(Expression args)

### ctorSuperS

public static Statement ctorSuperS()

### ctorThisS

public static Statement ctorThisS()

### declS

public static Statement declS(Expression target, Expression init)

### eqX

public static BinaryExpression eqX(Expression lhv, Expression rhv)

### equalsNullX

public static BooleanExpression equalsNullX(Expression argExpr)

### fieldX

public static FieldExpression fieldX(FieldNode fieldNode)

### fieldX

public static FieldExpression fieldX(ClassNode owner, String fieldName)

### findArg

public static Expression findArg(String argName)

### getAllMethods

public static List<MethodNode> getAllMethods(ClassNode type)

### getAllProperties

public static List<PropertyNode> getAllProperties(ClassNode type)

### getGetterName

public static String getGetterName(PropertyNode pNode)

### getInstanceNonPropertyFields

public static List<FieldNode> getInstanceNonPropertyFields(ClassNode cNode)

### getInstanceProperties

public static List<PropertyNode> getInstanceProperties(ClassNode cNode)

### getInstancePropertyFields

public static List<FieldNode> getInstancePropertyFields(ClassNode cNode)

### getInterfacesAndSuperInterfaces

public static Set<ClassNode> getInterfacesAndSuperInterfaces(ClassNode type)

### getSuperNonPropertyFields

public static List<FieldNode> getSuperNonPropertyFields(ClassNode cNode)

### getSuperPropertyFields

public static List<FieldNode> getSuperPropertyFields(ClassNode cNode)

### hasClassX

public static BinaryExpression hasClassX(Expression instance, ClassNode cNode)

### hasDeclaredMethod

public static boolean hasDeclaredMethod(ClassNode cNode, String name, int argsCount)

### hasEqualFieldX

public static BinaryExpression hasEqualFieldX(FieldNode fNode, Expression other)

### hasEqualPropertyX

public static BinaryExpression hasEqualPropertyX(PropertyNode pNode, Expression other)

### hasSameFieldX

public static BooleanExpression hasSameFieldX(FieldNode fNode, Expression other)

### hasSamePropertyX

public static BooleanExpression hasSamePropertyX(PropertyNode pNode, Expression other)

### ifElseS

public static Statement ifElseS(Expression cond, Statement thenStmt, Statement elseStmt)

### ifS

public static Statement ifS(Expression cond, Expression trueExpr)

### ifS

public static Statement ifS(Expression cond, Statement trueStmt)

### indexX

public static Expression indexX(Expression target, Expression value)

### isInstanceOfX

public static BooleanExpression isInstanceOfX(Expression objectExpression, ClassNode cNode)

### isOneX

public static BooleanExpression isOneX(Expression expr)

### isOrImplements

public static boolean isOrImplements(ClassNode type, ClassNode interfaceType)

### isTrueX

public static BooleanExpression isTrueX(Expression argExpr)

### isZeroX

public static BooleanExpression isZeroX(Expression expr)

### ltX

public static BinaryExpression ltX(Expression lhv, Expression rhv)

### makeDescriptorWithoutReturnType

public static String makeDescriptorWithoutReturnType(MethodNode mn)

### neX

public static BinaryExpression neX(Expression lhv, Expression rhv)

### notNullX

public static BooleanExpression notNullX(Expression argExpr)

### notX

public static NotExpression notX(Expression expr)

### orX

public static BinaryExpression orX(Expression lhv, Expression rhv)

### param

public static Parameter param(ClassNode type, String name)

### param

public static Parameter param(ClassNode type, String name, Expression initialExpression)

### params

public static Parameter[] params(Parameter... params)

### plusX

public static BinaryExpression plusX(Expression lhv, Expression rhv)

### propX

public static Expression propX(Expression owner, String property)

### propX

public static Expression propX(Expression owner, Expression property)

### returnS

public static Statement returnS(Expression expr)

### safeExpression

public static Statement safeExpression(Expression fieldExpr, Expression expression)

### sameX

public static BooleanExpression sameX(Expression self, Expression other)

### stmt

public static Statement stmt(Expression expr)

### ternaryX

public static TernaryExpression ternaryX(Expression cond, Expression trueExpr, Expression elseExpr)

### varX

public static VariableExpression varX(String name)

### varX

public static VariableExpression varX(Variable variable)

### varX

public static VariableExpression varX(String name, ClassNode type)

### throwS

public static ThrowStatement throwS(Expression expr)

### catchS

public static CatchStatement catchS(Parameter variable, Statement code)

### getterX

@Deprecated public static Expression getterX(ClassNode annotatedNode, PropertyNode pNode)
Deprecated.
use getterThisX instead

### getterThisX

public static Expression getterThisX(ClassNode annotatedNode, PropertyNode pNode)
This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.

Parameters:
  `annotatedNode` - the class node where the property node is accessed from
  `pNode` - the property being accessed
Returns:
  a method call expression or a property expression

### getterX

public static Expression getterX(ClassNode annotatedNode, Expression receiver, PropertyNode pNode)
This method is similar to `propX(Expression, Expression)` but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.

Parameters:
  `annotatedNode` - the class node where the property node is accessed from
  `receiver` - the object having the property
  `pNode` - the property being accessed
Returns:
  a method call expression or a property expression