From 45eecf2c900bcbe941fe78597dc92909f92ec442 Mon Sep 17 00:00:00 2001 From: Dimach Date: Wed, 30 May 2018 18:22:28 +0300 Subject: [PATCH] New J2K: Added this and super expressions. --- .../org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 7 ++++--- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt | 8 ++++++++ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt | 4 ++++ .../org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt | 2 ++ .../jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt | 4 ++++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index c62c6172f76..05e7503296b 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -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 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 2feb9326bce..1123fc42af8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -193,4 +193,12 @@ class JKBlockStatementImpl(block: JKBlock) : JKBlockStatement, JKBranchElementBa override var block by child(block) override fun accept(visitor: JKVisitor, data: D): R = visitor.visitBlockStatement(this, data) +} + +class JKThisExpressionImpl : JKThisExpression, JKElementBase() { + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitThisExpression(this, data) +} + +class JKSuperExpressionImpl : JKSuperExpression, JKElementBase() { + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitSuperExpression(this, data) } \ 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 9a7b6c9b31c..a13f5446086 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -163,3 +163,7 @@ interface JKLoopStatement : JKStatement { interface JKBlockStatement : JKStatement { var block: JKBlock } + +interface JKThisExpression : JKExpression + +interface JKSuperExpression : 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 7ba2655c7e9..f475a359348 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -38,6 +38,8 @@ interface JKVisitor { 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) 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 c5bf523086b..39308b9a0a8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -73,6 +73,10 @@ interface JKVisitorVoid : JKVisitor { 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)