New J2K: Add qualified label to JKThisExpression

This commit is contained in:
Ilya Kirillov
2018-11-13 18:46:52 +03:00
committed by Ilya Kirillov
parent 71408c0b14
commit 2b6ac84dda
4 changed files with 10 additions and 4 deletions
@@ -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