Node processClassDeclaration(ClassDeclarationTree tree) { maybeWarnForFeature(tree, Feature.CLASSES); Node name = transformOrEmpty(tree.name, tree); maybeProcessGenerics(name, tree.generics); Node superClass = transformOrEmpty(tree.superClass, tree); if (!superClass.isEmpty()) { features = features.with(Feature.CLASS_EXTENDS);
Node processClassDeclaration(ClassDeclarationTree tree) { maybeWarnEs6Feature(tree, Feature.CLASSES); Node name = transformOrEmpty(tree.name, tree); maybeProcessGenerics(name, tree.generics); Node superClass = transformOrEmpty(tree.superClass, tree); Node interfaces = transformListOrEmpty(Token.IMPLEMENTS, tree.interfaces); Node body = newNode(Token.CLASS_MEMBERS); setSourceInfo(body, tree); for (ParseTree child : tree.elements) { if (child.type == ParseTreeType.MEMBER_VARIABLE || child.type == ParseTreeType.COMPUTED_PROPERTY_MEMBER_VARIABLE) { maybeWarnTypeSyntax(child, Feature.MEMBER_VARIABLE_IN_CLASS); } body.addChildToBack(transform(child)); } Node classNode = newNode(Token.CLASS, name, superClass, body); if (!interfaces.isEmpty()) { maybeWarnTypeSyntax(tree, Feature.IMPLEMENTS); classNode.putProp(Node.IMPLEMENTS, interfaces); } return classNode; }
Node processImportDecl(ImportDeclarationTree tree) { maybeWarnForFeature(tree, Feature.MODULES); Node firstChild = transformOrEmpty(tree.defaultBindingIdentifier, tree); Node secondChild; if (tree.nameSpaceImportIdentifier == null) { secondChild = transformListOrEmpty(Token.IMPORT_SPECS, tree.importSpecifierList); // Currently source info is "import {foo} from '...';" expression. If needed this should be // changed to use only "{foo}" part. setSourceInfo(secondChild, tree); } else { secondChild = newStringNode(Token.IMPORT_STAR, tree.nameSpaceImportIdentifier.value); setSourceInfo(secondChild, tree.nameSpaceImportIdentifier); } Node thirdChild = processString(tree.moduleSpecifier); return newNode(Token.IMPORT, firstChild, secondChild, thirdChild); }
Node processImportDecl(ImportDeclarationTree tree) { maybeWarnEs6Feature(tree, Feature.MODULES); Node firstChild = transformOrEmpty(tree.defaultBindingIdentifier, tree); Node secondChild = (tree.nameSpaceImportIdentifier != null) ? newStringNode(Token.IMPORT_STAR, tree.nameSpaceImportIdentifier.value) : transformListOrEmpty(Token.IMPORT_SPECS, tree.importSpecifierList); setSourceInfo(secondChild, tree); Node thirdChild = processString(tree.moduleSpecifier); return newNode(Token.IMPORT, firstChild, secondChild, thirdChild); }
Node processForLoop(ForStatementTree loopNode) { Node node = newNode( Token.FOR, transformOrEmpty(loopNode.initializer, loopNode), transformOrEmpty(loopNode.condition, loopNode), transformOrEmpty(loopNode.increment, loopNode)); node.addChildToBack(transformBlock(loopNode.body)); return node; }
Node processForLoop(ForStatementTree loopNode) { Node node = newNode( Token.FOR, transformOrEmpty(loopNode.initializer, loopNode), transformOrEmpty(loopNode.condition, loopNode), transformOrEmpty(loopNode.increment, loopNode)); node.addChildToBack(transformBlock(loopNode.body)); return node; }