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

public Class CompilationUnit

extends ProcessingUnit
Class Inheritance
Known Direct Subclasses
org.codehaus.groovy.tools.javac.JavaAwareCompilationUnit, org.codehaus.groovy.tools.javac.JavaStubCompilationUnit
Imports
groovy.lang.GroovyClassLoader, .GroovyRuntimeException, groovy.transform.CompilationUnitAware, org.codehaus.groovy.GroovyBugError, org.codehaus.groovy.ast.ClassCodeExpressionTransformer, .ClassHelper, .ClassNode, .CompileUnit, .GroovyClassVisitor, .InnerClassNode, .ModuleNode, org.codehaus.groovy.ast.expr.Expression, .VariableExpression, org.codehaus.groovy.classgen.AsmClassGenerator, .ClassCompletionVerifier, .EnumCompletionVisitor, .EnumVisitor, .ExtendedVerifier, .GeneratorContext, .InnerClassCompletionVisitor, .InnerClassVisitor, .VariableScopeVisitor, .Verifier, org.codehaus.groovy.control.customizers.CompilationCustomizer, org.codehaus.groovy.control.io.InputStreamReaderSource, .ReaderSource, org.codehaus.groovy.control.messages.ExceptionMessage, .Message, .SimpleMessage, org.codehaus.groovy.syntax.RuntimeParserException, .SyntaxException, org.codehaus.groovy.tools.GroovyClass, org.codehaus.groovy.transform.ASTTransformationVisitor, .AnnotationCollectorTransform, org.codehaus.groovy.transform.trait.TraitComposer, org.objectweb.asm.ClassVisitor, .ClassWriter, java.io.File, .FileOutputStream, .IOException, .InputStream, java.net.URL, java.security.CodeSource, java.util.ArrayList, .Collection, .Deque, .HashSet, .Iterator, .LinkedHashMap, .LinkedList, .List, .Map, .Optional, .Queue, .Set, java.util.stream.Stream

The CompilationUnit collects all compilation data as it is generated by the compiler system. You can use this object to add additional source units to the compilation, or force the compilation to be run again (to affect only the deltas).

You can also add PhaseOperations to this compilation using the addPhaseOperation method. This is commonly used when you want to wire a new AST Transformation into the compilation.

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static interface
CompilationUnit.ClassgenCallback

A callback interface you can use during the classgen phase of compilation as the compiler traverses the ClassNode tree.

public abstract static class
public static interface
public static interface
public static interface
private static interface
public abstract static class
public static interface
CompilationUnit.ProgressCallback

A callback interface you can use to get a callback after every unit of the compile process.

public abstract static class

Field Summary

Modifier and TypeField and Description
protected CompileUnit
ast

The overall AST for this CompilationUnit.

protected ASTTransformationsContext
astTransformationsContext

The AST transformations state data.

private final CompilationUnit.IPrimaryClassNodeOperation
classgen

Runs the class generation phase on a single ClassNode.

protected CompilationUnit.ClassgenCallback
classgenCallback

A callback called during the classgen phase of compilation

protected ClassNodeResolver
protected boolean
configured

True after the first configure(CompilerConfiguration) operation.

protected boolean
debug

If set, outputs a little more information during compilation when errors occur.

private List<GroovyClass>
generatedClasses

The classes generated during classgen.

private Set<JavaFileObject>
private Deque<CompilationUnit.PhaseOperation>[]
private Deque<CompilationUnit.PhaseOperation>[]
protected CompilationUnit.ProgressCallback
progressCallback

A callback for use during compile()

protected Queue<SourceUnit>
private final CompilationUnit.ISourceUnitOperation
resolve

Resolves all types.

protected ResolveVisitor
protected Map<String, SourceUnit>
sources

The source units from which this unit is built.

Inherited from org.codehaus.groovy.control.ProcessingUnit:
classLoaderconfigurationerrorCollectorphasephaseComplete

Constructor Summary

AccessConstructor and Description
public
CompilationUnit()

Initializes the CompilationUnit with defaults.

public
CompilationUnit(final GroovyClassLoader loader)

Initializes the CompilationUnit with defaults except for class loader.

