diff --git a/src/com/google/javascript/jscomp/DefinitionsRemover.java b/src/com/google/javascript/jscomp/DefinitionsRemover.java index 2d7f19df05c..8ef318d2b47 100644 --- a/src/com/google/javascript/jscomp/DefinitionsRemover.java +++ b/src/com/google/javascript/jscomp/DefinitionsRemover.java @@ -25,6 +25,7 @@ import com.google.javascript.rhino.IR; import com.google.javascript.rhino.Node; import com.google.javascript.rhino.Token; +import javax.annotation.Nullable; /** * Models an assignment that defines a variable and the removal of it. @@ -157,6 +158,31 @@ public void remove(AbstractCompiler compiler) { */ protected abstract void performRemove(AbstractCompiler compiler); + /** + * Extract a name from a node. In the case of GETPROP nodes, replace the namespace or object + * expression with "this" for simplicity and correctness at the expense of inefficiencies due to + * higher chances of name collisions. + * + *
TODO(user) revisit. it would be helpful to at least use fully qualified names in the case
+ * of namespaces. Might not matter as much if this pass runs after {@link CollapseProperties}.
+ */
+ @Nullable
+ public static String getSimplifiedName(Node node) {
+ if (node.isName()) {
+ String name = node.getString();
+ if (name != null && !name.isEmpty()) {
+ return name;
+ } else {
+ return null;
+ }
+ } else if (node.isGetProp()) {
+ return "this." + node.getLastChild().getString();
+ } else if (node.isMemberFunctionDef()) {
+ return "this." + node.getString();
+ }
+ return null;
+ }
+
public String getSimplifiedName() {
return simplifiedName;
}
@@ -201,7 +227,7 @@ abstract static class IncompleteDefinition extends Definition {
private final Node lValue;
IncompleteDefinition(Node lValue, boolean inExterns) {
- super(inExterns, NameBasedDefinitionProvider.getSimplifiedName(lValue));
+ super(inExterns, Definition.getSimplifiedName(lValue));
checkNotNull(lValue);
Preconditions.checkArgument(
@@ -280,7 +306,7 @@ abstract static class FunctionDefinition extends Definition {
protected final Node function;
FunctionDefinition(Node node, boolean inExterns) {
- this(node, inExterns, NameBasedDefinitionProvider.getSimplifiedName(node.getFirstChild()));
+ this(node, inExterns, Definition.getSimplifiedName(node.getFirstChild()));
}
FunctionDefinition(Node node, boolean inExterns, String name) {
@@ -344,7 +370,7 @@ static final class MemberFunctionDefinition extends FunctionDefinition {
protected final Node memberFunctionDef;
MemberFunctionDefinition(Node node, boolean inExterns) {
- super(node.getFirstChild(), inExterns, NameBasedDefinitionProvider.getSimplifiedName(node));
+ super(node.getFirstChild(), inExterns, Definition.getSimplifiedName(node));
checkState(node.isMemberFunctionDef(), node);
memberFunctionDef = node;
}
@@ -369,7 +395,7 @@ abstract static class ClassDefinition extends Definition {
protected final Node c;
ClassDefinition(Node node, boolean inExterns) {
- super(inExterns, NameBasedDefinitionProvider.getSimplifiedName(node.getFirstChild()));
+ super(inExterns, Definition.getSimplifiedName(node.getFirstChild()));
Preconditions.checkArgument(node.isClass());
c = node;
}
@@ -426,7 +452,7 @@ static final class AssignmentDefinition extends Definition {
private final Node assignment;
AssignmentDefinition(Node node, boolean inExterns) {
- super(inExterns, NameBasedDefinitionProvider.getSimplifiedName(node.getFirstChild()));
+ super(inExterns, Definition.getSimplifiedName(node.getFirstChild()));
checkArgument(node.isAssign());
assignment = node;
}
@@ -479,7 +505,7 @@ static final class ObjectLiteralPropertyDefinition extends Definition {
private final Node value;
ObjectLiteralPropertyDefinition(Node name, Node value, boolean isExtern) {
- super(isExtern, NameBasedDefinitionProvider.getSimplifiedName(getLValue(name)));
+ super(isExtern, Definition.getSimplifiedName(getLValue(name)));
this.name = name;
this.value = value;
@@ -528,7 +554,7 @@ public Node getRValue() {
static final class VarDefinition extends Definition {
private final Node name;
VarDefinition(Node node, boolean inExterns) {
- super(inExterns, NameBasedDefinitionProvider.getSimplifiedName(node));
+ super(inExterns, Definition.getSimplifiedName(node));
checkArgument(NodeUtil.isNameDeclaration(node.getParent()) && node.isName());
Preconditions.checkArgument(inExterns || node.hasChildren(),
"VAR Declaration of %s must be assigned a value.", node.getString());
diff --git a/src/com/google/javascript/jscomp/NameBasedDefinitionProvider.java b/src/com/google/javascript/jscomp/NameBasedDefinitionProvider.java
index ddee8a12d95..fc0c5e6f872 100644
--- a/src/com/google/javascript/jscomp/NameBasedDefinitionProvider.java
+++ b/src/com/google/javascript/jscomp/NameBasedDefinitionProvider.java
@@ -22,7 +22,6 @@
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
@@ -36,10 +35,8 @@
import com.google.javascript.rhino.Node;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
import java.util.Map;
import java.util.Set;
-import javax.annotation.Nullable;
/**
* Simple name-based definition gatherer.
@@ -91,20 +88,6 @@ public void process(Node externs, Node source) {
NodeTraversal.traverse(compiler, source, new DefinitionGatheringCallback(false));
}
- public void rebuildScopeRoots(List TODO(user) revisit. it would be helpful to at least use fully qualified names in the case of
- * namespaces. Might not matter as much if this pass runs after {@link CollapseProperties}.
- */
- @Nullable
- public static String getSimplifiedName(Node node) {
- if (node.isName()) {
- String name = node.getString();
- if (name != null && !name.isEmpty()) {
- return name;
- } else {
- return null;
- }
- } else if (node.isGetProp()) {
- return "this." + node.getLastChild().getString();
- } else if (node.isMemberFunctionDef()) {
- return "this." + node.getString();
- }
- return null;
- }
-
/**
* Returns the collection of definition sites found during traversal.
*
@@ -331,10 +289,4 @@ public Collection