Package org.apache.groovy.ast.tools
Class ExpressionUtils
java.lang.Object
org.apache.groovy.ast.tools.ExpressionUtils
- 
Method SummaryModifier and TypeMethodDescriptionstatic booleanisNullConstant(Expression expression) static booleanisNumberOrArrayOfNumber(ClassNode targetType, boolean recurse) Determines if a type is derived from Number (or array thereof).static booleanisSuperExpression(Expression expression) static booleanisThisExpression(Expression expression) static booleanisThisOrSuper(Expression expression) static booleanisTypeOrArrayOfType(ClassNode targetType, ClassNode type, boolean recurse) Determines if a type matches another type (or array thereof).static ConstantExpressiontransformBinaryConstantExpression(BinaryExpression be, ClassNode targetType) Converts expressions like ConstantExpression(40) + ConstantExpression(2) into the simplified ConstantExpression(42) at compile time.static ExpressionTransforms constants that would appear in annotations so they aren't lost.static ExpressiontransformInlineConstants(Expression exp, ClassNode attrType) Converts simple expressions of constants into pre-evaluated simple constants.static ExpressiontransformListOfConstants(ListExpression origList, ClassNode attrType) Given a list of constants, transform each item in the list.
- 
Method Details- 
isNullConstant
- 
isThisExpression
- 
isSuperExpression
- 
isThisOrSuper
- 
isTypeOrArrayOfTypeDetermines if a type matches another type (or array thereof).- Parameters:
- targetType- the candidate type
- type- the type we are checking against
- recurse- true if we can have multi-dimension arrays; should be false for annotation member types
- Returns:
- true if the type equals the targetType or array thereof
 
- 
isNumberOrArrayOfNumberDetermines if a type is derived from Number (or array thereof).- Parameters:
- targetType- the candidate type
- recurse- true if we can have multi-dimension arrays; should be false for annotation member types
- Returns:
- true if the type equals the targetType or array thereof
 
- 
transformBinaryConstantExpressionpublic static ConstantExpression transformBinaryConstantExpression(BinaryExpression be, ClassNode targetType) Converts expressions like ConstantExpression(40) + ConstantExpression(2) into the simplified ConstantExpression(42) at compile time.- Parameters:
- be- the binary expression
- targetType- the type of the result
- Returns:
- the transformed expression or the original if no transformation was performed
 
- 
transformInlineConstantsTransforms constants that would appear in annotations so they aren't lost. Subsequent processing determines whether they are valid, this retains the constant value as a constant expression.The attribute values of annotations must be primitive, string, annotation or enumeration constants. In various places such constants can be seen during type resolution but won't be readily accessible in later phases, e.g. they might be embedded into constructor code. - Parameters:
- exp- the original expression
- Returns:
- original or transformed expression
 
- 
transformInlineConstantsConverts simple expressions of constants into pre-evaluated simple constants. Handles:- Property expressions - referencing constants
- Variable expressions - referencing constants
- Typecast expressions - referencing constants
- Binary expressions - string concatenation and numeric +, -, /, *
- List expressions - list of constants
 - Parameters:
- exp- the original expression
- attrType- the type that the final constant should be
- Returns:
- the transformed type or the original if no transformation was possible
 
- 
transformListOfConstantsGiven a list of constants, transform each item in the list.- Parameters:
- origList- the list to transform
- attrType- the target type
- Returns:
- the transformed list or the original if nothing was changed
 
 
-