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

    • 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
      • 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)
      • 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.
      • 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