[Java] Class CompileUnit
- org.codehaus.groovy.ast.CompileUnit
Represents the entire contents of a compilation step which consists of one or more ModuleNode instances. There's one instance of this that's shared by all modules and classes compiled during a single invocation of the compiler.
It's attached to MethodNodes and ClassNodes and is used to find fully qualified names of classes, resolve imports, and that sort of thing.
Nested Class Summary
Modifiers | Name | Description |
---|---|---|
static class | CompileUnit.ConstructedOuterNestedClassNode | Represents a resolved type as a placeholder, SEE GROOVY-7812 |
Properties Summary
Type | Name and description |
---|---|
T |
nodeMetaData |
Object |
nodeMetaData |
Constructor Summary
Constructor and description |
---|
CompileUnit
(GroovyClassLoader classLoader, CompilerConfiguration config) |
CompileUnit
(GroovyClassLoader classLoader, CodeSource codeSource, CompilerConfiguration config) |
Methods Summary
Type Params | Return Type | Name and description |
---|---|---|
void |
addClass(ClassNode node) Adds a class to the unit. | |
void |
addClassNodeToCompile(ClassNode node, SourceUnit location) this method actually does not compile a class. | |
void |
addClassNodeToResolve(CompileUnit.ConstructedOuterNestedClassNode cn) Add a constructed class node as a placeholder to resolve outer nested class further. | |
void |
addGeneratedInnerClass(InnerClassNode icn) | |
void |
addModule(ModuleNode node) | |
ClassNode |
getClass(String name) @return the ClassNode for the given qualified name or returns null if the name does not exist in the current compilation unit (ignoring the .class files on the classpath) | |
GroovyClassLoader |
getClassLoader() | |
List<ClassNode> |
getClasses() @return a list of all the classes in each module in the compilation unit | |
Map<String, ClassNode> |
getClassesToCompile() | |
Map<String, ConstructedOuterNestedClassNode> |
getClassesToResolve() | |
CodeSource |
getCodeSource() | |
CompilerConfiguration |
getConfig() | |
InnerClassNode |
getGeneratedInnerClass(String name) | |
Map<String, InnerClassNode> |
getGeneratedInnerClasses() | |
ListHashMap |
getMetaDataMap() | |
List<ModuleNode> |
getModules() | |
<T> | T |
getNodeMetaData(Object key) Gets the node meta data for the provided key. |
Map<?, ?> |
getNodeMetaData() Returns an unmodifiable view of the current node metadata. | |
SourceUnit |
getScriptSourceLocation(String className) | |
boolean |
hasClassNodeToCompile() | |
Iterator<String> |
iterateClassNodeToCompile() | |
Object |
putNodeMetaData(Object key, Object value) Sets the node meta data but allows overwriting values. | |
void |
removeNodeMetaData(Object key) Removes a node meta data entry. | |
void |
setNodeMetaData(Object key, Object value) Sets the node meta data for the provided key. |
Inherited Methods Summary
Methods inherited from class | Name |
---|---|
class Object | wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Property Detail
T nodeMetaData
Object nodeMetaData
Constructor Detail
public CompileUnit(GroovyClassLoader classLoader, CompilerConfiguration config)
public CompileUnit(GroovyClassLoader classLoader, CodeSource codeSource, CompilerConfiguration config)
Method Detail
public void addClass(ClassNode node)
Adds a class to the unit.
public void addClassNodeToCompile(ClassNode node, SourceUnit location)
this method actually does not compile a class. It's only a marker that this type has to be compiled by the CompilationUnit at the end of a parse step no node should be be left.
public void addClassNodeToResolve(CompileUnit.ConstructedOuterNestedClassNode cn)
Add a constructed class node as a placeholder to resolve outer nested class further.
- Parameters:
-
cn
- the constructed class node
public void addGeneratedInnerClass(InnerClassNode icn)
public void addModule(ModuleNode node)
public ClassNode getClass(String name)
- Returns:
- the ClassNode for the given qualified name or returns null if the name does not exist in the current compilation unit (ignoring the .class files on the classpath)
public GroovyClassLoader getClassLoader()
public List<ClassNode> getClasses()
- Returns:
- a list of all the classes in each module in the compilation unit
public Map<String, ClassNode> getClassesToCompile()
public Map<String, ConstructedOuterNestedClassNode> getClassesToResolve()
public CodeSource getCodeSource()
public CompilerConfiguration getConfig()
public InnerClassNode getGeneratedInnerClass(String name)
public Map<String, InnerClassNode> getGeneratedInnerClasses()
public ListHashMap getMetaDataMap()
public List<ModuleNode> getModules()
<T> public T getNodeMetaData(Object key)
Gets the node meta data for the provided key.
- Parameters:
-
key
- - the meta data key
- Returns:
- the node meta data value for this key
public Map<?, ?> getNodeMetaData()
Returns an unmodifiable view of the current node metadata.
- Returns:
- the node metadata. Always not null.
public SourceUnit getScriptSourceLocation(String className)
public boolean hasClassNodeToCompile()
public Iterator<String> iterateClassNodeToCompile()
public Object putNodeMetaData(Object key, Object value)
Sets the node meta data but allows overwriting values.
- throws:
- GroovyBugError if key is null
- Parameters:
-
key
- - the meta data key -
value
- - the meta data value
- Returns:
- the old node meta data value for this key
public void removeNodeMetaData(Object key)
Removes a node meta data entry.
- throws:
- GroovyBugError if the key is null
- Parameters:
-
key
- - the meta data key
public void setNodeMetaData(Object key, Object value)
Sets the node meta data for the provided key.
- throws:
- GroovyBugError if key is null or there is already meta data under that key
- Parameters:
-
key
- - the meta data key -
value
- - the meta data value
© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/2.5.14/html/gapi/org/codehaus/groovy/ast/CompileUnit.html