Top Description Inners Fields Constructors Methods
org.codehaus.groovy.classgen

public Class VariableScopeVisitor

extends ClassCodeVisitorSupport
Class Inheritance
Imports
org.codehaus.groovy.GroovyBugError, org.codehaus.groovy.ast.ASTNode, .ClassCodeVisitorSupport, .ClassHelper, .ClassNode, .DynamicVariable, .FieldNode, .InnerClassNode, .MethodNode, .Parameter, .PropertyNode, .Variable, .VariableScope, org.codehaus.groovy.ast.expr.BinaryExpression, .ClosureExpression, .ConstantExpression, .ConstructorCallExpression, .DeclarationExpression, .Expression, .FieldExpression, .MethodCallExpression, .PropertyExpression, .TupleExpression, .VariableExpression, org.codehaus.groovy.ast.stmt.BlockStatement, .CatchStatement, .ForStatement, .IfStatement, .Statement, org.codehaus.groovy.control.SourceUnit, org.codehaus.groovy.syntax.Types, java.util.Deque, .Iterator, .LinkedList, java.util.function.BiConsumer

Initializes the variable scopes for an AST.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class

Field Summary

Modifier and TypeField and Description
private ClassNode
private VariableScope
private boolean
private boolean
private boolean
private final boolean
private final SourceUnit
private final Deque<VariableScopeVisitor.StateStackElement>

Constructor Summary

AccessConstructor and Description
public
VariableScopeVisitor(SourceUnit source, boolean recurseInnerClasses)

public

Method Summary

Modifier and TypeMethod and Description
private void
private void
checkPropertyOnExplicitThis(final PropertyExpression expression)

A property on "this", like this.x is transformed to a direct field access, so we need to check the static context here.

private void
checkVariableContextAccess(final Variable variable, final Expression expression)

private void
declare(final VariableExpression variable)

private void
declare(final Variable variable, final ASTNode context)

private Variable
findClassMember(final ClassNode node, final String name)

private Variable
protected SourceUnit
private static boolean
isAnonymous(final ClassNode node)

private void
private void
public void
prepareVisit(final ClassNode node)

Sets the current class node context.

private void
pushState(final boolean isStatic)

private void
public void
public void
public void
public void
public void
public void
protected void
public void
public void
public void
public void
public void
public void
public void
public void
public void
Inherited from org.codehaus.groovy.ast.ClassCodeVisitorSupport:
addErrorvisitAnnotationvisitAnnotationsvisitAssertStatementvisitBreakStatementvisitCaseStatementvisitClassCodeContainervisitConstructorvisitContinueStatementvisitDoWhileLoopvisitExpressionStatementvisitImportsvisitMethodvisitObjectInitializerStatementsvisitPackagevisitReturnStatementvisitStatementvisitSwitchvisitSynchronizedStatementvisitThrowStatementvisitTryCatchFinallyvisitWhileLoop

Field Detail

currentClassback to summary
private ClassNode currentClass
currentScopeback to summary
private VariableScope currentScope
inClosureback to summary
private boolean inClosure
inConstructorback to summary
private boolean inConstructor
inSpecialConstructorCallback to summary
private boolean inSpecialConstructorCall
recurseInnerClassesback to summary
private final boolean recurseInnerClasses
sourceback to summary
private final SourceUnit source
stateStackback to summary
private final Deque<VariableScopeVisitor.StateStackElement> stateStack

Constructor Detail

VariableScopeVisitorback to summary
public VariableScopeVisitor(SourceUnit source, boolean recurseInnerClasses)
VariableScopeVisitorback to summary
public VariableScopeVisitor(SourceUnit source)

Method Detail

checkFinalFieldAccessback to summary
private void checkFinalFieldAccess(final Expression expression)
checkPropertyOnExplicitThisback to summary
private void checkPropertyOnExplicitThis(final PropertyExpression expression)

A property on "this", like this.x is transformed to a direct field access, so we need to check the static context here.

checkVariableContextAccessback to summary
private void checkVariableContextAccess(final Variable variable, final Expression expression)
declareback to summary
private void declare(final VariableExpression variable)
declareback to summary
private void declare(final Variable variable, final ASTNode context)
findClassMemberback to summary
private Variable findClassMember(final ClassNode node, final String name)
findVariableDeclarationback to summary
private Variable findVariableDeclaration(final String name)
getSourceUnitback to summary
protected SourceUnit getSourceUnit()

