Node processUnionType(UnionTypeTree tree) { ImmutableList.Builder<TypeDeclarationNode> options = ImmutableList.builder(); for (ParseTree option : tree.types) { options.add((TypeDeclarationNode) transform(option)); } return cloneProps(unionType(options.build())); }
Node processUnionType(UnionTypeTree tree) { ImmutableList.Builder<TypeDeclarationNode> options = ImmutableList.builder(); for (ParseTree option : tree.types) { options.add((TypeDeclarationNode) transform(option)); } return cloneProps(unionType(options.build())); }
Node processParameterizedType(ParameterizedTypeTree tree) { ImmutableList.Builder<TypeDeclarationNode> arguments = ImmutableList.builder(); for (ParseTree arg : tree.typeArguments) { arguments.add((TypeDeclarationNode) transform(arg)); } TypeDeclarationNode typeName = (TypeDeclarationNode) transform(tree.typeName); return cloneProps(parameterizedType(typeName, arguments.build())); }
Node processParameterizedType(ParameterizedTypeTree tree) { ImmutableList.Builder<TypeDeclarationNode> arguments = ImmutableList.builder(); for (ParseTree arg : tree.typeArguments) { arguments.add((TypeDeclarationNode) transform(arg)); } TypeDeclarationNode typeName = (TypeDeclarationNode) transform(tree.typeName); return cloneProps(parameterizedType(typeName, arguments.build())); }
Node processTypeQuery(TypeQueryTree tree) { Iterator<String> segmentsIt = tree.segments.iterator(); Node node = newStringNode(Token.NAME, segmentsIt.next()); while (segmentsIt.hasNext()) { node = IR.getprop(node, IR.string(segmentsIt.next())); } return cloneProps(new TypeDeclarationNode(Token.TYPEOF, node)); }
Node processTypeName(TypeNameTree tree) { Node typeNode; if (tree.segments.size() == 1) { String typeName = tree.segments.get(0); if (typeName.equals("any")) typeNode = cloneProps(anyType()); else if (typeName.equals("number")) typeNode = cloneProps(numberType()); else if (typeName.equals("boolean")) typeNode = cloneProps(booleanType()); else if (typeName.equals("string")) typeNode = cloneProps(stringType()); else if (typeName.equals("void")) typeNode = cloneProps(voidType()); else if (typeName.equals("undefined")) typeNode = cloneProps(undefinedType()); else typeNode = cloneProps(namedType(tree.segments)); } else { typeNode = cloneProps(namedType(tree.segments)); } setSourceInfo(typeNode, tree); return typeNode; }
switch (typeName) { case "any": typeNode = cloneProps(anyType()); break; case "number": typeNode = cloneProps(numberType()); break; case "boolean": typeNode = cloneProps(booleanType()); break; case "string": typeNode = cloneProps(stringType()); break; case "void": typeNode = cloneProps(voidType()); break; case "undefined": typeNode = cloneProps(undefinedType()); break; default: typeNode = cloneProps(namedType(tree.segments)); break; typeNode = cloneProps(namedType(tree.segments));
Node processTypeQuery(TypeQueryTree tree) { Iterator<String> segmentsIt = tree.segments.iterator(); Node node = newStringNode(Token.NAME, segmentsIt.next()); while (segmentsIt.hasNext()) { node = IR.getprop(node, IR.string(segmentsIt.next())); } return cloneProps(new TypeDeclarationNode(Token.TYPEOF, node)); }
Node processArrayType(ArrayTypeTree tree) { return cloneProps(arrayType(transform(tree.elementType))); }
Node processArrayType(ArrayTypeTree tree) { return cloneProps(arrayType(transform(tree.elementType))); }
Node processRecordType(RecordTypeTree tree) { TypeDeclarationNode node = new TypeDeclarationNode(Token.RECORD_TYPE); for (ParseTree child : tree.members) { node.addChildToBack(transform(child)); } return cloneProps(node); }
Node processRecordType(RecordTypeTree tree) { TypeDeclarationNode node = new TypeDeclarationNode(Token.RECORD_TYPE); for (ParseTree child : tree.members) { node.addChildToBack(transform(child)); } return cloneProps(node); }
/** * Clone the properties from the template node recursively, skips nodes that * have properties already. */ Node cloneProps(Node n) { if (!n.hasProps()) { n.clonePropsFrom(templateNode); } for (Node child : n.children()) { cloneProps(child); } return n; } }
/** * Clone the properties from the template node recursively, skips nodes that * have properties already. */ Node cloneProps(Node n) { if (!n.hasProps()) { n.clonePropsFrom(templateNode); } for (Node child : n.children()) { cloneProps(child); } return n; } }
private void maybeProcessType(Node typeTarget, ParseTree typeTree) { if (typeTree != null) { recordJsDoc(typeTree.location, typeTarget.getJSDocInfo()); Node typeExpression = convertTypeTree(typeTree); if (typeExpression.isString()) { typeExpression = cloneProps( new TypeDeclarationNode(Token.STRING, typeExpression.getString())); } typeTarget.setDeclaredTypeExpression((TypeDeclarationNode) typeExpression); } }
return cloneProps(functionType(transform(tree.returnType), requiredParams, optionalParams, restName, restType));
private void maybeProcessType(Node typeTarget, ParseTree typeTree) { if (typeTree != null) { recordJsDoc(typeTree.location, typeTarget.getJSDocInfo()); Node typeExpression = convertTypeTree(typeTree); if (typeExpression.isString()) { typeExpression = cloneProps( new TypeDeclarationNode(Token.STRING, typeExpression.getString())); } typeTarget.setDeclaredTypeExpression((TypeDeclarationNode) typeExpression); } }
return cloneProps(functionType(transform(tree.returnType), requiredParams, optionalParams, restName, restType));