Griffon 1.2.0

org.codehaus.griffon.compiler
[Java] Class ResolveVisitor

java.lang.Object
  org.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.

Authors:
Jochen Theodorou
Roshan Dawrani


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()

 
Method Summary
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)

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)

void startResolving(ClassNode node, SourceUnit source)

private boolean testVanillaNameForClass(String name)

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)

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 ClassCodeExpressionTransformer
transform, visitField, visitReturnStatement, visitProperty, visitWhileLoop, visitForLoop, visitSwitch, visitDoWhileLoop, visitExpressionStatement, visitAnnotations, visitIfElse, visitAssertStatement, visitCaseStatement, visitSynchronizedStatement, visitThrowStatement, visitMethod, visitConstructor, visitBlockStatement, visitClass, visitPackage, visitCatchStatement, visitImports, visitDeclarationExpression, visitBreakStatement, visitContinueStatement, visitTryCatchFinally, visitConstantExpression, visitClassExpression, visitListExpression, visitPropertyExpression, visitMethodCallExpression, visitStaticMethodCallExpression, visitConstructorCallExpression, visitBinaryExpression, visitTernaryExpression, visitShortTernaryExpression, visitPostfixExpression, visitPrefixExpression, visitBooleanExpression, visitNotExpression, visitClosureExpression, visitTupleExpression, visitArrayExpression, visitMapExpression, visitMapEntryExpression, visitRangeExpression, visitSpreadExpression, visitSpreadMapExpression, visitMethodPointerExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitBitwiseNegationExpression, visitCastExpression, visitVariableExpression, visitAttributeExpression, visitFieldExpression, visitGStringExpression, visitArgumentlistExpression, visitClosureListExpression, visitBytecodeExpression, wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll
 
Methods inherited from class ClassCodeVisitorSupport
visitMethod, visitField, visitReturnStatement, visitProperty, visitConstructor, visitBlockStatement, visitClass, visitPackage, visitWhileLoop, visitForLoop, visitSwitch, visitDoWhileLoop, visitExpressionStatement, visitAnnotations, visitCatchStatement, visitIfElse, visitAssertStatement, visitCaseStatement, visitSynchronizedStatement, visitThrowStatement, visitImports, visitDeclarationExpression, visitBreakStatement, visitContinueStatement, visitTryCatchFinally, visitConstantExpression, visitClassExpression, visitListExpression, visitPropertyExpression, visitMethodCallExpression, visitStaticMethodCallExpression, visitConstructorCallExpression, visitBinaryExpression, visitTernaryExpression, visitShortTernaryExpression, visitPostfixExpression, visitPrefixExpression, visitBooleanExpression, visitNotExpression, visitClosureExpression, visitTupleExpression, visitArrayExpression, visitMapExpression, visitMapEntryExpression, visitRangeExpression, visitSpreadExpression, visitSpreadMapExpression, visitMethodPointerExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitBitwiseNegationExpression, visitCastExpression, visitVariableExpression, visitAttributeExpression, visitFieldExpression, visitGStringExpression, visitArgumentlistExpression, visitClosureListExpression, visitBytecodeExpression, wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll
 

Field Detail

DEFAULT_IMPORTS

public static final String[] DEFAULT_IMPORTS


NO_CLASS

private static final Object NO_CLASS


SCRIPT

private static final Object SCRIPT


additionalImports

private Map additionalImports


cachedClasses

private Map cachedClasses


checkingVariableTypeInDeclaration

private boolean checkingVariableTypeInDeclaration


compilationUnit

private CompilationUnit compilationUnit


currImportNode

private ImportNode currImportNode


currentClass

private ClassNode currentClass


currentScope

private VariableScope currentScope


fieldTypesChecked

private Set fieldTypesChecked


genericParameterNames

private Map genericParameterNames


inClosure

private boolean inClosure


inPropertyExpression

private boolean inPropertyExpression


isSpecialConstructorCall

private boolean isSpecialConstructorCall


isTopLevelProperty

private boolean isTopLevelProperty


source

private SourceUnit source


 
Constructor Detail

ResolveVisitor

ResolveVisitor()


 
Method Detail

ResolveVisitor

public def ResolveVisitor(CompilationUnit cu)