Implements abstract org.codehaus.groovy.ast.ClassCodeVisitorSupport.getSourceUnit.

Annotations
@Override
isAnonymousback to summary
private static boolean isAnonymous(final ClassNode node)
markClosureSharedVariablesback to summary
private void markClosureSharedVariables()
popStateback to summary
private void popState()
prepareVisitback to summary
public void prepareVisit(final ClassNode node)

Sets the current class node context.

pushStateback to summary
private void pushState(final boolean isStatic)
pushStateback to summary
private void pushState()
visitBinaryExpressionback to summary
public void visitBinaryExpression(final BinaryExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitBinaryExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitBinaryExpression.

Annotations
@Override
visitBlockStatementback to summary
public void visitBlockStatement(final BlockStatement statement)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitBlockStatement.

Annotations
@Override
visitCatchStatementback to summary
public void visitCatchStatement(final CatchStatement statement)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitCatchStatement.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitCatchStatement.

Annotations
@Override
visitClassback to summary
public void visitClass(final ClassNode node)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass.

Implements org.codehaus.groovy.ast.GroovyClassVisitor.visitClass.

Doc from org.codehaus.groovy.ast.GroovyClassVisitor.visitClass.

Visit a ClassNode.

Annotations
@Override
visitClosureExpressionback to summary
public void visitClosureExpression(final ClosureExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitClosureExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitClosureExpression.

Annotations
@Override
visitConstructorCallExpressionback to summary
public void visitConstructorCallExpression(final ConstructorCallExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitConstructorCallExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitConstructorCallExpression.

Annotations
@Override
visitConstructorOrMethodback to summary
protected void visitConstructorOrMethod(final MethodNode node, final boolean isConstructor)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod.

Annotations
@Override
visitDeclarationExpressionback to summary
public void visitDeclarationExpression(final DeclarationExpression expression)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitDeclarationExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitDeclarationExpression.

Annotations
@Override
visitFieldback to summary
public void visitField(final FieldNode node)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitField.

Implements org.codehaus.groovy.ast.GroovyClassVisitor.visitField.

Doc from org.codehaus.groovy.ast.GroovyClassVisitor.visitField.

Visit a FieldNode.

Annotations
@Override
visitFieldExpressionback to summary
public void visitFieldExpression(final FieldExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitFieldExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitFieldExpression.

Annotations
@Override
visitForLoopback to summary
public void visitForLoop(final ForStatement statement)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitForLoop.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitForLoop.

Annotations
@Override
visitIfElseback to summary
public void visitIfElse(final IfStatement statement)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitIfElse.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitIfElse.

Annotations
@Override
visitMethodCallExpressionback to summary
public void visitMethodCallExpression(final MethodCallExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitMethodCallExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitMethodCallExpression.

Annotations
@Override
visitPropertyback to summary
public void visitProperty(final PropertyNode node)

Overrides org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitProperty.

Implements org.codehaus.groovy.ast.GroovyClassVisitor.visitProperty.

Doc from org.codehaus.groovy.ast.GroovyClassVisitor.visitProperty.

Visit a PropertyNode.

Annotations
@Override
visitPropertyExpressionback to summary
public void visitPropertyExpression(final PropertyExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitPropertyExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitPropertyExpression.

Annotations
@Override
visitVariableExpressionback to summary
public void visitVariableExpression(final VariableExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitVariableExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitVariableExpression.

Annotations
@Override
org.codehaus.groovy.classgen back to summary

private Class VariableScopeVisitor.StateStackElement

extends Object
Class Inheritance
  • java.lang.Object
  • org.codehaus.groovy.classgen.VariableScopeVisitor.StateStackElement

Field Summary

Modifier and TypeField and Description
pack-priv final ClassNode
pack-priv final boolean
pack-priv final boolean
pack-priv final VariableScope

Constructor Summary

AccessConstructor and Description
pack-priv
StateStackElement(final ClassNode currentClass, final VariableScope currentScope, final boolean inClosure, final boolean inConstructor)

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

clazzback to summary
pack-priv final ClassNode clazz
inClosureback to summary
pack-priv final boolean inClosure
inConstructorback to summary
pack-priv final boolean inConstructor
scopeback to summary
pack-priv final VariableScope scope

Constructor Detail

StateStackElementback to summary
pack-priv StateStackElement(final ClassNode currentClass, final VariableScope currentScope, final boolean inClosure, final boolean inConstructor)