private class StripCode.Strip extends NodeTraversal.AbstractPostOrderCallback
Modifier | Constructor and Description |
---|---|
private |
Strip() |
Modifier and Type | Method and Description |
---|---|
private boolean |
actsOnStripType(NodeTraversal t,
Node callNode)
Determines whether the given node helps to define a
strip type.
|
(package private) void |
eliminateKeysWithStripNamesFromObjLit(NodeTraversal t,
Node n)
Eliminates any object literal keys in an object literal declaration that
have strip names.
|
(package private) boolean |
isCallWhoseReturnValueShouldBeStripped(Node n)
Gets whether a node is a CALL node whose return value should be
stripped.
|
(package private) boolean |
isMethodOrCtorCallThatTriggersRemoval(NodeTraversal t,
Node n,
Node parent)
Gets whether a CALL node triggers statement removal, based on the name
of the object whose method is being called, or the name of the method.
|
(package private) boolean |
isReferenceToRemovedVar(NodeTraversal t,
Node n)
Determines whether a NAME node represents a reference to a variable that
has been removed.
|
(package private) boolean |
isStripName(java.lang.String name)
Gets whether a JavaScript identifier is the name of a variable or
property that should be stripped.
|
(package private) void |
maybeEliminateAssignmentByLvalueName(NodeTraversal t,
Node n,
Node parent)
Eliminates an assignment if the l-value is:
- A field name that's a strip name
- A qualified name that begins with a strip type
|
(package private) void |
maybeEliminateExpressionByName(NodeTraversal t,
Node n,
Node parent)
Eliminates an expression if it refers to:
- A field name that's a strip name
- A qualified name that begins with a strip type
This gets rid of construct like:
a.prototype.logger; (used instead of a.prototype.logger = null;)
This expression is not an assignment and so will not be caught by
maybeEliminateAssignmentByLvalueName.
|
(package private) void |
maybeRemoveCall(NodeTraversal t,
Node n,
Node parent)
Removes a method call if
isMethodOrCtorCallThatTriggersRemoval(com.google.javascript.jscomp.NodeTraversal, com.google.javascript.rhino.Node, com.google.javascript.rhino.Node)
indicates that it should be removed. |
(package private) void |
maybeRemoveReferenceToRemovedVariable(NodeTraversal t,
Node n,
Node parent)
Removes a reference if it is a reference to a removed variable.
|
(package private) boolean |
nameIncludesFieldNameToStrip(Node n) |
(package private) boolean |
qualifiedNameBeginsWithStripType(Node n)
Gets whether a qualified name begins with a strip name.
|
(package private) boolean |
qualifiedNameBeginsWithStripType(java.lang.String name)
Gets whether a qualified name begins with a strip name.
|
(package private) void |
removeVarDeclarationsByNameOrRvalue(NodeTraversal t,
Node n,
Node parent)
Removes declarations of any variables whose names are strip names or
whose whose r-values are static method calls on strip types.
|
(package private) void |
replaceHighestNestedCallWithNull(Node node,
Node parent)
Use a while loop to get up out of any nested calls.
|
(package private) void |
replaceWithEmpty(Node n,
Node parent)
Replaces a node with an EMPTY node.
|
(package private) void |
replaceWithNull(Node n,
Node parent)
Replaces a node with a NULL node.
|
void |
visit(NodeTraversal t,
Node n,
Node parent)
Visits a node in postorder (after its children have been visited).
|
shouldTraverse
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).
void removeVarDeclarationsByNameOrRvalue(NodeTraversal t, Node n, Node parent)
t
- The traversaln
- A VAR nodeparent
- n
's parentvoid maybeRemoveReferenceToRemovedVariable(NodeTraversal t, Node n, Node parent)
t
- The traversaln
- A NAME nodeparent
- n
's parentvoid replaceHighestNestedCallWithNull(Node node, Node parent)
void maybeEliminateAssignmentByLvalueName(NodeTraversal t, Node n, Node parent)
t
- The traversaln
- An ASSIGN nodeparent
- n
's parentvoid maybeEliminateExpressionByName(NodeTraversal t, Node n, Node parent)
t
- The traversaln
- An EXPR_RESULT nodeparent
- n
's parentvoid maybeRemoveCall(NodeTraversal t, Node n, Node parent)
isMethodOrCtorCallThatTriggersRemoval(com.google.javascript.jscomp.NodeTraversal, com.google.javascript.rhino.Node, com.google.javascript.rhino.Node)
indicates that it should be removed.t
- The traversaln
- A CALL nodeparent
- n
's parentvoid eliminateKeysWithStripNamesFromObjLit(NodeTraversal t, Node n)
t
- The traversaln
- An OBJLIT nodeboolean isCallWhoseReturnValueShouldBeStripped(@Nullable Node n)
n
- A node (typically a CALL node)boolean qualifiedNameBeginsWithStripType(Node n)
n
- A node (typically a NAME or GETPROP node)boolean qualifiedNameBeginsWithStripType(java.lang.String name)
name
- A qualified class nameboolean isReferenceToRemovedVar(NodeTraversal t, Node n)
t
- The traversaln
- A NAME nodeboolean isMethodOrCtorCallThatTriggersRemoval(NodeTraversal t, Node n, Node parent)
t
- The traversaln
- A CALL nodeboolean nameIncludesFieldNameToStrip(@Nullable Node n)
private boolean actsOnStripType(NodeTraversal t, Node callNode)
t
- The current traversalcallNode
- The CALL nodeboolean isStripName(java.lang.String name)
name
- A JavaScript identifiername
is a name that triggers removalvoid replaceWithNull(Node n, Node parent)
n
- A nodeparent
- n
's parent