Class CompileUnit


  • public class CompileUnit
    extends 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

      • addModule

        public void addModule​(ModuleNode node)
      • getClass

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

        public List<ClassNode> getClasses()
        Returns:
        a list of all the classes in each module in the compilation unit
      • getCodeSource

        public 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​(String className)
      • hasClassNodeToCompile

        public boolean hasClassNodeToCompile()
      • iterateClassNodeToCompile

        public Iterator<String> iterateClassNodeToCompile()
      • addGeneratedInnerClass

        public void addGeneratedInnerClass​(InnerClassNode icn)
      • 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​(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​(Object key,
                                    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 Object putNodeMetaData​(Object key,
                                      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​(Object key)
        Removes a node meta data entry.
        Parameters:
        key - - the meta data key
        Throws:
        GroovyBugError - if the key is null
      • getNodeMetaData

        public Map<?,​?> getNodeMetaData()
        Returns an unmodifiable view of the current node metadata.
        Returns:
        the node metadata. Always not null.