public final class EsModuleProcessor extends java.lang.Object implements NodeTraversal.Callback
This information is stored outside of any Scope
because it should never be
recalculated. Recalculation is prevented for the following reasons:
Modifier and Type | Field and Description |
---|---|
static DiagnosticType |
AMBIGUOUS_EXPORT_DEFINITION
Error occurs when there is an ambiguous export, which can happen if there are multiple
export * from statements. |
static DiagnosticType |
CANNOT_PATH_IMPORT_CLOSURE_FILE |
static DiagnosticType |
CYCLIC_EXPORT_DEFINITION |
static DiagnosticType |
DUPLICATE_EXPORT |
static DiagnosticType |
IMPORTED_AMBIGUOUS_EXPORT |
static DiagnosticType |
NAMESPACE_IMPORT_CANNOT_USE_STAR |
Modifier and Type | Method and Description |
---|---|
com.google.javascript.jscomp.modules.UnresolvedModule |
process(ModuleMetadataMap.ModuleMetadata metadata,
ModuleLoader.ModulePath path,
Node script) |
boolean |
shouldTraverse(NodeTraversal t,
Node n,
Node parent)
Visits a node in pre order (before visiting its children) and decides
whether this node's children should be traversed.
|
void |
visit(NodeTraversal t,
Node n,
Node parent)
Visits a node in postorder (after its children have been visited).
|
public static final DiagnosticType AMBIGUOUS_EXPORT_DEFINITION
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.
public static final DiagnosticType CYCLIC_EXPORT_DEFINITION
public static final DiagnosticType DUPLICATE_EXPORT
public static final DiagnosticType IMPORTED_AMBIGUOUS_EXPORT
public static final DiagnosticType NAMESPACE_IMPORT_CANNOT_USE_STAR
public static final DiagnosticType CANNOT_PATH_IMPORT_CLOSURE_FILE
public com.google.javascript.jscomp.modules.UnresolvedModule process(ModuleMetadataMap.ModuleMetadata metadata, ModuleLoader.ModulePath path, Node script)
public boolean shouldTraverse(NodeTraversal t, Node n, Node parent)
NodeTraversal.Callback
Visits a node in pre order (before visiting its children) and decides
whether this node's children should be traversed. If children are
traversed, they will be visited by
NodeTraversal.Callback.visit(NodeTraversal, Node, Node)
in postorder.
Implementations can have side effects (e.g. modifying the parse tree).
shouldTraverse
in interface NodeTraversal.Callback
public void visit(NodeTraversal t, Node n, Node parent)
NodeTraversal.Callback
Visits a node in postorder (after its children have been visited).
A node is visited only if all its parents should be traversed
(NodeTraversal.Callback.shouldTraverse(NodeTraversal, Node, Node)
).
Implementations can have side effects (e.g. modifying the parse tree).
visit
in interface NodeTraversal.Callback
Copyright © 2009-2019 Google. All Rights Reserved.