Package org.codehaus.groovy.transform.sc
Class StaticCompilationVisitor
- java.lang.Object
- 
- org.codehaus.groovy.ast.CodeVisitorSupport
- 
- org.codehaus.groovy.ast.ClassCodeVisitorSupport
- 
- org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor
- 
- org.codehaus.groovy.transform.sc.StaticCompilationVisitor
 
 
 
 
- 
- All Implemented Interfaces:
- GroovyClassVisitor,- GroovyCodeVisitor,- ErrorCollecting
 
 public class StaticCompilationVisitor extends StaticTypeCheckingVisitor This visitor is responsible for amending the AST with static compilation metadata or transform the AST so that a class or a method can be statically compiled. It may also throw errors specific to static compilation which are not considered as an error at the type check pass. For example, usage of spread operator is not allowed in statically compiled portions of code, while it may be statically checked. Static compilation relies on static type checking, which explains why this visitor extends the type checker visitor.
- 
- 
Nested Class Summary- 
Nested classes/interfaces inherited from class org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitorStaticTypeCheckingVisitor.SignatureCodecFactory, StaticTypeCheckingVisitor.VariableExpressionTypeMemoizer
 
- 
 - 
Field SummaryFields Modifier and Type Field Description static MethodNodeARRAYLIST_ADD_METHODstatic ClassNodeARRAYLIST_CLASSNODEstatic MethodNodeARRAYLIST_CONSTRUCTOR- 
Fields inherited from class org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitorCLOSURE_CALL_NO_ARG, CLOSURE_CALL_ONE_ARG, CLOSURE_CALL_VARGS, CLOSUREPARAMS_CLASSNODE, CURRENT_SIGNATURE_PROTOCOL, CURRENT_SIGNATURE_PROTOCOL_VERSION, currentField, currentProperty, DELEGATES_TO, DELEGATES_TO_TARGET, DGM_CLASSNODE, EMPTY_METHODNODE_LIST, ENUMERATION_TYPE, ERROR_COLLECTOR, extension, GENERATED_EMPTY_STATEMENT, GET_DELEGATE, GET_OWNER, GET_THISOBJECT, ITERABLE_TYPE, LINKEDHASHMAP_CLASSNODE, MAP_ENTRY_TYPE, NAMED_PARAMS_CLASSNODE, returnAdder, returnListener, TYPECHECKING_ANNOTATIONS, TYPECHECKING_INFO_NODE, typeCheckingContext
 
- 
 - 
Constructor SummaryConstructors Constructor Description StaticCompilationVisitor(SourceUnit unit, ClassNode node)
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleanexistsProperty(PropertyExpression pexp, boolean checkForReadOnly, ClassCodeVisitorSupport visitor)Checks whether a property exists on the receiver, or on any of the possible receiver classes (found in the temporary type information table)protected MethodNodefindMethodOrFail(Expression expr, ClassNode receiver, java.lang.String name, ClassNode... args)protected ClassNode[]getTypeCheckingAnnotations()Returns array of type checking annotations.static booleanisStaticallyCompiled(AnnotatedNode node)voidvisitClass(ClassNode node)Visit a ClassNode.voidvisitConstructor(ConstructorNode node)Visit a ConstructorNode.voidvisitConstructorCallExpression(ConstructorCallExpression call)voidvisitForLoop(ForStatement forLoop)voidvisitMethod(MethodNode node)Visit a MethodNode.voidvisitMethodCallExpression(MethodCallExpression call)voidvisitPropertyExpression(PropertyExpression pexp)voidvisitSpreadExpression(SpreadExpression expression)- 
Methods inherited from class org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitoraddAmbiguousErrorMessage, addAssignmentError, addCategoryMethodCallError, addClosureReturnType, addError, addNoMatchingMethodError, addReceivers, addStaticTypeError, addTypeCheckingExtension, addTypeCheckingInfoAnnotation, addUnsupportedPreOrPostfixExpressionError, areCategoryMethodCalls, checkCast, checkClosureParameters, checkForbiddenSpreadArgument, checkGroovyConstructorMap, checkGroovyStyleConstructor, checkGroovyStyleConstructor, checkReturnType, collectAllInterfaceMethodsByName, existsProperty, extractPropertyNameFromMethodName, extractTemporaryTypeInfoKey, extractTypesFromParameters, findCurrentInstanceOfClass, findInstanceOfNotReturnExpression, findMethod, findMethodsWithGenerated, formatArgumentList, getArgumentTypes, getDelegationMetadata, getGroupOperationResultType, getInferredReturnType, getInferredReturnTypeFromWithClosureArgument, getOriginalDeclarationType, getResultType, getSourceUnit, getTemporaryTypesForExpression, getType, getTypeCheckingContext, hasRHSIncompleteGenericTypeInfo, hasSetter, inferClosureParameterTypes, inferComponentType, inferDiamondType, inferListExpressionType, inferLoopElementType, inferMapExpressionType, inferReturnTypeGenerics, inferReturnTypeGenerics, initialize, isClassInnerClassOrEqualTo, isClosureCall, isNullConstant, isSecondPassNeededForControlStructure, isSkipMode, isSkippedInnerClass, makeOwnerList, performSecondPass, popAssignmentTracking, prettyPrintMethodList, pushAssignmentTracking, pushInstanceOfTypeInfo, restoreVariableExpressionMetadata, saveVariableExpressionMetadata, setCompilationUnit, setMethodsToBeVisited, shouldSkipClassNode, shouldSkipMethodNode, silentlyVisitMethodNode, startMethodInference, storeInferredReturnType, storeInferredTypeForPropertyExpression, storeTargetMethod, storeType, typeCheckAssignment, typeCheckClosureCall, typeCheckMapConstructor, typeCheckMethodsWithGenericsOrFail, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBlockStatement, visitCaseStatement, visitCastExpression, visitClassExpression, visitClosingBlock, visitClosureExpression, visitConstructorOrMethod, visitExpressionStatement, visitField, visitIfElse, visitInstanceofNot, visitMethodCallArguments, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitProperty, visitRangeExpression, visitReturnStatement, visitStaticMethodCallExpression, visitSwitch, visitTernaryExpression, visitTryCatchFinally, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression, visitWhileLoop, wrapTypeIfNecessary
 - 
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupportvisitAnnotations, visitAssertStatement, visitBreakStatement, visitCatchStatement, visitClassCodeContainer, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitImports, visitObjectInitializerStatements, visitPackage, visitStatement, visitSynchronizedStatement, visitThrowStatement
 - 
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupportvisitArgumentlistExpression, visitBooleanExpression, visitBytecodeExpression, visitClosureListExpression, visitConstantExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitShortTernaryExpression, visitSpreadMapExpression, visitTupleExpression
 
