Package org.codehaus.groovy.ast

# Class CompileUnit

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

All Implemented Interfaces:
  `NodeMetaDataHandler`

    public class CompileUnit
    extends java.lang.Object
    implements NodeMetaDataHandler

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` | Deprecated.

- ## Constructor Summary

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

- ## Method Summary

  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)` | Deprecated.
  `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()` | Deprecated.
  `GroovyClassLoader` | `getClassLoader()` |
  `java.security.CodeSource` | `getCodeSource()` |
  `CompilerConfiguration` | `getConfig()` |
  `InnerClassNode` | `getGeneratedInnerClass​(java.lang.String name)` |
  `java.util.Map<java.lang.String,​InnerClassNode>` | `getGeneratedInnerClasses()` |
  `java.util.Map<?,​?>` | `getMetaDataMap()` |
  `java.util.List<ModuleNode>` | `getModules()` |
  `SourceUnit` | `getScriptSourceLocation​(java.lang.String scriptClassName)` |
  `boolean` | `hasClassNodeToCompile()` |
  `java.util.Iterator<java.lang.String>` | `iterateClassNodeToCompile()` |
  `void` | `setMetaDataMap​(java.util.Map<?,​?> metaDataMap)` |

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

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

  ### Methods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler

  `copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setNodeMetaData`

- ## Constructor Details

  - ### CompileUnit

    public CompileUnit​(GroovyClassLoader classLoader, CompilerConfiguration config)

  - ### CompileUnit

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

- ## Method Details

  - ### 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.

  - ### getClassesToCompile

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

  - ### iterateClassNodeToCompile

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

  - ### hasClassNodeToCompile

    public boolean hasClassNodeToCompile()

  - ### addGeneratedInnerClass

    public void addGeneratedInnerClass​(InnerClassNode icn)

  - ### getGeneratedInnerClass

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

  - ### getGeneratedInnerClasses

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

  - ### getScriptSourceLocation

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

  - ### getMetaDataMap

    public java.util.Map<?,​?> getMetaDataMap()
    Specified by:
      `getMetaDataMap` in interface `NodeMetaDataHandler`

  - ### setMetaDataMap

    public void setMetaDataMap​(java.util.Map<?,​?> metaDataMap)
    Specified by:
      `setMetaDataMap` in interface `NodeMetaDataHandler`

  - ### addClassNodeToResolve

    @Deprecated public void addClassNodeToResolve​(CompileUnit.ConstructedOuterNestedClassNode cn)
    Deprecated.
    Add a constructed class node as a placeholder to resolve outer nested class further.
    Parameters:
      `cn` - the constructed class node

  - ### getClassesToResolve

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