Package org.codehaus.groovy.control
Class ResolveVisitor
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeExpressionTransformer
org.codehaus.groovy.control.ResolveVisitor
- All Implemented Interfaces:
ExpressionTransformer,GroovyClassVisitor,GroovyCodeVisitor,ErrorCollecting
- Direct Known Subclasses:
JavaAwareResolveVisitor
Visitor to resolve types and convert VariableExpression to
ClassExpressions if needed. The ResolveVisitor will try to
find the Class for a ClassExpression and prints an error if
it fails to do so. Constructions like C[], foo as C, (C) foo
will force creation of a ClassExpression for C
Note: the method to start the resolving is startResolving(ClassNode,SourceUnit).
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected SourceUnitProvides access to theSourceUnitfor error reporting during visitation.protected booleanprotected booleanresolve(ClassNode type, boolean testModuleImports, boolean testDefaultImports, boolean testStaticInnerClasses) protected booleanprotected booleanprotected booleanresolveFromDefaultImports(ClassNode type, String[] packagePrefixes) protected booleanresolveFromModule(ClassNode type, boolean testModuleImports) protected booleanprotected booleanresolveNestedClass(ClassNode type) protected booleanresolveToInner(ClassNode type) protected booleanresolveToOuter(ClassNode type) voidsetClassNodeResolver(ClassNodeResolver classNodeResolver) voidstartResolving(ClassNode node, SourceUnit source) transform(Expression exp) NOTE: This method does not visit Expressions within Closures, for performance and historical reasons.protected Expressionprotected Expressionprotected Expressionprotected Expressionprotected Expressionprotected Expressionprotected Expressionprotected Expressionprotected voidVisits an individualAnnotationNode, traversing all member expression values.voidVisits aBlockStatement, invoking the statement hook before parent traversal.voidVisits aCatchStatement, processing variable annotations and invoking the statement hook.voidvisitClass(ClassNode node) Visits aClassNode, processing its annotations, package, imports, contents, and object initializers.protected voidvisitConstructorOrMethod(MethodNode node, boolean isConstructor) Visits a constructor or method node (implementation detail for both visit methods).voidvisitField(FieldNode node) Visits aFieldNode, processing its annotations and initial value expression if present.voidvisitForLoop(ForStatement forLoop) Visits aForStatement, invoking statement hooks and processing loop variable annotations.voidvisitProperty(PropertyNode node) Visits aPropertyNode, processing its annotations, initial value expression, and getter/setter blocks if present.protected voidvisitStatementAnnotations(Statement statement) Resolves the class nodes of any annotations attached to a loop statement (stored in statement metadata rather than inAnnotatedNode).Methods inherited from class org.codehaus.groovy.ast.ClassCodeExpressionTransformer
setSourcePosition, visitAssertStatement, visitCaseStatement, visitClosureExpression, visitDoWhileLoop, visitExpressionStatement, visitIfElse, visitReturnStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitWhileLoopMethods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAnnotations, visitAnnotations, visitBreakStatement, visitClassCodeContainer, visitConstructor, visitContinueStatement, visitDeclarationExpression, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitStatement, visitTryCatchFinallyMethods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpressionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visit, visit, visitEmptyExpression, visitListOfExpressions
-
Field Details
-
DEFAULT_IMPORTS
-
EMPTY_STRING_ARRAY
-
QUESTION_MARK
- See Also:
-
-
Constructor Details
-
ResolveVisitor
-
-
Method Details
-
setClassNodeResolver
-
startResolving
-
getSourceUnit
Description copied from class:ClassCodeVisitorSupportProvides access to theSourceUnitfor error reporting during visitation. Implementations must override this method.- Specified by:
getSourceUnitin classClassCodeVisitorSupport- Returns:
- the source unit for this visitor
-
visitField
Description copied from class:ClassCodeVisitorSupportVisits aFieldNode, processing its annotations and initial value expression if present.- Specified by:
visitFieldin interfaceGroovyClassVisitor- Overrides:
visitFieldin classClassCodeExpressionTransformer- Parameters:
node- the field node to visit
-
visitProperty
Description copied from class:ClassCodeVisitorSupportVisits aPropertyNode, processing its annotations, initial value expression, and getter/setter blocks if present.- Specified by:
visitPropertyin interfaceGroovyClassVisitor- Overrides:
visitPropertyin classClassCodeExpressionTransformer- Parameters:
node- the property node to visit
-
visitConstructorOrMethod
Description copied from class:ClassCodeVisitorSupportVisits a constructor or method node (implementation detail for both visit methods). Processes the node's annotations, all parameter annotations, and code block.- Overrides:
visitConstructorOrMethodin classClassCodeExpressionTransformer- Parameters:
node- the method or constructor nodeisConstructor- true if node is a constructor, false if it is a method
-
resolveToInner
-
resolve
-
resolve
protected boolean resolve(ClassNode type, boolean testModuleImports, boolean testDefaultImports, boolean testStaticInnerClasses) -
resolveNestedClass
-
resolveFromStaticInnerClasses
-
resolveFromDefaultImports
-
resolveFromDefaultImports
-
resolveFromCompileUnit
-
resolveFromModule
-
resolveToOuter
-
transform
Description copied from class:ClassCodeExpressionTransformerNOTE: This method does not visit Expressions within Closures, for performance and historical reasons. If you want those Expressions to be visited, you can do this:public class YourTransformer extends ClassCodeExpressionTransformer { ... @Override public Expression transform(final Expression expr) { if (expr instanceof ClosureExpression) { expr.visit(this); return expr; } // ... } }- Specified by:
transformin interfaceExpressionTransformer- Overrides:
transformin classClassCodeExpressionTransformer- Parameters:
exp- the expression to transform, may be null- Returns:
- the transformed expression, may be the same instance, a new instance, or null
-
transformPropertyExpression
-
transformVariableExpression
-
transformBinaryExpression
-
transformClosureExpression
-
transformConstructorCallExpression
-
transformMethodCallExpression
-
transformDeclarationExpression
-
transformAnnotationConstantExpression
-
visitAnnotation
Description copied from class:ClassCodeVisitorSupportVisits an individualAnnotationNode, traversing all member expression values. Subclasses may override to perform custom annotation processing.- Overrides:
visitAnnotationin classClassCodeExpressionTransformer- Parameters:
node- the annotation node to visit
-
visitClass
Description copied from class:ClassCodeVisitorSupportVisits aClassNode, processing its annotations, package, imports, contents, and object initializers.- Specified by:
visitClassin interfaceGroovyClassVisitor- Overrides:
visitClassin classClassCodeVisitorSupport- Parameters:
node- the class node to visit
-
visitCatchStatement
Description copied from class:ClassCodeVisitorSupportVisits aCatchStatement, processing variable annotations and invoking the statement hook.- Specified by:
visitCatchStatementin interfaceGroovyCodeVisitor- Overrides:
visitCatchStatementin classClassCodeVisitorSupport- Parameters:
cs- the catch statement to visit
-
visitStatementAnnotations
Resolves the class nodes of any annotations attached to a loop statement (stored in statement metadata rather than inAnnotatedNode).- Overrides:
visitStatementAnnotationsin classClassCodeVisitorSupport- Parameters:
statement- the loop statement that may have statement-level annotations
-
visitForLoop
Description copied from class:ClassCodeVisitorSupportVisits aForStatement, invoking statement hooks and processing loop variable annotations.- Specified by:
visitForLoopin interfaceGroovyCodeVisitor- Overrides:
visitForLoopin classClassCodeExpressionTransformer- Parameters:
forLoop- the for statement to visit
-
visitBlockStatement
Description copied from class:ClassCodeVisitorSupportVisits aBlockStatement, invoking the statement hook before parent traversal.- Specified by:
visitBlockStatementin interfaceGroovyCodeVisitor- Overrides:
visitBlockStatementin classClassCodeVisitorSupport- Parameters:
block- the block statement to visit- See Also:
-