ambiguousClass

private void ambiguousClass(ClassNode type, ClassNode iType, String name)


checkAnnotationMemberValue

private void checkAnnotationMemberValue(Expression newValue)


checkCyclicInheritence

private void checkCyclicInheritence(ClassNode originalNode, ClassNode parentToCompare, ClassNode[] interfacesToCompare)


checkThisAndSuperAsPropertyAccess

private void checkThisAndSuperAsPropertyAccess(PropertyExpression expression)


correctClassClassChain

private Expression correctClassClassChain(PropertyExpression pe)


getAdditionalImports

public Map getAdditionalImports()


getDescription

private String getDescription(ClassNode node)


getSourceUnit

protected SourceUnit getSourceUnit()


getTimeStamp

private long getTimeStamp(Class cls)


isSourceNewer

private boolean isSourceNewer(URL source, Class cls)


lookupClassName

private String lookupClassName(PropertyExpression pe)


replaceLastPoint

private String replaceLastPoint(String name)


resolve

private boolean resolve(ClassNode type)


resolve

private boolean resolve(ClassNode type, boolean testModuleImports, boolean testDefaultImports, boolean testStaticInnerClasses)


resolveAliasFromModule

private boolean resolveAliasFromModule(ClassNode type)


resolveFromClassCache

private boolean resolveFromClassCache(ClassNode type)


resolveFromCompileUnit

private boolean resolveFromCompileUnit(ClassNode type)


resolveFromDefaultImports

private boolean resolveFromDefaultImports(ClassNode type, boolean testDefaultImports)


resolveFromModule

private boolean resolveFromModule(ClassNode type, boolean testModuleImports)


resolveFromStaticInnerClasses

private boolean resolveFromStaticInnerClasses(ClassNode type, boolean testStaticInnerClasses)


resolveGenericsHeader

private void resolveGenericsHeader(GenericsType[] types)


resolveGenericsType

private void resolveGenericsType(GenericsType genericsType)


resolveGenericsTypes

private void resolveGenericsTypes(GenericsType[] types)


resolveNestedClass

private boolean resolveNestedClass(ClassNode type)


resolveOrFail

private void resolveOrFail(ClassNode type, String msg, ASTNode node)


resolveOrFail

private void resolveOrFail(ClassNode type, ASTNode node, boolean prefereImports)


resolveOrFail

private void resolveOrFail(ClassNode type, ASTNode node)


resolveToClass

private boolean resolveToClass(ClassNode type)


resolveToInner

private boolean resolveToInner(ClassNode type)


resolveToInnerEnum

private boolean resolveToInnerEnum(ClassNode type)


resolveToScript

private boolean resolveToScript(ClassNode type)


startResolving

public void startResolving(ClassNode node, SourceUnit source)


testVanillaNameForClass

private boolean testVanillaNameForClass(String name)


transform

public Expression transform(Expression exp)


transformAnnotationConstantExpression

protected Expression transformAnnotationConstantExpression(AnnotationConstantExpression ace)


transformBinaryExpression

protected Expression transformBinaryExpression(BinaryExpression be)


transformClosureExpression

protected Expression transformClosureExpression(ClosureExpression ce)


transformConstructorCallExpression

protected Expression transformConstructorCallExpression(ConstructorCallExpression cce)


transformDeclarationExpression

protected Expression transformDeclarationExpression(DeclarationExpression de)


transformInlineConstants

private Expression transformInlineConstants(Expression exp)


transformMethodCallExpression

protected Expression transformMethodCallExpression(MethodCallExpression mce)


transformPropertyExpression

protected Expression transformPropertyExpression(PropertyExpression pe)


transformVariableExpression

protected Expression transformVariableExpression(VariableExpression ve)


visitAnnotations

public void visitAnnotations(AnnotatedNode node)


visitBlockStatement

public void visitBlockStatement(BlockStatement block)


visitCatchStatement

public void visitCatchStatement(CatchStatement cs)


visitClass

public void visitClass(ClassNode node)


visitConstructorOrMethod

protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor)


visitField

public void visitField(FieldNode node)


visitForLoop

public void visitForLoop(ForStatement forLoop)


visitProperty

public void visitProperty(PropertyNode node)


 

Groovy Documentation