New J2K: While, switch, conditional expression, moved if.
This commit is contained in:
@@ -55,6 +55,9 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
||||
is PsiInstanceOfExpression -> toJK()
|
||||
is PsiThisExpression -> JKThisExpressionImpl()
|
||||
is PsiSuperExpression -> JKSuperExpressionImpl()
|
||||
is PsiConditionalExpression -> JKIfElseExpressionImpl(
|
||||
condition.toJK(), JKExpressionStatementImpl(thenExpression.toJK()), JKExpressionStatementImpl(elseExpression.toJK())
|
||||
)
|
||||
else -> {
|
||||
throw RuntimeException("Not supported: ${this::class}")
|
||||
}
|
||||
@@ -300,14 +303,25 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
||||
is PsiDeclarationStatement -> JKDeclarationStatementImpl(declaredElements.toJK())
|
||||
is PsiAssertStatement -> JKJavaAssertStatementImpl(with(expressionTreeMapper) { assertCondition.toJK() },
|
||||
with(expressionTreeMapper) { assertDescription.toJK() })
|
||||
is PsiIfStatement -> if (elseElement == null)
|
||||
JKJavaIfStatementImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK())
|
||||
else
|
||||
JKJavaIfElseStatementImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK(), elseBranch.toJK())
|
||||
is PsiIfStatement -> JKExpressionStatementImpl(
|
||||
if (elseElement == null)
|
||||
JKIfExpressionImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK())
|
||||
else
|
||||
JKIfElseExpressionImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK(), elseBranch.toJK())
|
||||
)
|
||||
is PsiForStatement -> JKJavaForLoopStatementImpl(
|
||||
initialization.toJK(), with(expressionTreeMapper) { condition.toJK() }, update.toJK(), body.toJK()
|
||||
)
|
||||
is PsiBlockStatement -> JKBlockStatementImpl(codeBlock.toJK())
|
||||
is PsiWhileStatement -> JKWhileStatementImpl(with(expressionTreeMapper) { condition.toJK() }, body.toJK())
|
||||
is PsiDoWhileStatement -> JKDoWhileStatementImpl(body.toJK(), with(expressionTreeMapper) { condition.toJK() })
|
||||
is PsiSwitchStatement -> JKSwitchStatementImpl(with(expressionTreeMapper) { expression.toJK() }, body?.toJK() ?: TODO())
|
||||
is PsiSwitchLabelStatement -> if (isDefaultCase) JKSwitchDefaultLabelStatementImpl() else
|
||||
JKSwitchLabelStatementImpl(with(expressionTreeMapper) { caseValue.toJK() })
|
||||
is PsiBreakStatement -> {
|
||||
labelIdentifier?.also { TODO("Label break") }
|
||||
JKBreakStatementImpl()
|
||||
}
|
||||
else -> TODO("for ${this::class}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,22 +162,6 @@ class JKJavaAssertStatementImpl(condition: JKExpression, description: JKExpressi
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaAssertStatement(this, data)
|
||||
}
|
||||
|
||||
class JKJavaIfStatementImpl(condition: JKExpression, thenBranch: JKStatement) : JKJavaIfStatement, JKBranchElementBase() {
|
||||
override var thenBranch by child(thenBranch)
|
||||
override var condition by child(condition)
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaIfStatement(this, data)
|
||||
}
|
||||
|
||||
class JKJavaIfElseStatementImpl(condition: JKExpression, thenBranch: JKStatement, elseBranch: JKStatement) : JKJavaIfElseStatement,
|
||||
JKBranchElementBase() {
|
||||
override var elseBranch by child(elseBranch)
|
||||
override var thenBranch by child(thenBranch)
|
||||
override var condition by child(condition)
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaIfElseStatement(this, data)
|
||||
}
|
||||
|
||||
class JKJavaForLoopStatementImpl(initializer: JKStatement, condition: JKExpression, updater: JKStatement, body: JKStatement) :
|
||||
JKJavaForLoopStatement, JKBranchElementBase() {
|
||||
override var body by child(body)
|
||||
|
||||
@@ -208,4 +208,51 @@ class JKThisExpressionImpl : JKThisExpression, JKElementBase() {
|
||||
|
||||
class JKSuperExpressionImpl : JKSuperExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitSuperExpression(this, data)
|
||||
}
|
||||
|
||||
class JKWhileStatementImpl(condition: JKExpression, body: JKStatement) : JKWhileStatement, JKBranchElementBase() {
|
||||
override var condition by child(condition)
|
||||
override var body by child(body)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitWhileStatement(this, data)
|
||||
}
|
||||
|
||||
class JKDoWhileStatementImpl(body: JKStatement, condition: JKExpression) : JKDoWhileStatement, JKBranchElementBase() {
|
||||
override var condition by child(condition)
|
||||
override var body by child(body)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitDoWhileStatement(this, data)
|
||||
}
|
||||
|
||||
class JKSwitchStatementImpl(expression: JKExpression, block: JKBlock) : JKSwitchStatement, JKBranchElementBase() {
|
||||
override var block by child(block)
|
||||
override var expression by child(expression)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitSwitchStatement(this, data)
|
||||
}
|
||||
|
||||
class JKSwitchLabelStatementImpl(expression: JKExpression) : JKSwitchLabelStatement, JKBranchElementBase() {
|
||||
override var expression by child(expression)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitSwitchLabelStatement(this, data)
|
||||
}
|
||||
|
||||
class JKSwitchDefaultLabelStatementImpl : JKSwitchDefaultLabelStatement, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitSwitchDefaultLabelStatement(this, data)
|
||||
}
|
||||
|
||||
class JKBreakStatementImpl : JKBreakStatement, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitBreakStatement(this, data)
|
||||
}
|
||||
|
||||
class JKIfExpressionImpl(condition: JKExpression, thenBranch: JKStatement) : JKIfExpression, JKBranchElementBase() {
|
||||
override var thenBranch by child(thenBranch)
|
||||
override var condition by child(condition)
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitIfExpression(this, data)
|
||||
}
|
||||
|
||||
class JKIfElseExpressionImpl(condition: JKExpression, thenBranch: JKStatement, elseBranch: JKStatement) : JKIfElseExpression,
|
||||
JKBranchElementBase() {
|
||||
override var elseBranch by child(elseBranch)
|
||||
override var thenBranch by child(thenBranch)
|
||||
override var condition by child(condition)
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitIfElseExpression(this, data)
|
||||
}
|
||||
@@ -78,15 +78,6 @@ interface JKJavaAssertStatement : JKStatement {
|
||||
val description: JKExpression
|
||||
}
|
||||
|
||||
interface JKJavaIfStatement : JKStatement {
|
||||
var condition: JKExpression
|
||||
var thenBranch: JKStatement
|
||||
}
|
||||
|
||||
interface JKJavaIfElseStatement : JKJavaIfStatement {
|
||||
var elseBranch: JKStatement
|
||||
}
|
||||
|
||||
interface JKJavaForLoopStatement : JKLoopStatement {
|
||||
var initializer: JKStatement
|
||||
var condition: JKExpression
|
||||
|
||||
@@ -167,3 +167,33 @@ interface JKBlockStatement : JKStatement {
|
||||
interface JKThisExpression : JKExpression
|
||||
|
||||
interface JKSuperExpression : JKExpression
|
||||
|
||||
interface JKWhileStatement : JKLoopStatement {
|
||||
var condition: JKExpression
|
||||
}
|
||||
|
||||
interface JKDoWhileStatement : JKLoopStatement {
|
||||
var condition: JKExpression
|
||||
}
|
||||
|
||||
interface JKSwitchStatement : JKStatement {
|
||||
var expression: JKExpression
|
||||
var block: JKBlock
|
||||
}
|
||||
|
||||
interface JKSwitchLabelStatement : JKStatement {
|
||||
var expression: JKExpression
|
||||
}
|
||||
|
||||
interface JKSwitchDefaultLabelStatement : JKStatement
|
||||
|
||||
interface JKBreakStatement : JKStatement
|
||||
|
||||
interface JKIfExpression : JKExpression {
|
||||
var condition: JKExpression
|
||||
var thenBranch: JKStatement
|
||||
}
|
||||
|
||||
interface JKIfElseExpression : JKIfExpression {
|
||||
var elseBranch: JKStatement
|
||||
}
|
||||
@@ -40,12 +40,21 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitBlockStatement(blockStatement: JKBlockStatement, data: D): R = visitStatement(blockStatement, data)
|
||||
fun visitThisExpression(thisExpression: JKThisExpression, data: D): R = visitExpression(thisExpression, data)
|
||||
fun visitSuperExpression(superExpression: JKSuperExpression, data: D): R = visitExpression(superExpression, data)
|
||||
fun visitWhileStatement(whileStatement: JKWhileStatement, data: D): R = visitLoopStatement(whileStatement, data)
|
||||
fun visitDoWhileStatement(doWhileStatement: JKDoWhileStatement, data: D): R = visitLoopStatement(doWhileStatement, data)
|
||||
fun visitSwitchStatement(switchStatement: JKSwitchStatement, data: D): R = visitStatement(switchStatement, data)
|
||||
fun visitSwitchLabelStatement(switchLabelStatement: JKSwitchLabelStatement, data: D): R = visitStatement(switchLabelStatement, data)
|
||||
fun visitSwitchDefaultLabelStatement(switchDefaultLabelStatement: JKSwitchDefaultLabelStatement, data: D): R = visitStatement(switchDefaultLabelStatement, data)
|
||||
fun visitBreakStatement(breakStatement: JKBreakStatement, data: D): R = visitStatement(breakStatement, data)
|
||||
fun visitIfExpression(ifExpression: JKIfExpression, data: D): R = visitExpression(ifExpression, data)
|
||||
fun visitIfElseExpression(ifElseExpression: JKIfElseExpression, data: D): R = visitIfExpression(ifElseExpression, data)
|
||||
fun visitJavaField(javaField: JKJavaField, data: D): R = visitField(javaField, data)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
|
||||
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): R = visitExpression(javaAssignmentExpression, data)
|
||||
fun visitJavaMethodCallExpression(javaMethodCallExpression: JKJavaMethodCallExpression, data: D): R = visitMethodCallExpression(javaMethodCallExpression, data)
|
||||
fun visitJavaFieldAccessExpression(javaFieldAccessExpression: JKJavaFieldAccessExpression, data: D): R = visitFieldAccessExpression(javaFieldAccessExpression, data)
|
||||
fun visitJavaNewExpression(javaNewExpression: JKJavaNewExpression, data: D): R = visitExpression(javaNewExpression, data)
|
||||
fun visitJavaDefaultNewExpression(javaDefaultNewExpression: JKJavaDefaultNewExpression, data: D): R = visitExpression(javaDefaultNewExpression, data)
|
||||
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): R = visitAccessModifier(javaAccessModifier, data)
|
||||
fun visitJavaModifier(javaModifier: JKJavaModifier, data: D): R = visitModifier(javaModifier, data)
|
||||
fun visitJavaNewEmptyArray(javaNewEmptyArray: JKJavaNewEmptyArray, data: D): R = visitExpression(javaNewEmptyArray, data)
|
||||
@@ -53,8 +62,6 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitJavaLiteralExpression(javaLiteralExpression: JKJavaLiteralExpression, data: D): R = visitLiteralExpression(javaLiteralExpression, data)
|
||||
fun visitReturnStatement(returnStatement: JKReturnStatement, data: D): R = visitStatement(returnStatement, data)
|
||||
fun visitJavaAssertStatement(javaAssertStatement: JKJavaAssertStatement, data: D): R = visitStatement(javaAssertStatement, data)
|
||||
fun visitJavaIfStatement(javaIfStatement: JKJavaIfStatement, data: D): R = visitStatement(javaIfStatement, data)
|
||||
fun visitJavaIfElseStatement(javaIfElseStatement: JKJavaIfElseStatement, data: D): R = visitJavaIfStatement(javaIfElseStatement, data)
|
||||
fun visitJavaForLoopStatement(javaForLoopStatement: JKJavaForLoopStatement, data: D): R = visitLoopStatement(javaForLoopStatement, data)
|
||||
fun visitJavaInstanceOfExpression(javaInstanceOfExpression: JKJavaInstanceOfExpression, data: D): R = visitExpression(javaInstanceOfExpression, data)
|
||||
fun visitKtProperty(ktProperty: JKKtProperty, data: D): R = visitField(ktProperty, data)
|
||||
|
||||
@@ -77,6 +77,22 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitThisExpression(thisExpression: JKThisExpression, data: Nothing?) = visitThisExpression(thisExpression)
|
||||
fun visitSuperExpression(superExpression: JKSuperExpression) = visitExpression(superExpression, null)
|
||||
override fun visitSuperExpression(superExpression: JKSuperExpression, data: Nothing?) = visitSuperExpression(superExpression)
|
||||
fun visitWhileStatement(whileStatement: JKWhileStatement) = visitLoopStatement(whileStatement, null)
|
||||
override fun visitWhileStatement(whileStatement: JKWhileStatement, data: Nothing?) = visitWhileStatement(whileStatement)
|
||||
fun visitDoWhileStatement(doWhileStatement: JKDoWhileStatement) = visitLoopStatement(doWhileStatement, null)
|
||||
override fun visitDoWhileStatement(doWhileStatement: JKDoWhileStatement, data: Nothing?) = visitDoWhileStatement(doWhileStatement)
|
||||
fun visitSwitchStatement(switchStatement: JKSwitchStatement) = visitStatement(switchStatement, null)
|
||||
override fun visitSwitchStatement(switchStatement: JKSwitchStatement, data: Nothing?) = visitSwitchStatement(switchStatement)
|
||||
fun visitSwitchLabelStatement(switchLabelStatement: JKSwitchLabelStatement) = visitStatement(switchLabelStatement, null)
|
||||
override fun visitSwitchLabelStatement(switchLabelStatement: JKSwitchLabelStatement, data: Nothing?) = visitSwitchLabelStatement(switchLabelStatement)
|
||||
fun visitSwitchDefaultLabelStatement(switchDefaultLabelStatement: JKSwitchDefaultLabelStatement) = visitStatement(switchDefaultLabelStatement, null)
|
||||
override fun visitSwitchDefaultLabelStatement(switchDefaultLabelStatement: JKSwitchDefaultLabelStatement, data: Nothing?) = visitSwitchDefaultLabelStatement(switchDefaultLabelStatement)
|
||||
fun visitBreakStatement(breakStatement: JKBreakStatement) = visitStatement(breakStatement, null)
|
||||
override fun visitBreakStatement(breakStatement: JKBreakStatement, data: Nothing?) = visitBreakStatement(breakStatement)
|
||||
fun visitIfExpression(ifExpression: JKIfExpression) = visitExpression(ifExpression, null)
|
||||
override fun visitIfExpression(ifExpression: JKIfExpression, data: Nothing?) = visitIfExpression(ifExpression)
|
||||
fun visitIfElseExpression(ifElseExpression: JKIfElseExpression) = visitIfExpression(ifElseExpression, null)
|
||||
override fun visitIfElseExpression(ifElseExpression: JKIfElseExpression, data: Nothing?) = visitIfElseExpression(ifElseExpression)
|
||||
fun visitJavaField(javaField: JKJavaField) = visitField(javaField, null)
|
||||
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
|
||||
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)
|
||||
@@ -89,6 +105,8 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitJavaFieldAccessExpression(javaFieldAccessExpression: JKJavaFieldAccessExpression, data: Nothing?) = visitJavaFieldAccessExpression(javaFieldAccessExpression)
|
||||
fun visitJavaNewExpression(javaNewExpression: JKJavaNewExpression) = visitExpression(javaNewExpression, null)
|
||||
override fun visitJavaNewExpression(javaNewExpression: JKJavaNewExpression, data: Nothing?) = visitJavaNewExpression(javaNewExpression)
|
||||
fun visitJavaDefaultNewExpression(javaDefaultNewExpression: JKJavaDefaultNewExpression) = visitExpression(javaDefaultNewExpression, null)
|
||||
override fun visitJavaDefaultNewExpression(javaDefaultNewExpression: JKJavaDefaultNewExpression, data: Nothing?) = visitJavaDefaultNewExpression(javaDefaultNewExpression)
|
||||
fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) = visitAccessModifier(javaAccessModifier, null)
|
||||
override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?) = visitJavaAccessModifier(javaAccessModifier)
|
||||
fun visitJavaModifier(javaModifier: JKJavaModifier) = visitModifier(javaModifier, null)
|
||||
@@ -103,10 +121,6 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitReturnStatement(returnStatement: JKReturnStatement, data: Nothing?) = visitReturnStatement(returnStatement)
|
||||
fun visitJavaAssertStatement(javaAssertStatement: JKJavaAssertStatement) = visitStatement(javaAssertStatement, null)
|
||||
override fun visitJavaAssertStatement(javaAssertStatement: JKJavaAssertStatement, data: Nothing?) = visitJavaAssertStatement(javaAssertStatement)
|
||||
fun visitJavaIfStatement(javaIfStatement: JKJavaIfStatement) = visitStatement(javaIfStatement, null)
|
||||
override fun visitJavaIfStatement(javaIfStatement: JKJavaIfStatement, data: Nothing?) = visitJavaIfStatement(javaIfStatement)
|
||||
fun visitJavaIfElseStatement(javaIfElseStatement: JKJavaIfElseStatement) = visitJavaIfStatement(javaIfElseStatement, null)
|
||||
override fun visitJavaIfElseStatement(javaIfElseStatement: JKJavaIfElseStatement, data: Nothing?) = visitJavaIfElseStatement(javaIfElseStatement)
|
||||
fun visitJavaForLoopStatement(javaForLoopStatement: JKJavaForLoopStatement) = visitLoopStatement(javaForLoopStatement, null)
|
||||
override fun visitJavaForLoopStatement(javaForLoopStatement: JKJavaForLoopStatement, data: Nothing?) = visitJavaForLoopStatement(javaForLoopStatement)
|
||||
fun visitJavaInstanceOfExpression(javaInstanceOfExpression: JKJavaInstanceOfExpression) = visitExpression(javaInstanceOfExpression, null)
|
||||
|
||||
Reference in New Issue
Block a user