New J2K: Add qualified label to JKThisExpression
This commit is contained in:
committed by
Ilya Kirillov
parent
71408c0b14
commit
2b6ac84dda
@@ -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())
|
||||
|
||||
@@ -396,6 +396,7 @@ class NewCodeBuilder {
|
||||
|
||||
override fun visitThisExpression(thisExpression: JKThisExpression) {
|
||||
printer.printWithNoIndent("this")
|
||||
thisExpression.qualifierLabel.accept(this)
|
||||
}
|
||||
|
||||
override fun visitSuperExpression(superExpression: JKSuperExpression) {
|
||||
|
||||
@@ -309,7 +309,8 @@ class JKBlockStatementImpl(block: JKBlock) : JKBlockStatement, JKBranchElementBa
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, 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 <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitThisExpression(this, data)
|
||||
}
|
||||
|
||||
|
||||
@@ -211,7 +211,9 @@ interface JKBlockStatement : JKStatement, JKBranchElement {
|
||||
var block: JKBlock
|
||||
}
|
||||
|
||||
interface JKThisExpression : JKExpression
|
||||
interface JKThisExpression : JKExpression {
|
||||
var qualifierLabel: JKLabel
|
||||
}
|
||||
|
||||
interface JKSuperExpression : JKExpression
|
||||
|
||||
|
||||
Reference in New Issue
Block a user