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 PsiAssignmentExpression -> toJK()
is PsiInstanceOfExpression -> toJK() is PsiInstanceOfExpression -> toJK()
is PsiThisExpression -> is PsiThisExpression ->
JKThisExpressionImpl(qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) } JKThisExpressionImpl(
?: JKLabelEmptyImpl()) qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) } ?: JKLabelEmptyImpl()
is PsiSuperExpression -> JKSuperExpressionImpl() )
is PsiSuperExpression ->
JKSuperExpressionImpl(
qualifier?.referenceName?.let { JKLabelTextImpl(JKNameIdentifierImpl(it)) } ?: JKLabelEmptyImpl()
)
is PsiConditionalExpression -> JKIfElseExpressionImpl( is PsiConditionalExpression -> JKIfElseExpressionImpl(
condition.toJK(), thenExpression.toJK(), elseExpression.toJK() condition.toJK(), thenExpression.toJK(), elseExpression.toJK()
) )
@@ -428,6 +428,7 @@ class NewCodeBuilder {
override fun visitSuperExpression(superExpression: JKSuperExpression) { override fun visitSuperExpression(superExpression: JKSuperExpression) {
printer.printWithNoIndent("super") printer.printWithNoIndent("super")
superExpression.qualifierLabel.accept(this)
} }
override fun visitContinueStatement(continueStatement: JKContinueStatement) { 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) 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) 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 var qualifierLabel: JKLabel
} }
interface JKSuperExpression : JKExpression interface JKSuperExpression : JKExpression {
var qualifierLabel: JKLabel
}
interface JKWhileStatement : JKLoopStatement { interface JKWhileStatement : JKLoopStatement {
var condition: JKExpression var condition: JKExpression