public abstract class StaticTypeCheckingSupport extends Object
StaticTypeCheckingVisitor
.Modifier and Type | Field and Description |
---|---|
protected static ClassNode |
ArrayList_TYPE |
protected static ClassNode |
Collection_TYPE |
protected static ClassNode |
Deprecated_TYPE |
protected static Comparator<MethodNode> |
DGM_METHOD_NODE_COMPARATOR
This comparator is used when we return the list of methods from DGM which name correspond to a given
name.
|
protected static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.ExtensionMethodCache |
EXTENSION_METHOD_CACHE |
protected static ClassNode |
GSTRING_STRING_CLASSNODE |
protected static ClassNode |
Matcher_TYPE |
protected static Map<ClassNode,Integer> |
NUMBER_TYPES |
protected static ClassNode |
UNKNOWN_PARAMETER_TYPE
This is for internal use only.
|
Constructor and Description |
---|
StaticTypeCheckingSupport() |
Modifier and Type | Method and Description |
---|---|
static int |
allParametersAndArgumentsMatch(Parameter[] params,
ClassNode[] args)
Checks that arguments and parameter types match.
|
static boolean |
checkCompatibleAssignmentTypes(ClassNode left,
ClassNode right)
Returns true or false depending on whether the right classnode can be assigned to the left classnode.
|
static boolean |
checkCompatibleAssignmentTypes(ClassNode left,
ClassNode right,
Expression rightExpression) |
static boolean |
checkCompatibleAssignmentTypes(ClassNode left,
ClassNode right,
Expression rightExpression,
boolean allowConstructorCoercion) |
static List<MethodNode> |
chooseBestMethod(ClassNode receiver,
Collection<MethodNode> methods,
ClassNode... args)
Given a list of candidate methods, returns the one which best matches the argument types
|
static Set<ClassNode> |
collectAllInterfaces(ClassNode node)
Collects all interfaces of a class node, including those defined by the
super class.
|
static Object |
evaluateExpression(Expression expr,
CompilerConfiguration config)
A helper method that can be used to evaluate expressions as found in annotation
parameters.
|
static List<MethodNode> |
findDGMMethodsByNameAndArguments(ClassLoader loader,
ClassNode receiver,
String name,
ClassNode[] args) |
static List<MethodNode> |
findDGMMethodsByNameAndArguments(ClassLoader loader,
ClassNode receiver,
String name,
ClassNode[] args,
List<MethodNode> methods) |
static List<MethodNode> |
findDGMMethodsByNameAndArguments(ClassNode receiver,
String name,
ClassNode[] args)
|
static List<MethodNode> |
findDGMMethodsByNameAndArguments(ClassNode receiver,
String name,
ClassNode[] args,
List<MethodNode> methods)
|
protected static Set<MethodNode> |
findDGMMethodsForClassNode(ClassLoader loader,
ClassNode clazz,
String name) |
protected static void |
findDGMMethodsForClassNode(ClassLoader loader,
ClassNode clazz,
String name,
TreeSet<MethodNode> accumulator) |
protected static Set<MethodNode> |
findDGMMethodsForClassNode(ClassNode clazz,
String name)
Deprecated.
|
protected static void |
findDGMMethodsForClassNode(ClassNode clazz,
String name,
TreeSet<MethodNode> accumulator)
Deprecated.
|
static List<MethodNode> |
findSetters(ClassNode cn,
String setterName,
boolean voidOnly) |
protected static Variable |
findTargetVariable(VariableExpression ve)
Given a variable expression, returns the ultimately accessed variable.
|
protected static GenericsType |
fullyResolve(GenericsType gt,
Map<String,GenericsType> placeholders)
Given a generics type representing SomeClass<T,V> and a resolved placeholder map, returns a new generics type
for which placeholders are resolved recursively.
|
protected static ClassNode |
fullyResolveType(ClassNode type,
Map<String,GenericsType> placeholders) |
static boolean |
implementsInterfaceOrIsSubclassOf(ClassNode type,
ClassNode superOrInterface) |
protected static boolean |
isArrayAccessExpression(Expression expression)
Returns true for expressions of the form x[...]
|
static boolean |
isAssignment(int op) |
static boolean |
isBeingCompiled(ClassNode node) |
static boolean |
isClassClassNodeWrappingConcreteType(ClassNode classNode)
Returns true if the class node represents a the class node for the Class class
and if the parametrized type is a neither a placeholder or a wildcard.
|
static boolean |
isCompareToBoolean(int op) |
static boolean |
isGStringOrGStringStringLUB(ClassNode node) |
static boolean |
isParameterizedWithGStringOrGStringString(ClassNode node) |
static boolean |
isParameterizedWithString(ClassNode node) |
static ClassNode |
isTraitSelf(VariableExpression vexp) |
static boolean |
isUsingGenericsOrIsArrayUsingGenerics(ClassNode cn)
Returns true if a class node makes use of generic types.
|
static boolean |
isUsingUncheckedGenerics(ClassNode node)
Returns true if the provided class node, when considered as a receiver of a message or as a parameter,
is using a placeholder in its generics type.
|
static boolean |
isWildcardLeftHandSide(ClassNode node)
Tells if a class is one of the "accept all" classes as the left hand side of an
assignment.
|
static boolean |
isWithCall(String name,
Expression callArguments)
Called on method call checks in order to determine if a method call corresponds to the
idiomatic o.with { ...
|
static boolean |
missesGenericsTypes(ClassNode cn) |
static Parameter[] |
parameterizeArguments(ClassNode receiver,
MethodNode m)
Given a receiver and a method node, parameterize the method arguments using
available generic type information.
|
static ClassNode |
resolveClassNodeGenerics(Map<String,GenericsType> resolvedPlaceholders,
Map<String,GenericsType> placeholdersFromContext,
ClassNode currentType) |
protected static boolean |
typeCheckMethodArgumentWithGenerics(ClassNode parameterType,
ClassNode argumentType,
boolean lastArg)
Checks that the parameterized generics of an argument are compatible with the generics of the parameter.
|
protected static boolean |
typeCheckMethodsWithGenerics(ClassNode receiver,
ClassNode[] arguments,
MethodNode candidateMethod) |
protected static final ClassNode Collection_TYPE
protected static final ClassNode Deprecated_TYPE
protected static final ClassNode Matcher_TYPE
protected static final ClassNode ArrayList_TYPE
protected static final org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.ExtensionMethodCache EXTENSION_METHOD_CACHE
protected static final ClassNode GSTRING_STRING_CLASSNODE
protected static final ClassNode UNKNOWN_PARAMETER_TYPE
protected static final Comparator<MethodNode> DGM_METHOD_NODE_COMPARATOR
protected static boolean isArrayAccessExpression(Expression expression)
expression
- an expressionpublic static boolean isWithCall(String name, Expression callArguments)
name
- name of the method calledcallArguments
- arguments of the methodprotected static Variable findTargetVariable(VariableExpression ve)
ve
- a variable expression@Deprecated protected static Set<MethodNode> findDGMMethodsForClassNode(ClassNode clazz, String name)
findDGMMethodsForClassNode(ClassLoader,ClassNode,String)
insteadprotected static Set<MethodNode> findDGMMethodsForClassNode(ClassLoader loader, ClassNode clazz, String name)
@Deprecated protected static void findDGMMethodsForClassNode(ClassNode clazz, String name, TreeSet<MethodNode> accumulator)
findDGMMethodsForClassNode(ClassLoader, ClassNode, String, TreeSet)
insteadprotected static void findDGMMethodsForClassNode(ClassLoader loader, ClassNode clazz, String name, TreeSet<MethodNode> accumulator)
public static int allParametersAndArgumentsMatch(Parameter[] params, ClassNode[] args)
params
- method parametersargs
- type argumentspublic static boolean isCompareToBoolean(int op)
public static boolean isAssignment(int op)
public static boolean checkCompatibleAssignmentTypes(ClassNode left, ClassNode right)
left
- the class to be assigned toright
- the assignee classpublic static boolean checkCompatibleAssignmentTypes(ClassNode left, ClassNode right, Expression rightExpression)
public static boolean checkCompatibleAssignmentTypes(ClassNode left, ClassNode right, Expression rightExpression, boolean allowConstructorCoercion)
public static boolean isWildcardLeftHandSide(ClassNode node)
node
- the classnode to testpublic static boolean isBeingCompiled(ClassNode node)
public static boolean implementsInterfaceOrIsSubclassOf(ClassNode type, ClassNode superOrInterface)
@Deprecated public static List<MethodNode> findDGMMethodsByNameAndArguments(ClassNode receiver, String name, ClassNode[] args)
public static List<MethodNode> findDGMMethodsByNameAndArguments(ClassLoader loader, ClassNode receiver, String name, ClassNode[] args)
@Deprecated public static List<MethodNode> findDGMMethodsByNameAndArguments(ClassNode receiver, String name, ClassNode[] args, List<MethodNode> methods)
public static List<MethodNode> findDGMMethodsByNameAndArguments(ClassLoader loader, ClassNode receiver, String name, ClassNode[] args, List<MethodNode> methods)
public static boolean isUsingUncheckedGenerics(ClassNode node)
node
- the node to testpublic static List<MethodNode> chooseBestMethod(ClassNode receiver, Collection<MethodNode> methods, ClassNode... args)
receiver
- methods
- candidate methodsargs
- argument typespublic static Parameter[] parameterizeArguments(ClassNode receiver, MethodNode m)
receiver
- the classm
- the methodpublic static boolean isUsingGenericsOrIsArrayUsingGenerics(ClassNode cn)
cn
- a class node for which to check if it is using genericsprotected static GenericsType fullyResolve(GenericsType gt, Map<String,GenericsType> placeholders)
protected static ClassNode fullyResolveType(ClassNode type, Map<String,GenericsType> placeholders)
protected static boolean typeCheckMethodArgumentWithGenerics(ClassNode parameterType, ClassNode argumentType, boolean lastArg)
parameterType
- the parameter type of a methodargumentType
- the type of the argument passed to the methodprotected static boolean typeCheckMethodsWithGenerics(ClassNode receiver, ClassNode[] arguments, MethodNode candidateMethod)
public static ClassNode resolveClassNodeGenerics(Map<String,GenericsType> resolvedPlaceholders, Map<String,GenericsType> placeholdersFromContext, ClassNode currentType)
public static boolean isGStringOrGStringStringLUB(ClassNode node)
public static boolean isParameterizedWithGStringOrGStringString(ClassNode node)
node
- the node to be testedpublic static boolean isParameterizedWithString(ClassNode node)
node
- the node to be testedpublic static boolean missesGenericsTypes(ClassNode cn)
public static Object evaluateExpression(Expression expr, CompilerConfiguration config)
expr
- the expression to be evaluatedconfig
- the compiler configurationpublic static Set<ClassNode> collectAllInterfaces(ClassNode node)
node
- a class for which we want to retrieve all interfacespublic static boolean isClassClassNodeWrappingConcreteType(ClassNode classNode)
classNode
- a class node to be testedpublic static List<MethodNode> findSetters(ClassNode cn, String setterName, boolean voidOnly)
public static ClassNode isTraitSelf(VariableExpression vexp)