Class JSModule

  • All Implemented Interfaces:
    DependencyInfo, java.io.Serializable

    public class JSModule
    extends java.lang.Object
    implements DependencyInfo, java.io.Serializable
    A JavaScript module has a unique name, consists of a list of compiler inputs, and can depend on other modules.
    See Also:
    Serialized Form
    • Constructor Detail

      • JSModule

        public JSModule​(java.lang.String name)
        Creates an instance.
        Parameters:
        name - A unique name for the module
    • Method Detail

      • getName

        public java.lang.String getName()
        Gets the module name.
        Specified by:
        getName in interface DependencyInfo
      • getProvides

        public java.util.List<java.lang.String> getProvides()
        Description copied from interface: DependencyInfo
        Gets the symbols provided by this file.
        Specified by:
        getProvides in interface DependencyInfo
      • getRequires

        public java.util.List<java.lang.String> getRequires()
        Description copied from interface: DependencyInfo
        Gets the symbols required by this file.
        Specified by:
        getRequires in interface DependencyInfo
      • add

        public void add​(SourceFile file)
        Adds a source file input to this module.
      • addFirst

        public void addFirst​(SourceFile file)
        Adds a source file input to this module.
      • add

        public void add​(CompilerInput input)
        Adds a source code input to this module.
      • addFirst

        public void addFirst​(CompilerInput input)
        Adds a source code input to this module.
      • addAfter

        public void addAfter​(CompilerInput input,
                             CompilerInput other)
        Adds a source code input to this module directly after other.
      • addDependency

        public void addDependency​(JSModule dep)
        Adds a dependency on another module.
      • remove

        public void remove​(CompilerInput input)
        Removes an input from this module.
      • removeAll

        public void removeAll()
        Removes all of the inputs from this module.
      • getDependencies

        public java.util.List<JSModule> getDependencies()
        Gets the list of modules that this module depends on.
        Returns:
        A list that may be empty but not null
      • getAllDependencies

        public java.util.Set<JSModule> getAllDependencies()
        Returns the transitive closure of dependencies starting from the dependencies of this module.
      • getThisAndAllDependencies

        public java.util.Set<JSModule> getThisAndAllDependencies()
        Returns this module and all of its dependencies in one list.
      • getInputs

        public java.util.List<CompilerInput> getInputs()
        Gets this module's list of source code inputs.
        Returns:
        A list that may be empty but not null
      • getByName

        public CompilerInput getByName​(java.lang.String name)
        Returns the input with the given name or null if none.
      • removeByName

        public boolean removeByName​(java.lang.String name)
        Removes any input with the given name. Returns whether any were removed.
      • toString

        public java.lang.String toString()
        Returns the module name (primarily for debugging).
        Overrides:
        toString in class java.lang.Object
      • clearAsts

        public void clearAsts()
        Removes any references to nodes of the AST. This method is needed to allow the ASTs to be garbage collected if the modules are kept around.
      • sortInputsByDeps

        public void sortInputsByDeps​(Compiler compiler)
        Puts the JS files into a topologically sorted order by their dependencies.
      • sortJsModules

        public static JSModule[] sortJsModules​(java.util.Collection<JSModule> modules)
                                        throws SortedDependencies.CircularDependencyException
        Returns the given collection of modules in topological order. Note that this will return the modules in the same order if they are already sorted, and in general, will only change the order as necessary to satisfy the ordering dependencies. This can be important for cases where the modules do not properly specify all dependencies.
        Throws:
        SortedDependencies.CircularDependencyException
      • setDepth

        public void setDepth​(int dep)
        Parameters:
        dep - the depth to set
      • getDepth

        public int getDepth()
        Returns:
        the depth