diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index c4816ec47c1..885dca3f945 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -56,7 +56,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { is PsiThisExpression -> JKThisExpressionImpl() is PsiSuperExpression -> JKSuperExpressionImpl() is PsiConditionalExpression -> JKIfElseExpressionImpl( - condition.toJK(), JKExpressionStatementImpl(thenExpression.toJK()), JKExpressionStatementImpl(elseExpression.toJK()) + condition.toJK(), thenExpression.toJK(), elseExpression.toJK() ) else -> { throw RuntimeException("Not supported: ${this::class}") @@ -122,7 +122,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { return JKNullLiteral() // TODO !!! } - val access = JKJavaFieldAccessExpressionImpl(JKMultiverseFieldSymbol(impl.resolve() as PsiField)) + val access = JKJavaFieldAccessExpressionImpl(symbolProvider.provideSymbol(impl.resolve() ?: TODO()) as JKFieldSymbol) return when { impl.findChildByRole(ChildRole.DOT) != null && (impl.qualifierExpression as? PsiReferenceExpression)?.resolve() !is PsiClass -> @@ -293,12 +293,12 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { is PsiDeclarationStatement -> JKDeclarationStatementImpl(declaredElements.toJK()) is PsiAssertStatement -> JKJavaAssertStatementImpl(with(expressionTreeMapper) { assertCondition.toJK() }, with(expressionTreeMapper) { assertDescription.toJK() }) - is PsiIfStatement -> JKExpressionStatementImpl( + is PsiIfStatement -> if (elseElement == null) - JKIfExpressionImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK()) + JKIfStatementImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK()) else - JKIfElseExpressionImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK(), elseBranch.toJK()) - ) + JKIfElseStatementImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK(), elseBranch.toJK()) + is PsiForStatement -> JKJavaForLoopStatementImpl( initialization.toJK(), with(expressionTreeMapper) { condition.toJK() }, update.toJK(), body.toJK() ) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt index d0fdcff8d6e..ea8a3149f17 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -243,14 +243,23 @@ class JKBreakStatementImpl : JKBreakStatement, JKElementBase() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitBreakStatement(this, data) } -class JKIfExpressionImpl(condition: JKExpression, thenBranch: JKStatement) : JKIfExpression, JKBranchElementBase() { +class JKIfStatementImpl(condition: JKExpression, thenBranch: JKStatement) : JKIfStatement, JKBranchElementBase() { override var thenBranch by child(thenBranch) override var condition by child(condition) - override fun accept(visitor: JKVisitor, data: D): R = visitor.visitIfExpression(this, data) + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitIfStatement(this, data) } -class JKIfElseExpressionImpl(condition: JKExpression, thenBranch: JKStatement, elseBranch: JKStatement) : JKIfElseExpression, +class JKIfElseStatementImpl(condition: JKExpression, thenBranch: JKStatement, elseBranch: JKStatement) : JKIfElseStatement, + JKBranchElementBase() { + override var elseBranch by child(elseBranch) + override var thenBranch by child(thenBranch) + override var condition by child(condition) + + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitIfElseStatement(this, data) +} + +class JKIfElseExpressionImpl(condition: JKExpression, thenBranch: JKExpression, elseBranch: JKExpression) : JKIfElseExpression, JKBranchElementBase() { override var elseBranch by child(elseBranch) override var thenBranch by child(thenBranch) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 81bb21e1e02..be260aa4d49 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -189,11 +189,17 @@ interface JKSwitchDefaultLabelStatement : JKStatement interface JKBreakStatement : JKStatement -interface JKIfExpression : JKExpression { +interface JKIfStatement : JKStatement { var condition: JKExpression var thenBranch: JKStatement } -interface JKIfElseExpression : JKIfExpression { +interface JKIfElseStatement : JKIfStatement { var elseBranch: JKStatement +} + +interface JKIfElseExpression : JKExpression { + var condition: JKExpression + var thenBranch: JKExpression + var elseBranch: JKExpression } \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt index 10c8e4c22c1..3a4e006d4a9 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -46,8 +46,9 @@ interface JKVisitor { 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 visitIfStatement(ifStatement: JKIfStatement, data: D): R = visitStatement(ifStatement, data) + fun visitIfElseStatement(ifElseStatement: JKIfElseStatement, data: D): R = visitIfStatement(ifElseStatement, data) + fun visitIfElseExpression(ifElseExpression: JKIfElseExpression, data: D): R = visitExpression(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) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt index 3798b1f9ec1..fe72a16ea0b 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -89,9 +89,11 @@ interface JKVisitorVoid : JKVisitor { 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) + fun visitIfStatement(ifStatement: JKIfStatement) = visitStatement(ifStatement, null) + override fun visitIfStatement(ifStatement: JKIfStatement, data: Nothing?) = visitIfStatement(ifStatement) + fun visitIfElseStatement(ifElseStatement: JKIfElseStatement) = visitIfStatement(ifElseStatement, null) + override fun visitIfElseStatement(ifElseStatement: JKIfElseStatement, data: Nothing?) = visitIfElseStatement(ifElseStatement) + fun visitIfElseExpression(ifElseExpression: JKIfElseExpression) = visitExpression(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)