New J2K: Added this and super expressions.

This commit is contained in:
Dimach
2018-05-30 18:22:28 +03:00
committed by Ilya Kirillov
parent a1d37034c4
commit 45eecf2c90
5 changed files with 22 additions and 3 deletions
@@ -53,6 +53,8 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
is PsiParenthesizedExpression -> toJK()
is PsiAssignmentExpression -> toJK()
is PsiInstanceOfExpression -> toJK()
is PsiThisExpression -> JKThisExpressionImpl()
is PsiSuperExpression -> JKSuperExpressionImpl()
else -> {
throw RuntimeException("Not supported: ${this::class}")
}
@@ -278,9 +280,8 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
is PsiExpressionStatement -> JKExpressionStatementImpl(with(expressionTreeMapper) { expression.toJK() })
is PsiReturnStatement -> JKReturnStatementImpl(with(expressionTreeMapper) { returnValue.toJK() })
is PsiDeclarationStatement -> JKDeclarationStatementImpl(declaredElements.toJK())
is PsiAssertStatement -> JKJavaAssertStatementImpl(
with(expressionTreeMapper) { assertCondition.toJK() },
with(expressionTreeMapper) { assertDescription.toJK() })
is PsiAssertStatement -> JKJavaAssertStatementImpl(with(expressionTreeMapper) { assertCondition.toJK() },
with(expressionTreeMapper) { assertDescription.toJK() })
is PsiIfStatement -> if (elseElement == null)
JKJavaIfStatementImpl(with(expressionTreeMapper) { condition.toJK() }, thenBranch.toJK())
else
@@ -193,4 +193,12 @@ class JKBlockStatementImpl(block: JKBlock) : JKBlockStatement, JKBranchElementBa
override var block by child(block)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitBlockStatement(this, data)
}
class JKThisExpressionImpl : JKThisExpression, JKElementBase() {
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitThisExpression(this, data)
}
class JKSuperExpressionImpl : JKSuperExpression, JKElementBase() {
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitSuperExpression(this, data)
}
@@ -163,3 +163,7 @@ interface JKLoopStatement : JKStatement {
interface JKBlockStatement : JKStatement {
var block: JKBlock
}
interface JKThisExpression : JKExpression
interface JKSuperExpression : JKExpression
@@ -38,6 +38,8 @@ interface JKVisitor<out R, in D> {
fun visitStubExpression(stubExpression: JKStubExpression, data: D): R = visitExpression(stubExpression, data)
fun visitLoopStatement(loopStatement: JKLoopStatement, data: D): R = visitStatement(loopStatement, data)
fun visitBlockStatement(blockStatement: JKBlockStatement, data: D): R = visitStatement(blockStatement, data)
fun visitThisExpression(thisExpression: JKThisExpression, data: D): R = visitExpression(thisExpression, data)
fun visitSuperExpression(superExpression: JKSuperExpression, data: D): R = visitExpression(superExpression, data)
fun visitJavaField(javaField: JKJavaField, data: D): R = visitField(javaField, data)
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): R = visitExpression(javaAssignmentExpression, data)
@@ -73,6 +73,10 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitLoopStatement(loopStatement: JKLoopStatement, data: Nothing?) = visitLoopStatement(loopStatement)
fun visitBlockStatement(blockStatement: JKBlockStatement) = visitStatement(blockStatement, null)
override fun visitBlockStatement(blockStatement: JKBlockStatement, data: Nothing?) = visitBlockStatement(blockStatement)
fun visitThisExpression(thisExpression: JKThisExpression) = visitExpression(thisExpression, null)
override fun visitThisExpression(thisExpression: JKThisExpression, data: Nothing?) = visitThisExpression(thisExpression)
fun visitSuperExpression(superExpression: JKSuperExpression) = visitExpression(superExpression, null)
override fun visitSuperExpression(superExpression: JKSuperExpression, data: Nothing?) = visitSuperExpression(superExpression)
fun visitJavaField(javaField: JKJavaField) = visitField(javaField, null)
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)