|
Griffon 1.2.0 | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeExpressionTransformer
org.codehaus.griffon.compiler.ResolveVisitor
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). This is carbon copy of ResolveVisitor as of Groovy 1.7.4; needed in order to inject additional imports per each Griffon artifact, due to ResolveVisitor being too closed.Nested Class Summary | |
---|---|
private static class |
ResolveVisitor.ConstructedClassWithPackage
we use ConstructedClassWithPackage to limit the resolving the compiler does when combining package names and class names. |
private static class |
ResolveVisitor.LowerCaseClass
we use LowerCaseClass to limit the resolving the compiler does for vanilla names starting with a lower case letter. |
Field Summary | |
---|---|
static String[] |
DEFAULT_IMPORTS
|
private static Object |
NO_CLASS
|
private static Object |
SCRIPT
|
private Map |
additionalImports
|
private Map |
cachedClasses
|
private boolean |
checkingVariableTypeInDeclaration
|
private CompilationUnit |
compilationUnit
|
private ImportNode |
currImportNode
|
private ClassNode |
currentClass
|
private VariableScope |
currentScope
|
private Set |
fieldTypesChecked
|
private Map |
genericParameterNames
|
private boolean |
inClosure
|
private boolean |
inPropertyExpression
|
private boolean |
isSpecialConstructorCall
|
private boolean |
isTopLevelProperty
|
private SourceUnit |
source
|
Constructor Summary | |
ResolveVisitor()
|
Field Detail |
---|
public static final String[] DEFAULT_IMPORTS
private static final Object NO_CLASS
private static final Object SCRIPT
private Map additionalImports
private Map cachedClasses
private boolean checkingVariableTypeInDeclaration
private CompilationUnit compilationUnit
private ImportNode currImportNode
private ClassNode currentClass
private VariableScope currentScope
private Set fieldTypesChecked
private Map genericParameterNames
private boolean inClosure
private boolean inPropertyExpression
private boolean isSpecialConstructorCall
private boolean isTopLevelProperty
private SourceUnit source
Constructor Detail |
---|
ResolveVisitor()
Method Detail |
---|
public def ResolveVisitor(CompilationUnit cu)
private void ambiguousClass(ClassNode type, ClassNode iType, String name)
private void checkAnnotationMemberValue(Expression newValue)
private void checkCyclicInheritence(ClassNode originalNode, ClassNode parentToCompare, ClassNode[] interfacesToCompare)
private void checkThisAndSuperAsPropertyAccess(PropertyExpression expression)
private Expression correctClassClassChain(PropertyExpression pe)
public Map getAdditionalImports()
private String getDescription(ClassNode node)
protected SourceUnit getSourceUnit()
private long getTimeStamp(Class cls)
private boolean isSourceNewer(URL source, Class cls)
private String lookupClassName(PropertyExpression pe)
private String replaceLastPoint(String name)
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 boolean resolveNestedClass(ClassNode type)
private void resolveOrFail(ClassNode type, String msg, ASTNode node)
private void resolveOrFail(ClassNode type, ASTNode node, boolean prefereImports)
private void resolveOrFail(ClassNode type, ASTNode node)
private boolean resolveToClass(ClassNode type)
private boolean resolveToInner(ClassNode type)
private boolean resolveToInnerEnum(ClassNode type)
private boolean resolveToScript(ClassNode type)
public void startResolving(ClassNode node, SourceUnit source)
private boolean testVanillaNameForClass(String name)
public Expression transform(Expression exp)
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)
private Expression transformInlineConstants(Expression exp)
protected Expression transformMethodCallExpression(MethodCallExpression mce)
protected Expression transformPropertyExpression(PropertyExpression pe)
protected Expression transformVariableExpression(VariableExpression ve)
public void visitAnnotations(AnnotatedNode node)
public void visitBlockStatement(BlockStatement block)
public void visitCatchStatement(CatchStatement cs)
public void visitClass(ClassNode node)
protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor)
public void visitField(FieldNode node)
public void visitForLoop(ForStatement forLoop)
public void visitProperty(PropertyNode node)
Groovy Documentation