New J2K: Add super expression qualifier

This commit is contained in:
Ilya Kirillov
2018-12-18 14:31:01 +03:00
committed by Ilya Kirillov
parent d75549f443
commit 4194ace762
4 changed files with 13 additions and 5 deletions
@@ -69,9 +69,13 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
is PsiAssignmentExpression -> toJK()
is PsiInstanceOfExpression -> toJK()
is PsiThisExpression ->
JKThisExpressionImpl(qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) }
?: JKLabelEmptyImpl())
is PsiSuperExpression -> JKSuperExpressionImpl()
JKThisExpressionImpl(
qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) } ?: JKLabelEmptyImpl()
)
is PsiSuperExpression ->
JKSuperExpressionImpl(
qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) } ?: JKLabelEmptyImpl()
)
is PsiConditionalExpression -> JKIfElseExpressionImpl(
condition.toJK(), thenExpression.toJK(), elseExpression.toJK()
)
@@ -428,6 +428,7 @@ class NewCodeBuilder {
override fun visitSuperExpression(superExpression: JKSuperExpression) {
printer.printWithNoIndent("super")
superExpression.qualifierLabel.accept(this)
}
override fun visitContinueStatement(continueStatement: JKContinueStatement) {
@@ -312,7 +312,8 @@ class JKThisExpressionImpl(qualifierLabel: JKLabel) : JKThisExpression, JKBranch
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitThisExpression(this, data)
}
class JKSuperExpressionImpl : JKSuperExpression, JKElementBase(), PsiOwner by PsiOwnerImpl() {
class JKSuperExpressionImpl(qualifierLabel: JKLabel = JKLabelEmptyImpl()) : JKSuperExpression, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() {
override var qualifierLabel: JKLabel by child(qualifierLabel)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitSuperExpression(this, data)
}
@@ -304,7 +304,9 @@ interface JKThisExpression : JKExpression {
var qualifierLabel: JKLabel
}
interface JKSuperExpression : JKExpression
interface JKSuperExpression : JKExpression {
var qualifierLabel: JKLabel
}
interface JKWhileStatement : JKLoopStatement {
var condition: JKExpression