- 
 
- 
- 
- 
Field Detail- 
ARRAYLIST_CLASSNODEpublic static final ClassNode ARRAYLIST_CLASSNODE 
 - 
ARRAYLIST_ADD_METHODpublic static final MethodNode ARRAYLIST_ADD_METHOD 
 - 
ARRAYLIST_CONSTRUCTORpublic static final MethodNode ARRAYLIST_CONSTRUCTOR 
 
- 
 - 
Constructor Detail- 
StaticCompilationVisitorpublic StaticCompilationVisitor(SourceUnit unit, ClassNode node) 
 
- 
 - 
Method Detail- 
getTypeCheckingAnnotationsprotected ClassNode[] getTypeCheckingAnnotations() Description copied from class:StaticTypeCheckingVisitorReturns array of type checking annotations. Subclasses may override this method in order to provide additional types which must be looked up when checking if a method or a class node should be skipped.The default implementation returns TypeChecked.- Overrides:
- getTypeCheckingAnnotationsin class- StaticTypeCheckingVisitor
 
 - 
isStaticallyCompiledpublic static boolean isStaticallyCompiled(AnnotatedNode node) 
 - 
visitClasspublic void visitClass(ClassNode node) Description copied from interface:GroovyClassVisitorVisit a ClassNode.- Specified by:
- visitClassin interface- GroovyClassVisitor
- Overrides:
- visitClassin class- StaticTypeCheckingVisitor
 
 - 
visitConstructorpublic void visitConstructor(ConstructorNode node) Description copied from interface:GroovyClassVisitorVisit a ConstructorNode.- Specified by:
- visitConstructorin interface- GroovyClassVisitor
- Overrides:
- visitConstructorin class- StaticTypeCheckingVisitor
 
 - 
visitMethodpublic void visitMethod(MethodNode node) Description copied from interface:GroovyClassVisitorVisit a MethodNode.- Specified by:
- visitMethodin interface- GroovyClassVisitor
- Overrides:
- visitMethodin class- StaticTypeCheckingVisitor
 
 - 
visitSpreadExpressionpublic void visitSpreadExpression(SpreadExpression expression) - Specified by:
- visitSpreadExpressionin interface- GroovyCodeVisitor
- Overrides:
- visitSpreadExpressionin class- CodeVisitorSupport
 
 - 
visitMethodCallExpressionpublic void visitMethodCallExpression(MethodCallExpression call) - Specified by:
- visitMethodCallExpressionin interface- GroovyCodeVisitor
- Overrides:
- visitMethodCallExpressionin class- StaticTypeCheckingVisitor
 
 - 
visitConstructorCallExpressionpublic void visitConstructorCallExpression(ConstructorCallExpression call) - Specified by:
- visitConstructorCallExpressionin interface- GroovyCodeVisitor
- Overrides:
- visitConstructorCallExpressionin class- StaticTypeCheckingVisitor
 
 - 
visitForLooppublic void visitForLoop(ForStatement forLoop) - Specified by:
- visitForLoopin interface- GroovyCodeVisitor
- Overrides:
- visitForLoopin class- StaticTypeCheckingVisitor
 
 - 
findMethodOrFailprotected MethodNode findMethodOrFail(Expression expr, ClassNode receiver, java.lang.String name, ClassNode... args) - Overrides:
- findMethodOrFailin class- StaticTypeCheckingVisitor
 
 - 
existsPropertyprotected boolean existsProperty(PropertyExpression pexp, boolean checkForReadOnly, ClassCodeVisitorSupport visitor) Description copied from class:StaticTypeCheckingVisitorChecks whether a property exists on the receiver, or on any of the possible receiver classes (found in the temporary type information table)- Overrides:
- existsPropertyin class- StaticTypeCheckingVisitor
- Parameters:
- pexp- a property expression
- checkForReadOnly- if true, look for property read, else for property set
- visitor- if not null, when the property node is found, visit it with the provided visitor
- Returns:
- true if the property is defined in any of the possible receiver classes
 
 - 
visitPropertyExpressionpublic void visitPropertyExpression(PropertyExpression pexp) - Specified by:
- visitPropertyExpressionin interface- GroovyCodeVisitor
- Overrides:
- visitPropertyExpressionin class- StaticTypeCheckingVisitor
 
 
- 
 
-