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
- Direct Known Subclasses:
- JavaAwareResolveVisitor
public class ResolveVisitor
- extends ClassCodeExpressionTransformer
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).
- Author:
- Jochen Theodorou
Method Summary |
private void |
ambiguousClass(ClassNode type,
ClassNode iType,
java.lang.String name,
boolean resolved)
|
private Expression |
correctClassClassChain(PropertyExpression pe)
|
protected SourceUnit |
getSourceUnit()
|
private long |
getTimeStamp(java.lang.Class cls)
|
private boolean |
isSourceNewer(java.net.URL source,
java.lang.Class cls)
|
private java.lang.String |
lookupClassName(PropertyExpression pe)
|
private boolean |
resolve(ClassNode type)
|
private boolean |
resolve(ClassNode type,
boolean testModuleImports,
boolean testDefaultImports,
boolean testStaticInnerClasses)
|
private boolean |
resolveAliasFromModule(ClassNode type)
|
private boolean |
resolveFromClassCache(ClassNode type)
|
private boolean |
resolveFromCompileUnit(ClassNode type)
|
private boolean |
resolveFromDefaultImports(ClassNode type,
boolean testDefaultImports)
|
private boolean |
resolveFromModule(ClassNode type,
boolean testModuleImports)
|
private boolean |
resolveFromStaticInnerClasses(ClassNode type,
boolean testStaticInnerClasses)
|
private void |
resolveGenericsHeader(GenericsType[] types)
|
private void |
resolveGenericsType(GenericsType genericsType)
|
private void |
resolveGenericsTypes(GenericsType[] types)
|
private void |
resolveOrFail(ClassNode type,
ASTNode node)
|
private void |
resolveOrFail(ClassNode type,
ASTNode node,
boolean prefereImports)
|
private void |
resolveOrFail(ClassNode type,
java.lang.String msg,
ASTNode node)
|
private boolean |
resolveToClass(ClassNode type)
|
private boolean |
resolveToInner(ClassNode type)
|
private boolean |
resolveToScript(ClassNode type)
|
private void |
setClass(ClassNode n,
java.lang.Class cls)
|
void |
startResolving(ClassNode node,
SourceUnit source)
|
Expression |
transform(Expression exp)
Transforms the given expression into another expression |
protected Expression |
transformAnnotationConstantExpression(AnnotationConstantExpression ace)
|
protected Expression |
transformBinaryExpression(BinaryExpression be)
|
protected Expression |
transformClosureExpression(ClosureExpression ce)
|
protected Expression |
transformConstructorCallExpression(ConstructorCallExpression cce)
|
protected Expression |
transformDeclarationExpression(DeclarationExpression de)
|
protected Expression |
transformMethodCallExpression(MethodCallExpression mce)
|
protected Expression |
transformPropertyExpression(PropertyExpression pe)
|
protected Expression |
transformVariableExpression(VariableExpression ve)
|
void |
visitAnnotations(AnnotatedNode node)
|
void |
visitBlockStatement(BlockStatement block)
|
void |
visitCatchStatement(CatchStatement cs)
|
void |
visitClass(ClassNode node)
|
protected void |
visitConstructorOrMethod(MethodNode node,
boolean isConstructor)
|
void |
visitField(FieldNode node)
|
void |
visitForLoop(ForStatement forLoop)
|
void |
visitProperty(PropertyNode node)
|
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport |
visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitCastExpression, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitDeclarationExpression, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitRegexExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
currentClass
private ClassNode currentClass
DEFAULT_IMPORTS
public static final java.lang.String[] DEFAULT_IMPORTS
compilationUnit
private CompilationUnit compilationUnit
cachedClasses
private java.util.Map cachedClasses
NO_CLASS
private static final java.lang.Object NO_CLASS
SCRIPT
private static final java.lang.Object SCRIPT
source
private SourceUnit source
currentScope
private VariableScope currentScope
isTopLevelProperty
private boolean isTopLevelProperty
inPropertyExpression
private boolean inPropertyExpression
inClosure
private boolean inClosure
isSpecialConstructorCall
private boolean isSpecialConstructorCall
genericParameterNames
private java.util.Map genericParameterNames
ResolveVisitor
public ResolveVisitor(CompilationUnit cu)
startResolving
public void startResolving(ClassNode node,
SourceUnit source)
visitConstructorOrMethod
protected void visitConstructorOrMethod(MethodNode node,
boolean isConstructor)
- Overrides:
visitConstructorOrMethod
in class ClassCodeExpressionTransformer
visitField
public void visitField(FieldNode node)
- Specified by:
visitField
in interface GroovyClassVisitor
- Overrides:
visitField
in class ClassCodeExpressionTransformer
visitProperty
public void visitProperty(PropertyNode node)
- Specified by:
visitProperty
in interface GroovyClassVisitor
- Overrides:
visitProperty
in class ClassCodeExpressionTransformer
resolveToInner
private boolean resolveToInner(ClassNode type)
resolveOrFail
private void resolveOrFail(ClassNode type,
java.lang.String msg,
ASTNode node)
resolveOrFail
private void resolveOrFail(ClassNode type,
ASTNode node,
boolean prefereImports)
resolveOrFail
private void resolveOrFail(ClassNode type,
ASTNode node)
resolve
private boolean resolve(ClassNode type)
resolve
private boolean resolve(ClassNode type,
boolean testModuleImports,
boolean testDefaultImports,
boolean testStaticInnerClasses)
resolveFromClassCache
private boolean resolveFromClassCache(ClassNode type)
getTimeStamp
private long getTimeStamp(java.lang.Class cls)
isSourceNewer
private boolean isSourceNewer(java.net.URL source,
java.lang.Class cls)
resolveToScript
private boolean resolveToScript(ClassNode type)
resolveFromStaticInnerClasses
private boolean resolveFromStaticInnerClasses(ClassNode type,
boolean testStaticInnerClasses)
resolveFromDefaultImports
private boolean resolveFromDefaultImports(ClassNode type,
boolean testDefaultImports)
resolveFromCompileUnit
private boolean resolveFromCompileUnit(ClassNode type)
setClass
private void setClass(ClassNode n,
java.lang.Class cls)
ambiguousClass
private void ambiguousClass(ClassNode type,
ClassNode iType,
java.lang.String name,
boolean resolved)
resolveAliasFromModule
private boolean resolveAliasFromModule(ClassNode type)
resolveFromModule
private boolean resolveFromModule(ClassNode type,
boolean testModuleImports)
resolveToClass
private boolean resolveToClass(ClassNode type)
transform
public Expression transform(Expression exp)
- Description copied from interface:
ExpressionTransformer
- Transforms the given expression into another expression
- Specified by:
transform
in interface ExpressionTransformer
- Overrides:
transform
in class ClassCodeExpressionTransformer
lookupClassName
private java.lang.String lookupClassName(PropertyExpression pe)
correctClassClassChain
private Expression correctClassClassChain(PropertyExpression pe)
transformPropertyExpression
protected Expression transformPropertyExpression(PropertyExpression pe)
transformVariableExpression
protected Expression transformVariableExpression(VariableExpression ve)
transformBinaryExpression
protected Expression transformBinaryExpression(BinaryExpression be)
transformClosureExpression
protected Expression transformClosureExpression(ClosureExpression ce)
transformConstructorCallExpression
protected Expression transformConstructorCallExpression(ConstructorCallExpression cce)
transformMethodCallExpression
protected Expression transformMethodCallExpression(MethodCallExpression mce)
transformDeclarationExpression
protected Expression transformDeclarationExpression(DeclarationExpression de)
transformAnnotationConstantExpression
protected Expression transformAnnotationConstantExpression(AnnotationConstantExpression ace)
visitAnnotations
public void visitAnnotations(AnnotatedNode node)
- Overrides:
visitAnnotations
in class ClassCodeExpressionTransformer
visitClass
public void visitClass(ClassNode node)
- Specified by:
visitClass
in interface GroovyClassVisitor
- Overrides:
visitClass
in class ClassCodeVisitorSupport
visitCatchStatement
public void visitCatchStatement(CatchStatement cs)
- Specified by:
visitCatchStatement
in interface GroovyCodeVisitor
- Overrides:
visitCatchStatement
in class ClassCodeVisitorSupport
visitForLoop
public void visitForLoop(ForStatement forLoop)
- Specified by:
visitForLoop
in interface GroovyCodeVisitor
- Overrides:
visitForLoop
in class ClassCodeExpressionTransformer
visitBlockStatement
public void visitBlockStatement(BlockStatement block)
- Specified by:
visitBlockStatement
in interface GroovyCodeVisitor
- Overrides:
visitBlockStatement
in class ClassCodeVisitorSupport
getSourceUnit
protected SourceUnit getSourceUnit()
- Specified by:
getSourceUnit
in class ClassCodeVisitorSupport
resolveGenericsTypes
private void resolveGenericsTypes(GenericsType[] types)
resolveGenericsHeader
private void resolveGenericsHeader(GenericsType[] types)
resolveGenericsType
private void resolveGenericsType(GenericsType genericsType)
Copyright © ${year} The Codehaus. All Rights Reserved.