public
CompilationUnit(final CompilerConfiguration configuration)

Initializes the CompilationUnit with no security considerations.

public
CompilationUnit(final CompilerConfiguration configuration, final CodeSource codeSource, final GroovyClassLoader loader)

Initializes the CompilationUnit with a CodeSource for controlling security stuff and a class loader for loading classes.

public
CompilationUnit(final CompilerConfiguration
- compilation configuration
configuration
,
final CodeSource
- security setting for the compilation
codeSource
,
final GroovyClassLoader
- loader used to resolve classes against during compilation
loader
,
final GroovyClassLoader
- the loader for transforms
transformLoader
)

Initializes the CompilationUnit with a CodeSource for controlling security stuff, a class loader for loading classes, and a class loader for loading AST transformations.

Method Summary

Modifier and TypeMethod and Description
public void
addClassNode(final ClassNode node)

Adds a ClassNode directly to the unit (ie.

public void
public void
public void
addJavaCompilationUnits(final Set<JavaFileObject> javaCompilationUnitSet)

public void
public void
addNewPhaseOperation(final CompilationUnit.SourceUnitOperation op, final int phase)

Deprecated
public void
public void
public void
public void
public void
addPhaseOperation(final CompilationUnit.SourceUnitOperation op, final int phase)

Deprecated
public void
addPhaseOperation(final CompilationUnit.PrimaryClassNodeOperation op, final int phase)

Deprecated
private void
public SourceUnit
addSource(final File file)

Adds a source file to the unit.

public SourceUnit
addSource(final URL url)

Adds a source file to the unit.

public SourceUnit
addSource(final String name, final InputStream stream)

Adds a InputStream source to the unit.

public SourceUnit
addSource(final String name, final String scriptText)

public SourceUnit
addSource(final SourceUnit source)

Adds a SourceUnit to the unit.

public void
addSources(final String[] paths)

Adds a set of file paths to the unit.

public void
addSources(final File[] files)

Adds a set of source files to the unit.

private void
public void
public void
private void
private void
changeBugText(final GroovyBugError e, final SourceUnit context)

public void
compile()

Synonym for compile(Phases.ALL).

public void
compile(int throughPhase)

Compiles the compilation unit from sources.

public void
configure(final CompilerConfiguration configuration)

Overrides org.codehaus.groovy.control.ProcessingUnit.configure.

Configures its debugging mode and classloader classpath from a given compiler configuration.
protected ClassVisitor
protected boolean

Returns:

true if there was a queued source
dequeued
()

Dequeues any source units add through addSource and resets the compiler phase to initialization.

public CompileUnit
getAST()

Returns the CompileUnit that roots our AST.

public ASTTransformationsContext

Returns:

the AST transformations current context
getASTTransformationsContext
()

public List<GroovyClass>
getClasses()

Get the GroovyClasses generated by compile().

public CompilationUnit.ClassgenCallback
public ClassNode
getClassNode(final String name)

Convenience routine to get the named ClassNode.

public ClassNodeResolver
public ClassNode
getFirstClassNode()

Convenience routine to get the first ClassNode, for when you are sure there is only one.

public Set<JavaFileObject>
private List<ClassNode>
getPrimaryClassNodes(final boolean sort)

public CompilationUnit.ProgressCallback
private static List<ClassNode>
getSorted(final int[] index, final List<ClassNode> unsorted)

private static int
private static int
public GroovyClassLoader
getTransformLoader()

Returns the class loader for loading AST transformations.

public Iterator<SourceUnit>
iterator()

Returns an iterator on the unit's SourceUnits.

protected void
mark()

Updates the phase marker on all sources.

private void
processNewPhaseOperations(final int phase)

private void
processPhaseOperations(final int phase)

private void
public void
setClassgenCallback(final CompilationUnit.ClassgenCallback visitor)

Sets a ClassgenCallback.

public void
setClassNodeResolver(final ClassNodeResolver classNodeResolver)

public void
setProgressCallback(final CompilationUnit.ProgressCallback callback)

Sets a ProgressCallback.

private void
private static void
validatePhase(final int phase)

Inherited from org.codehaus.groovy.control.ProcessingUnit:
completePhasegetClassLoadergetConfigurationgetErrorCollectorgetPhasegetPhaseDescriptiongotoPhaseisPhaseCompletenextPhasesetClassLoadersetConfiguration

Field Detail

astback to summary
protected CompileUnit ast

The overall AST for this CompilationUnit.

astTransformationsContextback to summary
protected ASTTransformationsContext astTransformationsContext

The AST transformations state data.

classgenback to summary
private final CompilationUnit.IPrimaryClassNodeOperation classgen

Runs the class generation phase on a single ClassNode.

classgenCallbackback to summary
protected CompilationUnit.ClassgenCallback classgenCallback

A callback called during the classgen phase of compilation

classNodeResolverback to summary
protected ClassNodeResolver classNodeResolver
configuredback to summary
protected boolean configured

True after the first configure(CompilerConfiguration) operation.

debugback to summary
protected boolean debug

If set, outputs a little more information during compilation when errors occur.

generatedClassesback to summary
private List<GroovyClass> generatedClasses

The classes generated during classgen.

javaCompilationUnitSetback to summary
private Set<JavaFileObject> javaCompilationUnitSet
newPhaseOperationsback to summary
private Deque<CompilationUnit.PhaseOperation>[] newPhaseOperations
phaseOperationsback to summary
private Deque<CompilationUnit.PhaseOperation>[] phaseOperations
progressCallbackback to summary
protected CompilationUnit.ProgressCallback progressCallback

A callback for use during compile()

queuedSourcesback to summary
protected Queue<SourceUnit> queuedSources
resolveback to summary
private final CompilationUnit.ISourceUnitOperation resolve

Resolves all types.

resolveVisitorback to summary
protected ResolveVisitor resolveVisitor
sourcesback to summary
protected Map<String, SourceUnit> sources

The source units from which this unit is built.

Constructor Detail

CompilationUnitback to summary
public CompilationUnit()

Initializes the CompilationUnit with defaults.

CompilationUnitback to summary
public CompilationUnit(final GroovyClassLoader loader)

Initializes the CompilationUnit with defaults except for class loader.

CompilationUnitback to summary
public CompilationUnit(final CompilerConfiguration configuration)

Initializes the CompilationUnit with no security considerations.

CompilationUnitback to summary
public CompilationUnit(final CompilerConfiguration configuration, final CodeSource codeSource, final GroovyClassLoader loader)

Initializes the CompilationUnit with a CodeSource for controlling security stuff and a class loader for loading classes.

CompilationUnitback to summary
public CompilationUnit(final CompilerConfiguration configuration, final CodeSource codeSource, final GroovyClassLoader loader, final GroovyClassLoader transformLoader)

Initializes the CompilationUnit with a CodeSource for controlling security stuff, a class loader for loading classes, and a class loader for loading AST transformations.

Note

The transform loader must be able to load compiler classes. That means classLoader must be at last a parent to transformLoader. The other loader has no such constraint.

Parameters
configuration:CompilerConfiguration

- compilation configuration

codeSource:CodeSource

- security setting for the compilation

loader:GroovyClassLoader

- loader used to resolve classes against during compilation

transformLoader:GroovyClassLoader

- the loader for transforms

Method Detail

addClassNodeback to summary
public void addClassNode(final ClassNode node)

Adds a ClassNode directly to the unit (ie. without source).

Warning

the source is needed for error reporting, using this method without setting a SourceUnit will cause NullPinterExceptions

addFirstPhaseOperationback to summary
public void addFirstPhaseOperation(final CompilationUnit.IPrimaryClassNodeOperation op, final int phase)
addFirstPhaseOperationback to summary
public void addFirstPhaseOperation(final CompilationUnit.PrimaryClassNodeOperation op, final int phase)

Deprecated

Annotations
@Deprecated
addJavaCompilationUnitsback to summary
public void addJavaCompilationUnits(final Set<JavaFileObject> javaCompilationUnitSet)
addNewPhaseOperationback to summary
public void addNewPhaseOperation(final CompilationUnit.ISourceUnitOperation op, final int phase)
addNewPhaseOperationback to summary
public void addNewPhaseOperation(final CompilationUnit.SourceUnitOperation op, final int phase)

Deprecated

Annotations
@Deprecated
addPhaseOperationback to summary
public void addPhaseOperation(final CompilationUnit.IGroovyClassOperation op)
addPhaseOperationback to summary
public void addPhaseOperation(final CompilationUnit.ISourceUnitOperation op, final int phase)
addPhaseOperationback to summary
public void addPhaseOperation(final CompilationUnit.IPrimaryClassNodeOperation op, final int phase)
addPhaseOperationback to summary
public void addPhaseOperation(final CompilationUnit.GroovyClassOperation op)

Deprecated

Annotations
@Deprecated
addPhaseOperationback to summary
public void addPhaseOperation(final CompilationUnit.SourceUnitOperation op, final int phase)

Deprecated

Annotations
@Deprecated
addPhaseOperationback to summary
public void addPhaseOperation(final CompilationUnit.PrimaryClassNodeOperation op, final int phase)

Deprecated

Annotations
@Deprecated
addPhaseOperationsback to summary
private void addPhaseOperations()
addSourceback to summary
public SourceUnit addSource(final File file)

Adds a source file to the unit.

addSourceback to summary
public SourceUnit addSource(final URL url)

Adds a source file to the unit.

addSourceback to summary
public SourceUnit addSource(final String name, final InputStream stream)

Adds a InputStream source to the unit.

addSourceback to summary
public SourceUnit addSource(final String name, final String scriptText)
addSourceback to summary
public SourceUnit addSource(final SourceUnit source)

Adds a SourceUnit to the unit.

addSourcesback to summary
public void addSources(final String[] paths)

Adds a set of file paths to the unit.

addSourcesback to summary
public void addSources(final File[] files)

Adds a set of source files to the unit.

applyCompilationCustomizersback to summary
private void applyCompilationCustomizers()
applyToPrimaryClassNodesback to summary
public void applyToPrimaryClassNodes(final CompilationUnit.PrimaryClassNodeOperation op) throws CompilationFailedException

Deprecated

Annotations
@Deprecated
applyToSourceUnitsback to summary
public void applyToSourceUnits(final CompilationUnit.SourceUnitOperation op) throws CompilationFailedException

Deprecated

Annotations
@Deprecated
buildASTsback to summary
private void buildASTs()
changeBugTextback to summary
private void changeBugText(final GroovyBugError e, final SourceUnit context)
compileback to summary
public void compile() throws CompilationFailedException

Synonym for compile(Phases.ALL).

compileback to summary
public void compile(int throughPhase) throws CompilationFailedException

Compiles the compilation unit from sources.

configureback to summary
public void configure(final CompilerConfiguration configuration)

Overrides org.codehaus.groovy.control.ProcessingUnit.configure.

Configures its debugging mode and classloader classpath from a given compiler configuration. This cannot be done more than once due to limitations in URLClassLoader.

Annotations
@Override
createClassVisitorback to summary
protected ClassVisitor createClassVisitor()
dequeuedback to summary
protected boolean dequeued() throws CompilationFailedException

Dequeues any source units add through addSource and resets the compiler phase to initialization.

Note

this does not mean a file is recompiled. If a SourceUnit has already passed a phase it is skipped until a higher phase is reached.

Returns:boolean

true if there was a queued source

getASTback to summary
public CompileUnit getAST()

Returns the CompileUnit that roots our AST.

getASTTransformationsContextback to summary
public ASTTransformationsContext getASTTransformationsContext()
Returns:ASTTransformationsContext

the AST transformations current context

getClassesback to summary
public List<GroovyClass> getClasses()

Get the GroovyClasses generated by compile().

getClassgenCallbackback to summary
public CompilationUnit.ClassgenCallback getClassgenCallback()
getClassNodeback to summary
public ClassNode getClassNode(final String name)

Convenience routine to get the named ClassNode.

getClassNodeResolverback to summary
public ClassNodeResolver getClassNodeResolver()
getFirstClassNodeback to summary
public ClassNode getFirstClassNode()

Convenience routine to get the first ClassNode, for when you are sure there is only one.

getJavaCompilationUnitSetback to summary
public Set<JavaFileObject> getJavaCompilationUnitSet()
getPrimaryClassNodesback to summary
private List<ClassNode> getPrimaryClassNodes(final boolean sort)
getProgressCallbackback to summary
public CompilationUnit.ProgressCallback getProgressCallback()
getSortedback to summary
private static List<ClassNode> getSorted(final int[] index, final List<ClassNode> unsorted)
getSuperClassCountback to summary
private static int getSuperClassCount(ClassNode classNode)
getSuperInterfaceCountback to summary
private static int getSuperInterfaceCount(final ClassNode classNode)
getTransformLoaderback to summary
public GroovyClassLoader getTransformLoader()

Returns the class loader for loading AST transformations.

iteratorback to summary
public Iterator<SourceUnit> iterator()

Returns an iterator on the unit's SourceUnits.

markback to summary
protected void mark() throws CompilationFailedException

Updates the phase marker on all sources.

processNewPhaseOperationsback to summary
private void processNewPhaseOperations(final int phase)
processPhaseOperationsback to summary
private void processPhaseOperations(final int phase)
recordPhaseOpsInAllOtherPhasesback to summary
private void recordPhaseOpsInAllOtherPhases(final int phase)
setClassgenCallbackback to summary
public void setClassgenCallback(final CompilationUnit.ClassgenCallback visitor)

Sets a ClassgenCallback. You can have only one, and setting it to null removes any existing setting.

setClassNodeResolverback to summary
public void setClassNodeResolver(final ClassNodeResolver classNodeResolver)
setProgressCallbackback to summary
public void setProgressCallback(final CompilationUnit.ProgressCallback callback)

Sets a ProgressCallback. You can have only one, and setting it to null removes any existing setting.

sortClassesback to summary
private void sortClasses()
validatePhaseback to summary
private static void validatePhase(final int phase)
org.codehaus.groovy.control back to summary

public Interface CompilationUnit.ClassgenCallback

Known Direct Implementers
groovy.lang.GroovyClassLoader.ClassCollector
Annotations
@FunctionalInterface

A callback interface you can use during the classgen phase of compilation as the compiler traverses the ClassNode tree. You will be called-back for each primary and inner class. Use setClassgenCallback() before running compile() to set your callback.

Method Summary

Modifier and TypeMethod and Description
public void
call(ClassVisitor writer, ClassNode node)

Method Detail

callback to summary
public void call(ClassVisitor writer, ClassNode node) throws CompilationFailedException
org.codehaus.groovy.control back to summary

public abstract Class CompilationUnit.GroovyClassOperation

extends Object
implements IGroovyClassOperation
Class Inheritance
  • java.lang.Object
  • org.codehaus.groovy.control.CompilationUnit.GroovyClassOperation
All Implemented Interfaces
org.codehaus.groovy.control.CompilationUnit.IGroovyClassOperation, org.codehaus.groovy.control.CompilationUnit.PhaseOperation
Annotations
@Deprecated

Deprecated

Constructor Summary

AccessConstructor and Description
public

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

GroovyClassOperationback to summary
public GroovyClassOperation()
org.codehaus.groovy.control back to summary

public Interface CompilationUnit.IGroovyClassOperation

extends PhaseOperation
Known Direct Implementers
org.codehaus.groovy.control.CompilationUnit.GroovyClassOperation
Annotations
@FunctionalInterface

Method Summary

Modifier and TypeMethod and Description
public void
call(GroovyClass groovyClass)

public default void

Method Detail

callback to summary
public void call(GroovyClass groovyClass) throws CompilationFailedException
doPhaseOperationback to summary
public default void doPhaseOperation(final CompilationUnit unit) throws CompilationFailedException

Implements org.codehaus.groovy.control.CompilationUnit.PhaseOperation.doPhaseOperation.

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

public Interface CompilationUnit.IPrimaryClassNodeOperation

extends PhaseOperation
Known Direct Implementers
org.codehaus.groovy.control.CompilationUnit.PrimaryClassNodeOperation, org.codehaus.groovy.control.customizers.CompilationCustomizer, groovy.lang.GroovyClassLoader.TimestampAdder
Annotations
@FunctionalInterface

Method Summary

Modifier and TypeMethod and Description
public void
call(SourceUnit source, GeneratorContext context, ClassNode classNode)

public default void
doPhaseOperation(final CompilationUnit unit)

Implements org.codehaus.groovy.control.CompilationUnit.PhaseOperation.doPhaseOperation.

A loop driver for applying operations to all primary ClassNodes in our AST.
public default boolean

Method Detail

callback to summary
public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) throws CompilationFailedException
doPhaseOperationback to summary
public default void doPhaseOperation(final CompilationUnit unit) throws CompilationFailedException

