void setSourceInfo(Node irNode, ParseTree node) { if (irNode.getLineno() == -1) { setSourceInfo(irNode, node.location.start, node.location.end); } }
Node transformLabelName(IdentifierToken token) { Node label = newStringNode(Token.LABEL_NAME, token.value); setSourceInfo(label, token); return label; }
Node processString(LiteralToken token) { checkArgument(token.type == TokenType.STRING); Node node = newStringNode(Token.STRING, normalizeString(token, false)); setSourceInfo(node, token); return node; }
Node transformOrEmpty(ParseTree tree, ParseTree parent) { if (tree == null) { Node n = newNode(Token.EMPTY); setSourceInfo(n, parent); return n; } return transform(tree); }
Node transformOrEmpty(IdentifierToken token, ParseTree parent) { if (token == null) { Node n = newNode(Token.EMPTY); setSourceInfo(n, parent); return n; } return processName(token); }
Node transformOrEmpty(IdentifierToken token, ParseTree parent) { if (token == null) { Node n = newNode(Token.EMPTY); setSourceInfo(n, parent); return n; } return processName(token); }
Node transformOrEmpty(ParseTree tree, ParseTree parent) { if (tree == null) { Node n = newNode(Token.EMPTY); setSourceInfo(n, parent); return n; } return transform(tree); }
Node processRestParameter(RestParameterTree tree) { maybeWarnEs6Feature(tree, Feature.REST_PARAMETERS); Node name = newStringNode(Token.NAME, tree.identifier.value); setSourceInfo(name, tree.identifier); return newNode(Token.REST, name); }
Node processAssignmentRestElement(AssignmentRestElementTree tree) { maybeWarnForFeature(tree, Feature.ARRAY_PATTERN_REST); Node restNode = newNode(Token.REST, transformNodeWithInlineJsDoc(tree.assignmentTarget)); setSourceInfo(restNode, tree); return restNode; }
Node processNumberLiteral(LiteralExpressionTree literalNode) { double value = normalizeNumber(literalNode.literalToken.asLiteral()); Node number = newNumberNode(value); setSourceInfo(number, literalNode); return number; }
Node processNameWithInlineJSDoc(IdentifierToken identifierToken) { JSDocInfo info = handleInlineJsDoc(identifierToken); maybeWarnReservedKeyword(identifierToken); Node node = newStringNode(Token.NAME, identifierToken.value); if (info != null) { node.setJSDocInfo(info); } setSourceInfo(node, identifierToken); return node; }
Node transform(ParseTree tree) { JSDocInfo info = handleJsDoc(tree); Node node = transformDispatcher.process(tree); if (info != null) { node = maybeInjectCastNode(tree, info, node); node.setJSDocInfo(info); } setSourceInfo(node, tree); return node; }
Node transformNumberAsString(LiteralToken token) { double value = normalizeNumber(token); Node irNode = newStringNode(DToA.numberToString(value)); JSDocInfo jsDocInfo = handleJsDoc(token); if (jsDocInfo != null) { irNode.setJSDocInfo(jsDocInfo); } setSourceInfo(irNode, token); return irNode; }
Node transformNumberAsString(LiteralToken token) { double value = normalizeNumber(token); Node irNode = newStringNode(DToA.numberToString(value)); JSDocInfo jsDocInfo = handleJsDoc(token); if (jsDocInfo != null) { irNode.setJSDocInfo(jsDocInfo); } setSourceInfo(irNode, token); return irNode; }
Node processTemplateLiteral(TemplateLiteralExpressionTree tree) { maybeWarnForFeature(tree, Feature.TEMPLATE_LITERALS); Node templateLitNode = newNode(Token.TEMPLATELIT); setSourceInfo(templateLitNode, tree); Node node = tree.operand == null ? templateLitNode : newNode(Token.TAGGED_TEMPLATELIT, transform(tree.operand), templateLitNode); for (ParseTree child : tree.elements) { templateLitNode.addChildToBack(transform(child)); } return node; }
Node processTemplateLiteral(TemplateLiteralExpressionTree tree) { maybeWarnEs6Feature(tree, Feature.TEMPLATE_LITERALS); Node templateLitNode = newNode(Token.TEMPLATELIT); setSourceInfo(templateLitNode, tree); Node node = tree.operand == null ? templateLitNode : newNode(Token.TAGGED_TEMPLATELIT, transform(tree.operand), templateLitNode); for (ParseTree child : tree.elements) { templateLitNode.addChildToBack(transform(child)); } return node; }
Node processNamespaceDeclaration(NamespaceDeclarationTree tree) { maybeWarnTypeSyntax(tree, Feature.NAMESPACE_DECLARATION); Node name = processNamespaceName(tree.name); Node body = newNode(Token.NAMESPACE_ELEMENTS); setSourceInfo(body, tree); for (ParseTree child : tree.elements) { body.addChildToBack(transform(child)); } return newNode(Token.NAMESPACE, name, body); }
Node processSwitchDefault(DefaultClauseTree caseNode) { Node node = newNode(Token.DEFAULT_CASE); Node block = newNode(Token.BLOCK); block.setIsAddedBlock(true); setSourceInfo(block, caseNode); if (caseNode.statements != null) { for (ParseTree child : caseNode.statements) { block.addChildToBack(transform(child)); } } node.addChildToBack(block); return node; }
Node processNamespaceDeclaration(NamespaceDeclarationTree tree) { maybeWarnTypeSyntax(tree, Feature.NAMESPACE_DECLARATION); Node name = processNamespaceName(tree.name); Node body = newNode(Token.NAMESPACE_ELEMENTS); setSourceInfo(body, tree); for (ParseTree child : tree.elements) { body.addChildToBack(transform(child)); } return newNode(Token.NAMESPACE, name, body); }
Node processInterfaceDeclaration(InterfaceDeclarationTree tree) { maybeWarnTypeSyntax(tree, Feature.INTERFACE); Node name = processName(tree.name); maybeProcessGenerics(name, tree.generics); Node superInterfaces = transformListOrEmpty(Token.INTERFACE_EXTENDS, tree.superInterfaces); Node body = newNode(Token.INTERFACE_MEMBERS); setSourceInfo(body, tree); for (ParseTree child : tree.elements) { body.addChildToBack(transform(child)); } return newNode(Token.INTERFACE, name, superInterfaces, body); }