Class AbstractTypeCheckingExtension
java.lang.Object
org.codehaus.groovy.transform.stc.TypeCheckingExtension
org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension
- Direct Known Subclasses:
GroovyTypeCheckingExtensionSupport
,TraitTypeCheckingExtension
public class AbstractTypeCheckingExtension extends TypeCheckingExtension
Custom type checking extensions may extend this method in order to benefit from a lot of support methods.
The methods found in this class are made directly available in type checking scripts
through the GroovyTypeCheckingExtensionSupport
class.
- Since:
- 2.3.0
-
Field Summary
Fields Modifier and Type Field Description protected TypeCheckingContext
context
protected boolean
debug
protected boolean
handled
Fields inherited from class org.codehaus.groovy.transform.stc.TypeCheckingExtension
typeCheckingVisitor
-
Constructor Summary
Constructors Constructor Description AbstractTypeCheckingExtension(StaticTypeCheckingVisitor typeCheckingVisitor)
-
Method Summary
Modifier and Type Method Description boolean
argTypeMatches(ClassNode[] argTypes, int index, java.lang.Class clazz)
boolean
argTypeMatches(MethodCall call, int index, java.lang.Class clazz)
boolean
argTypesMatches(ClassNode[] argTypes, java.lang.Class... classes)
boolean
argTypesMatches(MethodCall call, java.lang.Class... classes)
void
delegatesTo(ClassNode type)
void
delegatesTo(ClassNode type, int strategy)
void
delegatesTo(ClassNode type, int strategy, org.codehaus.groovy.transform.stc.DelegationMetadata parent)
boolean
firstArgTypesMatches(ClassNode[] argTypes, java.lang.Class... classes)
boolean
firstArgTypesMatches(MethodCall call, java.lang.Class... classes)
ArgumentListExpression
getArguments(MethodCall call)
org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope
getCurrentScope()
BinaryExpression
getEnclosingBinaryExpression()
java.util.List<BinaryExpression>
getEnclosingBinaryExpressionStack()
ClassNode
getEnclosingClassNode()
java.util.List<ClassNode>
getEnclosingClassNodes()
TypeCheckingContext.EnclosingClosure
getEnclosingClosure()
java.util.List<TypeCheckingContext.EnclosingClosure>
getEnclosingClosureStack()
MethodNode
getEnclosingMethod()
Expression
getEnclosingMethodCall()
java.util.List<Expression>
getEnclosingMethodCalls()
java.util.List<MethodNode>
getEnclosingMethods()
java.util.Set<MethodNode>
getGeneratedMethods()
boolean
isAnnotatedBy(ASTNode node, java.lang.Class annotation)
boolean
isAnnotatedBy(ASTNode node, ClassNode annotation)
boolean
isDynamic(VariableExpression var)
boolean
isExtensionMethod(MethodNode node)
boolean
isGenerated(MethodNode node)
boolean
isMethodCall(java.lang.Object o)
void
log(java.lang.String message)
MethodNode
makeDynamic(MethodCall call)
Used to instruct the type checker that the call is a dynamic method call.MethodNode
makeDynamic(MethodCall call, ClassNode returnType)
Used to instruct the type checker that the call is a dynamic method call.void
makeDynamic(PropertyExpression pexp)
Instructs the type checker that a property access is dynamic, returning an instance of an Object.void
makeDynamic(PropertyExpression pexp, ClassNode returnType)
Instructs the type checker that a property access is dynamic.void
makeDynamic(VariableExpression vexp)
Instructs the type checker that an unresolved variable is a dynamic variable of type Object.void
makeDynamic(VariableExpression vexp, ClassNode returnType)
Instructs the type checker that an unresolved variable is a dynamic variable.MethodNode
newMethod(java.lang.String name, java.lang.Class returnType)
MethodNode
newMethod(java.lang.String name, java.util.concurrent.Callable<ClassNode> returnType)
MethodNode
newMethod(java.lang.String name, ClassNode returnType)
org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope
newScope()
org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope
newScope(Closure code)
BinaryExpression
popEnclosingBinaryExpression()
ClassNode
popEnclosingClassNode()
TypeCheckingContext.EnclosingClosure
popEnclosingClosure()
MethodNode
popEnclosingMethod()
Expression
popEnclosingMethodCall()
void
popTemporaryTypeInfo()
void
pushEnclosingBinaryExpression(BinaryExpression binaryExpression)
void
pushEnclosingClassNode(ClassNode classNode)
void
pushEnclosingClosureExpression(ClosureExpression closureExpression)
void
pushEnclosingMethod(MethodNode methodNode)
void
pushEnclosingMethodCall(Expression call)
void
pushTemporaryTypeInfo()
protected java.lang.Object
safeCall(Closure closure, java.lang.Object... args)
org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope
scopeExit()
org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope
scopeExit(Closure code)
void
setHandled(boolean handled)
java.util.List<MethodNode>
unique(MethodNode node)
<R> R
withTypeChecker(Closure<R> code)
Methods inherited from class org.codehaus.groovy.transform.stc.TypeCheckingExtension
addStaticTypeError, afterMethodCall, afterVisitClass, afterVisitMethod, beforeMethodCall, beforeVisitClass, beforeVisitMethod, buildListType, buildMapType, classNodeFor, classNodeFor, existsProperty, existsProperty, extractStaticReceiver, finish, getArgumentTypes, getTargetMethod, getType, handleAmbiguousMethods, handleIncompatibleAssignment, handleIncompatibleReturnType, handleMissingMethod, handleUnresolvedAttribute, handleUnresolvedProperty, handleUnresolvedVariableExpression, isStaticMethodCallOnClass, lookupClassNodeFor, onMethodSelection, parameterizedType, setup, storeType
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
context
-
handled
protected boolean handled -
debug
protected boolean debug
-
-
Constructor Details
-
AbstractTypeCheckingExtension
-
-
Method Details
-
setHandled
public void setHandled(boolean handled) -
newScope
public org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope newScope() -
newScope
public org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope newScope(Closure code) -
scopeExit
public org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope scopeExit() -
getCurrentScope
public org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope getCurrentScope() -
scopeExit
public org.codehaus.groovy.transform.stc.AbstractTypeCheckingExtension.TypeCheckingScope scopeExit(Closure code) -
isGenerated
-
unique
-
newMethod
-
newMethod
-
newMethod
public MethodNode newMethod(java.lang.String name, java.util.concurrent.Callable<ClassNode> returnType) -
delegatesTo
-
delegatesTo
-
delegatesTo
public void delegatesTo(ClassNode type, int strategy, org.codehaus.groovy.transform.stc.DelegationMetadata parent) -
isAnnotatedBy
-
isAnnotatedBy
-
isDynamic
-
isExtensionMethod
-
getArguments
-
safeCall
-
isMethodCall
public boolean isMethodCall(java.lang.Object o) -
argTypesMatches
-
argTypesMatches
-
firstArgTypesMatches
-
firstArgTypesMatches
-
argTypeMatches
-
argTypeMatches
-
withTypeChecker
-
makeDynamic
Used to instruct the type checker that the call is a dynamic method call. Calling this method automatically sets the handled flag to true. The expected return type of the dynamic method call is Object.- Parameters:
call
- the method call which is a dynamic method call- Returns:
- a virtual method node with the same name as the expected call
-
makeDynamic
Used to instruct the type checker that the call is a dynamic method call. Calling this method automatically sets the handled flag to true.- Parameters:
call
- the method call which is a dynamic method callreturnType
- the expected return type of the dynamic call- Returns:
- a virtual method node with the same name as the expected call
-
makeDynamic
Instructs the type checker that a property access is dynamic, returning an instance of an Object. Calling this method automatically sets the handled flag to true.- Parameters:
pexp
- the property or attribute expression
-
makeDynamic
Instructs the type checker that a property access is dynamic. Calling this method automatically sets the handled flag to true.- Parameters:
pexp
- the property or attribute expressionreturnType
- the type of the property
-
makeDynamic
Instructs the type checker that an unresolved variable is a dynamic variable of type Object. Calling this method automatically sets the handled flag to true.- Parameters:
vexp
- the dynamic variable
-
makeDynamic
Instructs the type checker that an unresolved variable is a dynamic variable.- Parameters:
returnType
- the type of the dynamic variable Calling this method automatically sets the handled flag to true.vexp
- the dynamic variable
-
log
public void log(java.lang.String message) -
getEnclosingBinaryExpression
-
pushEnclosingBinaryExpression
-
pushEnclosingClosureExpression
-
getEnclosingMethodCall
-
popEnclosingMethodCall
-
popEnclosingMethod
-
getEnclosingClassNode
-
getEnclosingMethods
-
getEnclosingMethod
-
popTemporaryTypeInfo
public void popTemporaryTypeInfo() -
pushEnclosingClassNode
-
popEnclosingBinaryExpression
-
getEnclosingClassNodes
-
getEnclosingClosureStack
-
popEnclosingClassNode
-
pushEnclosingMethod
-
getGeneratedMethods
-
getEnclosingBinaryExpressionStack
-
getEnclosingClosure
-
getEnclosingMethodCalls
-
pushEnclosingMethodCall
-
popEnclosingClosure
-
pushTemporaryTypeInfo
public void pushTemporaryTypeInfo()
-