New J2K: Added assertion statement and more operators.

This commit is contained in:
Dimach
2018-05-29 17:31:50 +03:00
committed by Ilya Kirillov
parent 3bbef363e6
commit 003cee8cc1
7 changed files with 33 additions and 1 deletions
@@ -107,6 +107,12 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
fun PsiJavaToken.toJK(): JKOperator = when (tokenType) {
JavaTokenType.PLUS -> JKJavaOperatorImpl.PLUS
JavaTokenType.MINUS -> JKJavaOperatorImpl.MINUS
JavaTokenType.EQEQ -> JKJavaOperatorImpl.EQEQ
JavaTokenType.NE -> JKJavaOperatorImpl.NE
JavaTokenType.GT -> JKJavaOperatorImpl.GT
JavaTokenType.LT -> JKJavaOperatorImpl.LT
JavaTokenType.GE -> JKJavaOperatorImpl.GE
JavaTokenType.LE -> JKJavaOperatorImpl.LE
else -> throw RuntimeException("Not supported")
}
@@ -283,6 +289,9 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
is PsiExpressionStatement -> JKExpressionStatementImpl(with(expressionTreeMapper) { expression.toJK() })
is PsiReturnStatement -> JKReturnStatementImpl(with(expressionTreeMapper) { returnValue?.toJK() ?: JKStubExpressionImpl() })
is PsiDeclarationStatement -> JKDeclarationStatementImpl(declaredElements.toJK())
is PsiAssertStatement -> JKAssertStatementImpl(
with(expressionTreeMapper) { assertCondition?.toJK() } ?: JKStubExpressionImpl(),
with(expressionTreeMapper) { assertDescription?.toJK() } ?: JKStubExpressionImpl())
else -> TODO("for ${this::class}")
}
}
@@ -66,6 +66,12 @@ class JKJavaModifierImpl(override val type: JKJavaModifier.JavaModifierType) : J
sealed class JKJavaOperatorImpl : JKOperator {
object PLUS : JKJavaOperatorImpl()
object MINUS : JKJavaOperatorImpl()
object EQEQ : JKJavaOperatorImpl()
object NE : JKJavaOperatorImpl()
object GT : JKJavaOperatorImpl()
object LT : JKJavaOperatorImpl()
object GE : JKJavaOperatorImpl()
object LE : JKJavaOperatorImpl()
}
sealed class JKJavaQualifierImpl : JKQualifier {
@@ -166,4 +166,11 @@ class JKLocalVariableImpl(modifierList: JKModifierList, type: JKTypeElement, nam
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitLocalVariable(this, data)
}
class JKStubExpressionImpl() : JKStubExpression, JKElementBase()
class JKStubExpressionImpl : JKStubExpression, JKElementBase()
class JKAssertStatementImpl(condition: JKExpression, description: JKExpression) : JKAssertStatement, JKBranchElementBase() {
override val description by child(description)
override val condition by child(condition)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitAssertStatement(this, data)
}
@@ -81,4 +81,6 @@ class JKKtLiteralExpressionImpl(
sealed class JKKtOperatorImpl : JKOperator, JKElementBase() {
object PLUS : JKKtOperatorImpl()
object MINUS : JKKtOperatorImpl()
object EQEQ : JKKtOperatorImpl()
object NE : JKKtOperatorImpl()
}
@@ -157,3 +157,8 @@ interface JKStringLiteralExpression : JKLiteralExpression {
}
interface JKStubExpression : JKExpression
interface JKAssertStatement : JKStatement {
val condition: JKExpression
val description: JKExpression
}
@@ -37,6 +37,7 @@ interface JKVisitor<out R, in D> {
fun visitValueArgument(valueArgument: JKValueArgument, data: D): R = visitTreeElement(valueArgument, data)
fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: D): R = visitLiteralExpression(stringLiteralExpression, data)
fun visitStubExpression(stubExpression: JKStubExpression, data: D): R = visitExpression(stubExpression, data)
fun visitAssertStatement(assertStatement: JKAssertStatement, data: D): R = visitStatement(assertStatement, data)
fun visitJavaField(javaField: JKJavaField, data: D): R = visitField(javaField, data)
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): R = visitLoop(javaForLoop, data)
@@ -71,6 +71,8 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: Nothing?) = visitStringLiteralExpression(stringLiteralExpression)
fun visitStubExpression(stubExpression: JKStubExpression) = visitExpression(stubExpression, null)
override fun visitStubExpression(stubExpression: JKStubExpression, data: Nothing?) = visitStubExpression(stubExpression)
fun visitAssertStatement(assertStatement: JKAssertStatement) = visitStatement(assertStatement, null)
override fun visitAssertStatement(assertStatement: JKAssertStatement, data: Nothing?) = visitAssertStatement(assertStatement)
fun visitJavaField(javaField: JKJavaField) = visitField(javaField, null)
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)