Implements org.codehaus.groovy.control.CompilationUnit.PhaseOperation.doPhaseOperation.

A loop driver for applying operations to all primary ClassNodes in our AST. Automatically skips units that have already been processed through the current phase.

Annotations
@Override
needSortedInputback to summary
public default boolean needSortedInput()
org.codehaus.groovy.control back to summary

public Interface CompilationUnit.ISourceUnitOperation

extends PhaseOperation
Known Direct Implementers
org.codehaus.groovy.control.CompilationUnit.SourceUnitOperation
Annotations
@FunctionalInterface

Method Summary

Modifier and TypeMethod and Description
public void
call(SourceUnit source)

public default void
doPhaseOperation(final CompilationUnit unit)

Implements org.codehaus.groovy.control.CompilationUnit.PhaseOperation.doPhaseOperation.

A loop driver for applying operations to all SourceUnits.

Method Detail

callback to summary
public void call(SourceUnit source) throws CompilationFailedException
doPhaseOperationback to summary
public default void doPhaseOperation(final CompilationUnit unit) throws CompilationFailedException

Implements org.codehaus.groovy.control.CompilationUnit.PhaseOperation.doPhaseOperation.

A loop driver for applying operations to all SourceUnits. Automatically skips units that have already been processed through the current phase.

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

