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 PsiParenthesizedExpression -> toJK()
|
||||||
is PsiAssignmentExpression -> toJK()
|
is PsiAssignmentExpression -> toJK()
|
||||||
is PsiInstanceOfExpression -> toJK()
|
is PsiInstanceOfExpression -> toJK()
|
||||||
is PsiThisExpression -> JKThisExpressionImpl()
|
is PsiThisExpression ->
|
||||||
|
JKThisExpressionImpl(qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) }
|
||||||
|
?: JKLabelEmptyImpl())
|
||||||
is PsiSuperExpression -> JKSuperExpressionImpl()
|
is PsiSuperExpression -> JKSuperExpressionImpl()
|
||||||
is PsiConditionalExpression -> JKIfElseExpressionImpl(
|
is PsiConditionalExpression -> JKIfElseExpressionImpl(
|
||||||
condition.toJK(), thenExpression.toJK(), elseExpression.toJK()
|
condition.toJK(), thenExpression.toJK(), elseExpression.toJK()
|
||||||
@@ -138,7 +140,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
return if (referenceNameElement is PsiKeyword) {
|
return if (referenceNameElement is PsiKeyword) {
|
||||||
val callee = when (referenceNameElement.tokenType) {
|
val callee = when (referenceNameElement.tokenType) {
|
||||||
SUPER_KEYWORD -> JKSuperExpressionImpl()
|
SUPER_KEYWORD -> JKSuperExpressionImpl()
|
||||||
THIS_KEYWORD -> JKThisExpressionImpl()
|
THIS_KEYWORD -> JKThisExpressionImpl(JKLabelEmptyImpl())
|
||||||
else -> error("Unknown keyword in callee position")
|
else -> error("Unknown keyword in callee position")
|
||||||
}
|
}
|
||||||
JKDelegationConstructorCallImpl(symbol, callee, argumentList.toJK())
|
JKDelegationConstructorCallImpl(symbol, callee, argumentList.toJK())
|
||||||
|
|||||||
@@ -396,6 +396,7 @@ class NewCodeBuilder {
|
|||||||
|
|
||||||
override fun visitThisExpression(thisExpression: JKThisExpression) {
|
override fun visitThisExpression(thisExpression: JKThisExpression) {
|
||||||
printer.printWithNoIndent("this")
|
printer.printWithNoIndent("this")
|
||||||
|
thisExpression.qualifierLabel.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitSuperExpression(superExpression: JKSuperExpression) {
|
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)
|
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)
|
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
|
var block: JKBlock
|
||||||
}
|
}
|
||||||
|
|
||||||
interface JKThisExpression : JKExpression
|
interface JKThisExpression : JKExpression {
|
||||||
|
var qualifierLabel: JKLabel
|
||||||
|
}
|
||||||
|
|
||||||
interface JKSuperExpression : JKExpression
|
interface JKSuperExpression : JKExpression
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user