Skip to content

Commit

Permalink
A few cleanups in preparation for fixing #878
Browse files Browse the repository at this point in the history
#878

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=152193092
  • Loading branch information
tbreisacher committed Apr 6, 2017
1 parent ffbe355 commit a618d06
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 11 deletions.
Expand Up @@ -28,7 +28,6 @@
import com.google.javascript.rhino.JSDocInfo;
import com.google.javascript.rhino.JSTypeExpression;
import com.google.javascript.rhino.Node;
import com.google.javascript.rhino.Token;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
Expand Down Expand Up @@ -408,7 +407,7 @@ private void visitImportNode(Node importNode) {
visitRequire(defaultImport.getString(), importNode);
}
Node namedImports = defaultImport.getNext();
if (namedImports.getToken() == Token.IMPORT_SPECS) {
if (namedImports.isImportSpecs()) {
for (Node importSpec : namedImports.children()) {
visitRequire(importSpec.getLastChild().getString(), importNode);
}
Expand Down
8 changes: 3 additions & 5 deletions src/com/google/javascript/jscomp/ProcessEs6Modules.java
Expand Up @@ -189,7 +189,7 @@ private void visitImport(NodeTraversal t, Node importDecl, Node parent) {
// Namespace imports' default export is the namespace itself.
String name = isNamespaceImport ? "" : "default";
importMap.put(child.getString(), new ModuleOriginalNamePair(moduleName, name));
} else if (child.getToken() == Token.IMPORT_SPECS) {
} else if (child.isImportSpecs()) {
for (Node grandChild : child.children()) {
String origName = grandChild.getFirstChild().getString();
if (grandChild.hasTwoChildren()) { // import {a as foo} from "mod"
Expand All @@ -205,9 +205,7 @@ private void visitImport(NodeTraversal t, Node importDecl, Node parent) {
} else {
// import * as ns from "mod"
Preconditions.checkState(
child.getToken() == Token.IMPORT_STAR,
"Expected an IMPORT_STAR node, but was: %s",
child);
child.isImportStar(), "Expected an IMPORT_STAR node, but was: %s", child);
// Namespace imports cannot be imported "as *".
if (isNamespaceImport) {
compiler.report(t.makeError(importDecl, NAMESPACE_IMPORT_CANNOT_USE_STAR,
Expand Down Expand Up @@ -279,7 +277,7 @@ private void visitExport(NodeTraversal t, Node export, Node parent) {
} else if (export.hasTwoChildren()) {
// export {x, y as z} from 'moduleIdentifier';
Node moduleIdentifier = export.getLastChild();
Node importNode = new Node(Token.IMPORT, moduleIdentifier.cloneNode());
Node importNode = IR.importNode(IR.empty(), IR.empty(), moduleIdentifier.cloneNode());
importNode.useSourceInfoFrom(export);
parent.addChildBefore(importNode, export);
visit(t, importNode, parent);
Expand Down
19 changes: 17 additions & 2 deletions src/com/google/javascript/rhino/IR.java
Expand Up @@ -53,6 +53,19 @@ public static Node empty() {
return new Node(Token.EMPTY);
}

public static Node importNode(Node name, Node importSpecs, Node moduleIdentifier) {
Preconditions.checkState(name.isName() || name.isEmpty(), name);
Preconditions.checkState(
importSpecs.isImportSpec() || importSpecs.isImportStar() || importSpecs.isEmpty(),
importSpecs);
Preconditions.checkState(moduleIdentifier.isString(), moduleIdentifier);
return new Node(Token.IMPORT, name, importSpecs, moduleIdentifier);
}

public static Node importStar(String name) {
return Node.newString(Token.IMPORT_STAR, name);
}

public static Node function(Node name, Node params, Node body) {
Preconditions.checkState(name.isName());
Preconditions.checkState(params.isParamList());
Expand Down Expand Up @@ -519,8 +532,10 @@ public static Node objectlit(Node ... propdefs) {
Node objectlit = new Node(Token.OBJECTLIT);
for (Node propdef : propdefs) {
Preconditions.checkState(
propdef.isStringKey() || propdef.isMemberFunctionDef() ||
propdef.isGetterDef() || propdef.isSetterDef());
propdef.isStringKey()
|| propdef.isMemberFunctionDef()
|| propdef.isGetterDef()
|| propdef.isSetterDef());
if (!propdef.isStringKey()) {
Preconditions.checkState(propdef.hasOneChild());
}
Expand Down
11 changes: 9 additions & 2 deletions src/com/google/javascript/rhino/Node.java
Expand Up @@ -2017,8 +2017,7 @@ private boolean matchesQualifiedName(String qname, int endIndex) {
case NAME:
case MEMBER_FUNCTION_DEF:
String name = getString();
return start == 0 && !name.isEmpty() &&
name.length() == endIndex && qname.startsWith(name);
return start == 0 && !name.isEmpty() && name.length() == endIndex && qname.startsWith(name);
case THIS:
return start == 0 && 4 == endIndex && qname.startsWith("this");
case SUPER:
Expand Down Expand Up @@ -3018,10 +3017,18 @@ public boolean isImport() {
return this.token == Token.IMPORT;
}

public boolean isImportStar() {
return this.token == Token.IMPORT_STAR;
}

public boolean isImportSpec() {
return this.token == Token.IMPORT_SPEC;
}

public boolean isImportSpecs() {
return this.token == Token.IMPORT_SPECS;
}

public boolean isIn() {
return this.token == Token.IN;
}
Expand Down

0 comments on commit a618d06

Please sign in to comment.