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

public Class EnumCompletionVisitor

extends ClassCodeVisitorSupport
Class Inheritance
Imports
org.codehaus.groovy.ast.ClassCodeVisitorSupport, .ClassHelper, .ClassNode, .CodeVisitorSupport, .ConstructorNode, .Parameter, org.codehaus.groovy.ast.expr.ArgumentListExpression, .CastExpression, .ConstantExpression, .ConstructorCallExpression, .Expression, .TupleExpression, .VariableExpression, org.codehaus.groovy.ast.stmt.BlockStatement, .ExpressionStatement, .Statement, org.codehaus.groovy.control.CompilationUnit, .SourceUnit, org.codehaus.groovy.transform.TupleConstructorASTTransformation, java.util.ArrayList, .List

Enums have a parent constructor with two arguments from java.lang.Enum. This visitor adds those two arguments into manually created constructors and performs the necessary super call.

Field Summary

Modifier and TypeField and Description
private final SourceUnit

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static void
addImplicitConstructors(final ClassNode enumClass)

Add map and no-arg constructor or mirror those of the superclass (i.e. base enum).

private void
completeEnum(final ClassNode enumClass)

protected SourceUnit
private String
getUniqueVariableName(final String name, final Statement code)

private static void
makeBridgeConstructor(final ClassNode e, final Parameter[] p)

Ensures the enum type e has an accessible constructor for its AIC constant class to call.

private static List<ConstructorNode>
private void
transformConstructor(final ConstructorNode ctor)

If constructor does not define a call to super, then transform constructor to get String,int parameters at beginning and add call super(String,int).

public void
Inherited from org.codehaus.groovy.ast.ClassCodeVisitorSupport:
addErrorvisitAnnotationvisitAnnotationsvisitAssertStatementvisitBlockStatementvisitBreakStatementvisitCaseStatementvisitCatchStatementvisitClassCodeContainervisitConstructorvisitConstructorOrMethodvisitContinueStatementvisitDeclarationExpressionvisitDoWhileLoopvisitExpressionStatementvisitFieldvisitForLoopvisitIfElsevisitImportsvisitMethodvisitObjectInitializerStatementsvisitPackagevisitPropertyvisitReturnStatementvisitStatementvisitSwitchvisitSynchronizedStatementvisitThrowStatementvisitTryCatchFinallyvisitWhileLoop

Field Detail

sourceUnitback to summary
private final SourceUnit sourceUnit

Constructor Detail

EnumCompletionVisitorback to summary
public EnumCompletionVisitor(final CompilationUnit cu, final SourceUnit su)

Method Detail

addImplicitConstructorsback to summary
private static void addImplicitConstructors(final ClassNode enumClass)

Add map and no-arg constructor or mirror those of the superclass (i.e. base enum).

completeEnumback to summary
private void completeEnum(final ClassNode enumClass)
getSourceUnitback to summary
protected SourceUnit getSourceUnit()

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

Annotations
@Override
getUniqueVariableNameback to summary
private String getUniqueVariableName(final String name, final Statement code)
makeBridgeConstructorback to summary
private static void makeBridgeConstructor(final ClassNode e, final Parameter[] p)

Ensures the enum type e has an accessible constructor for its AIC constant class to call. This constructor delegates to the enum's private constructor.

nonSyntheticConstructorsback to summary
private static List<ConstructorNode> nonSyntheticConstructors(final ClassNode cn)
transformConstructorback to summary
private void transformConstructor(final ConstructorNode ctor)

If constructor does not define a call to super, then transform constructor to get String,int parameters at beginning and add call super(String,int).

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