Package org.codehaus.groovy.ast

## Class CompileUnit

- java.lang.Object
- - org.codehaus.groovy.ast.CompileUnit

-     public class CompileUnit
      extends java.lang.Object

  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

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `CompileUnit.ConstructedOuterNestedClassNode` | Represents a resolved type as a placeholder, SEE GROOVY-7812

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CompileUnit​(GroovyClassLoader classLoader, java.security.CodeSource codeSource, CompilerConfiguration config)` |
    `CompileUnit​(GroovyClassLoader classLoader, CompilerConfiguration config)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | 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​(java.lang.String name)` |
    `java.util.List<ClassNode>` | `getClasses()` |
    `java.util.Map<java.lang.String,​ClassNode>` | `getClassesToCompile()` |
    `java.util.Map<java.lang.String,​CompileUnit.ConstructedOuterNestedClassNode>` | `getClassesToResolve()` |
    `GroovyClassLoader` | `getClassLoader()` |
    `java.security.CodeSource` | `getCodeSource()` |
    `CompilerConfiguration` | `getConfig()` |
    `InnerClassNode` | `getGeneratedInnerClass​(java.lang.String name)` |
    `java.util.Map<java.lang.String,​InnerClassNode>` | `getGeneratedInnerClasses()` |
    `ListHashMap` | `getMetaDataMap()` |
    `java.util.List<ModuleNode>` | `getModules()` |
    `java.util.Map<?,​?>` | `getNodeMetaData()` | Returns an unmodifiable view of the current node metadata.
    `<T> T` | `getNodeMetaData​(java.lang.Object key)` | Gets the node meta data for the provided key.
    `SourceUnit` | `getScriptSourceLocation​(java.lang.String className)` |
    `boolean` | `hasClassNodeToCompile()` |
    `java.util.Iterator<java.lang.String>` | `iterateClassNodeToCompile()` |
    `java.lang.Object` | `putNodeMetaData​(java.lang.Object key, java.lang.Object value)` | Sets the node meta data but allows overwriting values.
    `void` | `removeNodeMetaData​(java.lang.Object key)` | Removes a node meta data entry.
    `void` | `setNodeMetaData​(java.lang.Object key, java.lang.Object value)` | Sets the node meta data for the provided key.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CompileUnit

          public CompileUnit​(GroovyClassLoader classLoader,
                             CompilerConfiguration config)

    - #### CompileUnit

          public CompileUnit​(GroovyClassLoader classLoader,
                             java.security.CodeSource codeSource,
                             CompilerConfiguration config)

  - ### Method Detail

    - #### getModules

          public java.util.List<ModuleNode> getModules()

    - #### addModule

          public void addModule​(ModuleNode node)

    - #### getClass

          public ClassNode getClass​(java.lang.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)

    - #### getClasses

          public java.util.List<ClassNode> getClasses()

      Returns:
        a list of all the classes in each module in the compilation unit

    - #### getConfig

          public CompilerConfiguration getConfig()

    - #### getClassLoader

          public GroovyClassLoader getClassLoader()

    - #### getCodeSource

          public java.security.CodeSource getCodeSource()

    - #### addClass

          public void addClass​(ClassNode node)

      Adds a class to the unit.

    - #### addClassNodeToCompile

          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.

    - #### getScriptSourceLocation

          public SourceUnit getScriptSourceLocation​(java.lang.String className)

    - #### hasClassNodeToCompile

          public boolean hasClassNodeToCompile()

    - #### iterateClassNodeToCompile

          public java.util.Iterator<java.lang.String> iterateClassNodeToCompile()

    - #### getGeneratedInnerClass

          public InnerClassNode getGeneratedInnerClass​(java.lang.String name)

    - #### addGeneratedInnerClass

          public void addGeneratedInnerClass​(InnerClassNode icn)

    - #### getGeneratedInnerClasses

          public java.util.Map<java.lang.String,​InnerClassNode> getGeneratedInnerClasses()

    - #### getClassesToCompile

          public java.util.Map<java.lang.String,​ClassNode> getClassesToCompile()

    - #### getClassesToResolve

          public java.util.Map<java.lang.String,​CompileUnit.ConstructedOuterNestedClassNode> getClassesToResolve()

    - #### addClassNodeToResolve

          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

    - #### getNodeMetaData

          public <T> T getNodeMetaData​(java.lang.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

    - #### setNodeMetaData

          public void setNodeMetaData​(java.lang.Object key,
                                      java.lang.Object value)

      Sets the node meta data for the provided key.
      Parameters:
        `key` - - the meta data key
        `value` - - the meta data value
      Throws:
        `GroovyBugError` - if key is null or there is already meta data under that key

    - #### putNodeMetaData

          public java.lang.Object putNodeMetaData​(java.lang.Object key,
                                                  java.lang.Object value)

      Sets the node meta data but allows overwriting values.
      Parameters:
        `key` - - the meta data key
        `value` - - the meta data value
      Returns:
        the old node meta data value for this key
      Throws:
        `GroovyBugError` - if key is null

    - #### removeNodeMetaData

          public void removeNodeMetaData​(java.lang.Object key)

      Removes a node meta data entry.
      Parameters:
        `key` - - the meta data key
      Throws:
        `GroovyBugError` - if the key is null

    - #### getNodeMetaData

          public java.util.Map<?,​?> getNodeMetaData()

      Returns an unmodifiable view of the current node metadata.
      Returns:
        the node metadata. Always not null.

    - #### getMetaDataMap

          public ListHashMap getMetaDataMap()