Class EsModuleProcessor

java.lang.Object
com.google.javascript.jscomp.modules.EsModuleProcessor
All Implemented Interfaces:
NodeTraversal.Callback

public final class EsModuleProcessor extends Object implements NodeTraversal.Callback
Collects information related to and resolves ES imports and exports. Also performs several ES module related checks.

This information is stored outside of any Scope because it should never be recalculated because it is expensive.

Suggested reading

  • Field Details

    • AMBIGUOUS_EXPORT_DEFINITION

      public static final DiagnosticType AMBIGUOUS_EXPORT_DEFINITION
      Error occurs when there is an ambiguous export, which can happen if there are multiple export * from statements. If two modules that were export * from'd have the same key as an export that export is now ambiguous. It can be resolved by exporting that key explicitly locally.

      So if modules "first" and "second" both export "x" then this is ambiguous:

       export * from 'first';
       export * from 'second';
       

      However we can resolve it by explicitly exporting an "x" locally:

       // Note: any one of these is a solution. Using 2 or more together causes a duplicate key error.
      
       // specifically export x from first
       export {x} from 'first';
       // specifically export x from second
       export {x} from 'second';
       // export our own x instead
       export let x;
       
      Note: This is purposefully a warning. The spec does not treat this as an error. It is only an error if an import attempts to use an ambiguous name. But just having ambiguous names is not itself an error.
    • CYCLIC_EXPORT_DEFINITION

      public static final DiagnosticType CYCLIC_EXPORT_DEFINITION
    • DUPLICATE_EXPORT

      public static final DiagnosticType DUPLICATE_EXPORT
    • IMPORTED_AMBIGUOUS_EXPORT

      public static final DiagnosticType IMPORTED_AMBIGUOUS_EXPORT
    • NAMESPACE_IMPORT_CANNOT_USE_STAR

      public static final DiagnosticType NAMESPACE_IMPORT_CANNOT_USE_STAR
    • CANNOT_PATH_IMPORT_CLOSURE_FILE

      public static final DiagnosticType CANNOT_PATH_IMPORT_CLOSURE_FILE
  • Method Details