diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 35b6fa09d2f..ad9d49ae632 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -57,7 +57,9 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { is PsiParenthesizedExpression -> toJK() is PsiAssignmentExpression -> toJK() is PsiInstanceOfExpression -> toJK() - is PsiThisExpression -> JKThisExpressionImpl() + is PsiThisExpression -> + JKThisExpressionImpl(qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) } + ?: JKLabelEmptyImpl()) is PsiSuperExpression -> JKSuperExpressionImpl() is PsiConditionalExpression -> JKIfElseExpressionImpl( condition.toJK(), thenExpression.toJK(), elseExpression.toJK() @@ -138,7 +140,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { return if (referenceNameElement is PsiKeyword) { val callee = when (referenceNameElement.tokenType) { SUPER_KEYWORD -> JKSuperExpressionImpl() - THIS_KEYWORD -> JKThisExpressionImpl() + THIS_KEYWORD -> JKThisExpressionImpl(JKLabelEmptyImpl()) else -> error("Unknown keyword in callee position") } JKDelegationConstructorCallImpl(symbol, callee, argumentList.toJK()) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 3a4119074fa..d9295076fd0 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -396,6 +396,7 @@ class NewCodeBuilder { override fun visitThisExpression(thisExpression: JKThisExpression) { printer.printWithNoIndent("this") + thisExpression.qualifierLabel.accept(this) } override fun visitSuperExpression(superExpression: JKSuperExpression) { 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 ff32eeb7eb8..e92abe5d573 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -309,7 +309,8 @@ class JKBlockStatementImpl(block: JKBlock) : JKBlockStatement, JKBranchElementBa override fun accept(visitor: JKVisitor, data: D): R = visitor.visitBlockStatement(this, data) } -class JKThisExpressionImpl : JKThisExpression, JKElementBase(), PsiOwner by PsiOwnerImpl() { +class JKThisExpressionImpl(qualifierLabel: JKLabel) : JKThisExpression, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { + override var qualifierLabel: JKLabel by child(qualifierLabel) override fun accept(visitor: JKVisitor, data: D): R = visitor.visitThisExpression(this, data) } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index e7af5fdd32b..ac0344d66d7 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -211,7 +211,9 @@ interface JKBlockStatement : JKStatement, JKBranchElement { var block: JKBlock } -interface JKThisExpression : JKExpression +interface JKThisExpression : JKExpression { + var qualifierLabel: JKLabel +} interface JKSuperExpression : JKExpression