private Interface CompilationUnit.PhaseOperation

Known Direct Subinterfaces
org.codehaus.groovy.control.CompilationUnit.ISourceUnitOperation, org.codehaus.groovy.control.CompilationUnit.IPrimaryClassNodeOperation, org.codehaus.groovy.control.CompilationUnit.IGroovyClassOperation

Method Summary

Modifier and TypeMethod and Description
public void

Method Detail

doPhaseOperationback to summary
public void doPhaseOperation(CompilationUnit unit)
org.codehaus.groovy.control back to summary

public abstract Class CompilationUnit.PrimaryClassNodeOperation

extends Object
implements IPrimaryClassNodeOperation
Class Inheritance
  • java.lang.Object
  • org.codehaus.groovy.control.CompilationUnit.PrimaryClassNodeOperation
All Implemented Interfaces
org.codehaus.groovy.control.CompilationUnit.IPrimaryClassNodeOperation, org.codehaus.groovy.control.CompilationUnit.PhaseOperation
Annotations
@Deprecated

Deprecated

Constructor Summary

AccessConstructor and Description
public

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

PrimaryClassNodeOperationback to summary
public PrimaryClassNodeOperation()
org.codehaus.groovy.control back to summary

public Interface CompilationUnit.ProgressCallback

Annotations
@FunctionalInterface

A callback interface you can use to get a callback after every unit of the compile process. You will be called-back with a ProcessingUnit and a phase indicator. Use setProgressCallback() before running compile() to set your callback.

Method Summary

Modifier and TypeMethod and Description
public void
call(ProcessingUnit context, int phase)

Method Detail

callback to summary
public void call(ProcessingUnit context, int phase) throws CompilationFailedException
org.codehaus.groovy.control back to summary

public abstract Class CompilationUnit.SourceUnitOperation

extends Object
implements ISourceUnitOperation
Class Inheritance
  • java.lang.Object
  • org.codehaus.groovy.control.CompilationUnit.SourceUnitOperation
All Implemented Interfaces
org.codehaus.groovy.control.CompilationUnit.ISourceUnitOperation, org.codehaus.groovy.control.CompilationUnit.PhaseOperation
Annotations
@Deprecated

Deprecated

Constructor Summary

AccessConstructor and Description
public

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

SourceUnitOperationback to summary
public SourceUnitOperation()