From 003cee8cc19fe5e864b7f5e31cc331c39edb59ca Mon Sep 17 00:00:00 2001 From: Dimach Date: Tue, 29 May 2018 17:31:50 +0300 Subject: [PATCH] New J2K: Added assertion statement and more operators. --- .../org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 9 +++++++++ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt | 6 ++++++ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt | 9 ++++++++- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt | 2 ++ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt | 5 +++++ .../org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt | 1 + .../jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt | 2 ++ 7 files changed, 33 insertions(+), 1 deletion(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index c198ddc4929..adbf554665d 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -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}") } } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index bc3383e9219..4ad2ffe327d 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -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 { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt index 2d0362e34ce..7b3afaf2f4b 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -166,4 +166,11 @@ class JKLocalVariableImpl(modifierList: JKModifierList, type: JKTypeElement, nam override fun accept(visitor: JKVisitor, 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 accept(visitor: JKVisitor, data: D): R = visitor.visitAssertStatement(this, data) +} \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt index 53fb958ab6a..a7c73ab3d84 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt @@ -81,4 +81,6 @@ class JKKtLiteralExpressionImpl( sealed class JKKtOperatorImpl : JKOperator, JKElementBase() { object PLUS : JKKtOperatorImpl() object MINUS : JKKtOperatorImpl() + object EQEQ : JKKtOperatorImpl() + object NE : JKKtOperatorImpl() } \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 87cabebbdae..20369a7d014 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -157,3 +157,8 @@ interface JKStringLiteralExpression : JKLiteralExpression { } interface JKStubExpression : JKExpression + +interface JKAssertStatement : JKStatement { + val condition: JKExpression + val description: JKExpression +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt index 11a5a57065d..db09c9a87e8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -37,6 +37,7 @@ interface JKVisitor { 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) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt index 6bc92854545..dbe56fc5b9b 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -71,6 +71,8 @@ interface JKVisitorVoid : JKVisitor { 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)