Class AbstractCompiler

java.lang.Object
com.google.javascript.jscomp.AbstractCompiler
All Implemented Interfaces:
CompilerInputProvider, SourceExcerptProvider
Direct Known Subclasses:
Compiler

public abstract class AbstractCompiler extends Object implements SourceExcerptProvider, CompilerInputProvider
An abstract compiler, to help remove the circular dependency of passes on JSCompiler.

This is an abstract class, so that we can make the methods package-private.

  • Constructor Details

    • AbstractCompiler

      public AbstractCompiler()
  • Method Details

    • getInput

      public abstract CompilerInput getInput(InputId inputId)
      Looks up an input (possibly an externs input) by input id. May return null.
      Specified by:
      getInput in interface CompilerInputProvider
    • getScriptNode

      public abstract @Nullable Node getScriptNode(String filename)
    • addExportedNames

      public abstract void addExportedNames(Set<String> exportedVariableNames)
      Adds exported names to keep track.
    • getExportedNames

      public abstract Set<String> getExportedNames()
      Gets the names that have been exported.
    • setDefineNames

      public abstract void setDefineNames(Collection<String> defineNames)
      Adds @define names to keep track.
    • getDefineNames

      public abstract com.google.common.collect.ImmutableSet<String> getDefineNames()
    • setVariableMap

      public abstract void setVariableMap(VariableMap variableMap)
      Sets the variable renaming map
    • setPropertyMap

      public abstract void setPropertyMap(VariableMap propertyMap)
      Sets the property renaming map
    • setStringMap

      public abstract void setStringMap(VariableMap stringMap)
      Sets the string replacement map
    • setCssNames

      public abstract void setCssNames(Set<String> newCssNames)
      Sets the css names found during compilation.
    • setInstrumentationMapping

      public abstract void setInstrumentationMapping(VariableMap instrumentationMapping)
      Sets the mapping for instrumentation parameter encoding.
    • setIdGeneratorMap

      public abstract void setIdGeneratorMap(String serializedIdMappings)
      Sets the id generator for cross-module motion.
    • getTranspiledFiles

      public abstract boolean getTranspiledFiles()
      Gets whether any file needed to transpile any feature
    • getCrossModuleIdGenerator

      public abstract IdGenerator getCrossModuleIdGenerator()
      Gets the id generator for cross-module motion.
    • setAnonymousFunctionNameMap

      public abstract void setAnonymousFunctionNameMap(VariableMap functionMap)
      Sets the naming map for anonymous functions
    • hasTypeCheckingRun

      public abstract boolean hasTypeCheckingRun()
      Returns whether the typechecking passes have run
    • hasOptimizationColors

      public abstract boolean hasOptimizationColors()
      Whether the AST has been annotated with optimization colors.
    • isTypeRegistryCleared

      public abstract boolean isTypeRegistryCleared()
      Returns `true` when type checking has run, but the type registry has been cleared.

      See also `clearJSTypeRegistry()`.

    • getTypeRegistry

      public abstract JSTypeRegistry getTypeRegistry()
      Gets a central registry of type information from the compiled JS.
    • clearJSTypeRegistry

      public abstract void clearJSTypeRegistry()
    • getColorRegistry

      public abstract ColorRegistry getColorRegistry()
      Gets a central registry of colors from deserialized JS types.
    • setColorRegistry

      public abstract void setColorRegistry(ColorRegistry registry)
      Sets the color registry
    • getTopScope

      public abstract @Nullable TypedScope getTopScope()
      Gets the top scope.
    • report

      public abstract void report(JSError error)
      Report an error or warning.
    • getCodingConvention

      public abstract CodingConvention getCodingConvention()
      Gets the current coding convention.
    • reportChangeToEnclosingScope

      public abstract void reportChangeToEnclosingScope(Node n)
      Passes that make modifications in a scope that is different than the Compiler.currentScope use this (eg, InlineVariables and many others)
    • reportChangeToChangeScope

      public abstract void reportChangeToChangeScope(Node changeScopeRoot)
      Mark modifications in a scope that is different than the Compiler.currentScope use this (eg, InlineVariables and many others)
    • reportDisambiguatePropertiesSummary

      public abstract void reportDisambiguatePropertiesSummary(Supplier<String> summarySupplier)
      Used by `DisambiguateProperties` to record a one-line summary of the work it accomplished, if any.

      This information will be included in the tracer mode output, if that is enabled.

    • reportAmbiguatePropertiesSummary

      public abstract void reportAmbiguatePropertiesSummary(Supplier<String> summarySupplier)
      Used by `AmbiguateProperties` to record a one-line summary of the work it accomplished, if any.

      This information will be included in the tracer mode output, if that is enabled.

    • getTypeMismatches

      public abstract Iterable<TypeMismatch> getTypeMismatches()
      Gets the central registry of type violations.
    • parseSyntheticCode

      public abstract Node parseSyntheticCode(String filename, String code)
      Parses code for injecting, and associate it with a given source file.
    • toSource

      public abstract String toSource()
      Prints a node to source code.
    • toSource

      public abstract String toSource(Node root)
      Prints a node to source code.
    • getReverseAbstractInterpreter

      public abstract ReverseAbstractInterpreter getReverseAbstractInterpreter()
      Get an interpreter for type analysis.
    • getLifeCycleStage

      public AbstractCompiler.LifeCycleStage getLifeCycleStage()
      Returns the current life-cycle stage of the AST we're working on.
    • isFillFileName

      public static boolean isFillFileName(String fileName)
      Returns whether a file name was created by createFillFileName(java.lang.String).
    • initRuntimeLibraryTypedAsts

      public void initRuntimeLibraryTypedAsts(com.google.common.base.Optional<ColorPool.Builder> colorPoolBuilder)
      Deserialize runtime libraries from a TypedAST packaged as a JAR resource and reconcile their Colors with the current inputs.

      This method must be called anywhere that Colors are reconciled for application to the AST. Otherwise Color information won't be consistent. `colorPoolBuilder` must be the same builder as used for the other inputs, and the caller retains ownership.

      Parameters:
      colorPoolBuilder - if present, includes inferred optimization colors on the deserialized ASTs. If absent, does not include colors.
    • getErrorManager

      public abstract ErrorManager getErrorManager()
      Gets the error manager.
    • getRoot

      public abstract Node getRoot()
      Returns the root node of the AST, which includes both externs and source.
    • getExternProperties

      public abstract com.google.common.collect.ImmutableSet<String> getExternProperties()
      Gets the names of the properties defined in externs or null if GatherExternProperties pass was not run yet.
    • addInputSourceMap

      public abstract void addInputSourceMap(String name, SourceMapInput sourceMap)
      Adds a SourceMapInput for the given sourceFileName, to be used for error reporting and source map combining.
    • getBase64SourceMapContents

      public abstract String getBase64SourceMapContents(String sourceFileName)
    • setAccessorSummary

      public abstract void setAccessorSummary(com.google.javascript.jscomp.AccessorSummary summary)
      Sets the summary of properties with getters and setters.
    • createAstFactory

      public final com.google.javascript.jscomp.AstFactory createAstFactory()
      Returns a new AstFactory that will add type information to the nodes it creates if and only if type checking has already happened and types have not been converted into colors.

      Note that the AstFactory will /not/ add colors to the AST if types have been converted into colors. The AstFactory does not understand colors, although color support could certainly be added if it proves useful.

    • createAstFactoryWithoutTypes

      public final com.google.javascript.jscomp.AstFactory createAstFactoryWithoutTypes()
      Returns a new AstFactory that will not add type information, regardless of whether type checking has already happened.
    • getAstAnalyzer

      public AstAnalyzer getAstAnalyzer()
      Returns a new AstAnalyzer configured correctly to answer questions about Nodes in the AST currently being compiled.
    • createDefaultExpressionDecomposer

      public com.google.javascript.jscomp.ExpressionDecomposer createDefaultExpressionDecomposer()
    • createExpressionDecomposer

      public com.google.javascript.jscomp.ExpressionDecomposer createExpressionDecomposer(Supplier<String> uniqueNameIdSupplier, com.google.common.collect.ImmutableSet<String> knownConstantFunctions, Scope scope)
    • getModuleMetadataMap

      public abstract ModuleMetadataMap getModuleMetadataMap()
    • setModuleMetadataMap

      public abstract void setModuleMetadataMap(ModuleMetadataMap moduleMetadataMap)
    • getModuleMap

      public abstract ModuleMap getModuleMap()
    • setModuleMap

      public abstract void setModuleMap(ModuleMap moduleMap)
    • isDebugLoggingEnabled

      public final boolean isDebugLoggingEnabled()
    • getDebugLogFilterList

      public final List<String> getDebugLogFilterList()
    • createOrReopenLog

      @MustBeClosed public final LogFile createOrReopenLog(Class<?> owner, String firstNamePart, String... restNameParts)
      Provides logging access to a file with the specified name.
    • createOrReopenIndexedLog

      @MustBeClosed public final LogFile createOrReopenIndexedLog(Class<?> owner, String firstNamePart, String... restNameParts)
      Provides logging access to a file with the specified name, differentiated by the index of the current pass.

      Indexing helps in separating logs from different pass loops. The filename pattern is "[debug_log_directory]/[owner_name]/([name_part[i]]/){0,n-1}[pass_index]_[name_part[n]]".