public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport
Modifier and Type | Class and Description |
---|---|
protected static interface |
StaticTypeCheckingVisitor.SignatureCodec |
protected static class |
StaticTypeCheckingVisitor.SignatureCodecFactory |
Modifier and Type | Field and Description |
---|---|
static MethodNode |
CLOSURE_CALL_NO_ARG |
static MethodNode |
CLOSURE_CALL_ONE_ARG |
static MethodNode |
CLOSURE_CALL_VARGS |
Constructor and Description |
---|
StaticTypeCheckingVisitor(SourceUnit source,
ClassNode cn,
TypeCheckerPluginFactory pluginFactory) |
visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClassCodeContainer, visitConstructor, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitImports, visitObjectInitializerStatements, visitPackage, visitProperty, visitStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement
visitArgumentlistExpression, visitArrayExpression, visitBooleanExpression, visitBytecodeExpression, visitClosureListExpression, visitConstantExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodPointerExpression, visitNotExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitTupleExpression
public static final MethodNode CLOSURE_CALL_NO_ARG
public static final MethodNode CLOSURE_CALL_ONE_ARG
public static final MethodNode CLOSURE_CALL_VARGS
public StaticTypeCheckingVisitor(SourceUnit source, ClassNode cn, TypeCheckerPluginFactory pluginFactory)
protected SourceUnit getSourceUnit()
getSourceUnit
in class ClassCodeVisitorSupport
public void setErrorCollector(ErrorCollector errorCollector)
errorCollector
- an error collectorpublic void visitClass(ClassNode node)
GroovyClassVisitor
visitClass
in interface GroovyClassVisitor
visitClass
in class ClassCodeVisitorSupport
protected boolean shouldSkipClassNode(ClassNode node)
protected ClassNode[] getTypeCheckingAnnotations()
TypeChecked
.public boolean isSkipMode(AnnotatedNode node)
public void visitClassExpression(ClassExpression expression)
visitClassExpression
in interface GroovyCodeVisitor
visitClassExpression
in class CodeVisitorSupport
public void visitVariableExpression(VariableExpression vexp)
visitVariableExpression
in interface GroovyCodeVisitor
visitVariableExpression
in class CodeVisitorSupport
public void visitPropertyExpression(PropertyExpression pexp)
visitPropertyExpression
in interface GroovyCodeVisitor
visitPropertyExpression
in class CodeVisitorSupport
public void visitAttributeExpression(AttributeExpression expression)
visitAttributeExpression
in interface GroovyCodeVisitor
visitAttributeExpression
in class CodeVisitorSupport
public void visitRangeExpression(RangeExpression expression)
visitRangeExpression
in interface GroovyCodeVisitor
visitRangeExpression
in class CodeVisitorSupport
public void visitBinaryExpression(BinaryExpression expression)
visitBinaryExpression
in interface GroovyCodeVisitor
visitBinaryExpression
in class CodeVisitorSupport
protected boolean existsProperty(PropertyExpression pexp, boolean checkForReadOnly, ClassCodeVisitorSupport visitor)
pexp
- a property expressioncheckForReadOnly
- also lookup for read only propertiesvisitor
- if not null, when the property node is found, visit it with the provided visitorprotected boolean hasSetter(PropertyExpression pexp)
public void visitField(FieldNode node)
GroovyClassVisitor
visitField
in interface GroovyClassVisitor
visitField
in class ClassCodeVisitorSupport
public void visitForLoop(ForStatement forLoop)
visitForLoop
in interface GroovyCodeVisitor
visitForLoop
in class ClassCodeVisitorSupport
public static ClassNode inferLoopElementType(ClassNode collectionType)
collectionType
- the type of the collectionpublic void visitWhileLoop(WhileStatement loop)
visitWhileLoop
in interface GroovyCodeVisitor
visitWhileLoop
in class ClassCodeVisitorSupport
public void visitBitwiseNegationExpression(BitwiseNegationExpression expression)
visitBitwiseNegationExpression
in interface GroovyCodeVisitor
visitBitwiseNegationExpression
in class CodeVisitorSupport
public void visitUnaryPlusExpression(UnaryPlusExpression expression)
visitUnaryPlusExpression
in interface GroovyCodeVisitor
visitUnaryPlusExpression
in class CodeVisitorSupport
public void visitUnaryMinusExpression(UnaryMinusExpression expression)
visitUnaryMinusExpression
in interface GroovyCodeVisitor
visitUnaryMinusExpression
in class CodeVisitorSupport
public void visitPostfixExpression(PostfixExpression expression)
visitPostfixExpression
in interface GroovyCodeVisitor
visitPostfixExpression
in class CodeVisitorSupport
public void visitPrefixExpression(PrefixExpression expression)
visitPrefixExpression
in interface GroovyCodeVisitor
visitPrefixExpression
in class CodeVisitorSupport
protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor)
visitConstructorOrMethod
in class ClassCodeVisitorSupport
public void visitReturnStatement(ReturnStatement statement)
visitReturnStatement
in interface GroovyCodeVisitor
visitReturnStatement
in class ClassCodeVisitorSupport
public void visitConstructorCallExpression(ConstructorCallExpression call)
visitConstructorCallExpression
in interface GroovyCodeVisitor
visitConstructorCallExpression
in class CodeVisitorSupport
public void visitClosureExpression(ClosureExpression expression)
visitClosureExpression
in interface GroovyCodeVisitor
visitClosureExpression
in class CodeVisitorSupport
protected boolean shouldSkipMethodNode(MethodNode node)
public void visitMethod(MethodNode node)
GroovyClassVisitor
visitMethod
in interface GroovyClassVisitor
visitMethod
in class ClassCodeVisitorSupport
protected void addTypeCheckingInfoAnnotation(MethodNode node)
public void visitStaticMethodCallExpression(StaticMethodCallExpression call)
visitStaticMethodCallExpression
in interface GroovyCodeVisitor
visitStaticMethodCallExpression
in class CodeVisitorSupport
public void visitMethodCallExpression(MethodCallExpression call)
visitMethodCallExpression
in interface GroovyCodeVisitor
visitMethodCallExpression
in class CodeVisitorSupport
public void visitIfElse(IfStatement ifElse)
visitIfElse
in interface GroovyCodeVisitor
visitIfElse
in class ClassCodeVisitorSupport
public void visitCastExpression(CastExpression expression)
visitCastExpression
in interface GroovyCodeVisitor
visitCastExpression
in class CodeVisitorSupport
public void visitTernaryExpression(TernaryExpression expression)
visitTernaryExpression
in interface GroovyCodeVisitor
visitTernaryExpression
in class CodeVisitorSupport
public void visitTryCatchFinally(TryCatchStatement statement)
visitTryCatchFinally
in interface GroovyCodeVisitor
visitTryCatchFinally
in class ClassCodeVisitorSupport
protected ClassNode inferComponentType(ClassNode containerType, ClassNode indexType)
protected MethodNode findMethodOrFail(Expression expr, ClassNode receiver, java.lang.String name, ClassNode... args)
protected void addError(java.lang.String msg, ASTNode expr)
addError
in class ClassCodeVisitorSupport
protected void addStaticTypeError(java.lang.String msg, ASTNode expr)
public void setMethodsToBeVisited(java.util.Set<MethodNode> methodsToBeVisited)
public void performSecondPass()