in scala/conversion/src/org/jetbrains/plugins/scala/conversion/visitors/SimplePrintVisitor.scala [36:122]
protected def visit(node: IntermediateNode): Unit = node match {
case m: MainConstruction => m.children.foreach(visit)
case t@TypeConstruction(inType) => visitType(t, inType)
case ParametrizedConstruction(inType, parts) => visitParametrizedType(inType, parts)
case ArrayConstruction(inType) => visitArrayType(inType)
case TypeParameters(data) => visitTypeParameters(data)
case TypeParameterConstruction(name, types) =>
visitTypeParameterConstruction(name, types)
case AnnotationConstruction(inAnnotation, attributes, name) =>
visitAnnotation(inAnnotation, attributes, name)
case BlockConstruction(statements) =>
visitBlockStatements(statements)
case c@ClassConstruction(name, primaryConstructor, bodyElements, modifiers, typeParams, initializers, classType, companion, extendsList) =>
visitClass(c, name, primaryConstructor, bodyElements,
modifiers, typeParams, initializers, classType, companion, extendsList)
case a@AnonymousClass(mType, args, body, extendsList) => visitAnonymousClass(a, mType, args, body, extendsList)
case e@Enum(name, modifiers, members) => visitEnum(e, name, modifiers, members)
case ArrayAccess(expression, idxExpression) => visitArrayAccess(expression, idxExpression)
case c@ClassCast(operand, castType, _) => visitCastType(c, operand, castType)
case ArrayInitializer(expressions: Seq[IntermediateNode]) => visitArrayInitializer(expressions)
case BinaryExpressionConstruction(firstPart, secondPart, operation: String, inExpression: Boolean) =>
visitBinary(firstPart, secondPart, operation, inExpression)
case ClassObjectAccess(expression) => visitClassObjAccess(expression)
case InstanceOfConstruction(operand, mtype) => visitInstanceOf(operand, mtype)
case QualifiedExpression(qualifier, identifier) => visitQualifiedExpression(qualifier, identifier)
case MethodCallExpression(method, args, withSideEffects) => visitMethodCall(method, args, withSideEffects)
case ExpressionList(data) => visitExpressionList(data)
case ThisExpression(value) => visitWithExtraWord(value, "this")
case SuperExpression(value) => visitWithExtraWord(value, "super")
case LiteralExpression(literal) => printer.append(literal)
case NameIdentifier(name) => printer.append(escapeKeyword(name))
case ParenthesizedExpression(value) => visitParenthesizedExpression(value)
case NewExpression(mtype, arrayInitializer, arrayDimension) =>
visitNewExpression(mtype, arrayInitializer, arrayDimension)
case AnonymousClassExpression(anonymousClass) => visitAnonymousClassExpression(anonymousClass)
case FunctionalExpression(params, body) => visitFunctionalExpression(params, body)
case PolyadicExpression(args, operation) => visitPoliadic(args, operation)
case RangeExpression(from, to, inclusive, descending) => visitRange(from, to, inclusive, descending)
case PrefixExpression(operand, signType, canBeSimplified) => visitPrefixPostfix(operand, signType, canBeSimplified)
case PostfixExpression(operand, signType, canBeSimplified) =>
visitPrefixPostfix(operand, signType, canBeSimplified, isPostfix = true)
case FieldConstruction(modifiers, name, ftype, isVar, initialaizer) =>
visitVariable(modifiers, name, ftype, isVar, initialaizer)
case LocalVariable(modifiers, name, ftype, isVar, initialaizer) =>
visitVariable(modifiers, name, ftype, isVar, initialaizer)
case ConstructorSimply(_, typeParams, params, body) =>
visitConstructor(typeParams, params, body)
case PrimaryConstructor(params, _, _, modifiers) =>
visitPrimaryConstructor(params, modifiers)
case MethodConstruction(modifiers, name, typeParams, params, body, retType) =>
visitMethod(modifiers, name, typeParams, params, body, retType)
case m@ModifiersConstruction(annotations, modifiers) =>
visitModifiers(m, annotations, modifiers)
case SimpleModifier(mtype: ModifierType) => visitSimpleModifier(mtype)
case ModifierWithExpression(mtype, value) => visitModifierWithExpr(mtype, value)
case ParameterConstruction(modifiers, name, scCompType, isVar, isArray) =>
visitParameters(modifiers, name, scCompType, isVar, isArray)
case ParameterListConstruction(list) => visitParameterList(list)
//statements
case r@JavaCodeReferenceStatement(qualifier, parameterList, name) =>
visitJavaCodeRef(r, qualifier, parameterList, name)
case IfStatement(condition, thenBranch, elseBranch) => visitIfStatement(condition, thenBranch, elseBranch)
case r@ReturnStatement(value) =>
visitWithExtraWord(Some(value), if (r.canDropReturnKeyword) "" else "return ")
case ThrowStatement(value) => visitWithExtraWord(Some(value), "throw ")
case AssertStatement(condition, description) => visitAssert(condition, description)
case ImportStatement(importValue, onDemand) => visitImportStatement(importValue, onDemand)
case ImportStatementList(data) => visitImportStatementList(data)
case PackageStatement(value) => visitWithExtraWord(Some(value), "package ")
case ForeachStatement(iterParamName, iteratedValue, body, isJavaCollection) =>
visitForEach(iterParamName, iteratedValue, body, isJavaCollection)
case w@WhileStatement(initialization, condition, body, update, whileType) =>
visitWhile(w, initialization, condition, body, update, whileType)
case TryCatchStatement(resourcesList, tryBlock, catchStatements, finallyStatements, arrow) =>
visitTryCatch(resourcesList, tryBlock, catchStatements, finallyStatements, arrow)
case sb: SwitchBlock =>
visitSwitchBlock(sb)
case SwitchLabelStatement(caseValues, guardExpression, arrow, body) =>
visitSwitchLabelStatement(caseValues, guardExpression, arrow, body)
case SynchronizedStatement(lock, body) =>
visitSynchronizedStatement(lock, body)
case ExpressionListStatement(exprs) => visitExpressionListStatement(exprs)
case EnumConstruction(name) => visit(name)
case NotSupported(n, msg) => visitNotSupported(n, msg)
case EmptyConstruction() =>
case EmptyTypeNode() =>
}