New J2K: Stub for JavaField initializer
This commit is contained in:
committed by
Ilya Kirillov
parent
e77fe74284
commit
3ff0287c9f
@@ -17,17 +17,24 @@
|
||||
package org.jetbrains.kotlin.j2k
|
||||
|
||||
import com.intellij.lang.java.JavaLanguage
|
||||
import com.intellij.psi.JavaElementVisitor
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiField
|
||||
import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.j2k.tree.JKClass
|
||||
import org.jetbrains.kotlin.j2k.tree.JKElement
|
||||
import org.jetbrains.kotlin.j2k.tree.JKExpression
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKClassImpl
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKElementBase
|
||||
import org.jetbrains.kotlin.j2k.tree.impl.JKJavaFieldImpl
|
||||
|
||||
class JavaToJKTreeBuilder {
|
||||
|
||||
private class ExpressionTreeVisitor : JavaElementVisitor() {
|
||||
override fun visitElement(element: PsiElement) {
|
||||
element.acceptChildren(this)
|
||||
}
|
||||
|
||||
fun extractExpression(): JKExpression? = object : JKElementBase(), JKExpression {}
|
||||
}
|
||||
|
||||
private class ElementVisitor : JavaElementVisitor() {
|
||||
|
||||
override fun visitElement(element: PsiElement) {
|
||||
@@ -42,9 +49,12 @@ class JavaToJKTreeBuilder {
|
||||
}
|
||||
|
||||
override fun visitField(field: PsiField) {
|
||||
currentClass!!.declarations += JKJavaFieldImpl(field.name!!)
|
||||
val initializer = ExpressionTreeVisitor().also { field.initializer?.accept(it) }.extractExpression()
|
||||
|
||||
currentClass!!.declarations += JKJavaFieldImpl(field.name!!, initializer)
|
||||
super.visitField(field)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun buildTree(psi: PsiElement): JKElement? {
|
||||
|
||||
@@ -16,11 +16,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.j2k.tree.impl
|
||||
|
||||
import org.jetbrains.kotlin.j2k.tree.JKExpression
|
||||
import org.jetbrains.kotlin.j2k.tree.JKJavaField
|
||||
import org.jetbrains.kotlin.j2k.tree.JKJavaVisitor
|
||||
import org.jetbrains.kotlin.j2k.tree.JKVisitor
|
||||
|
||||
class JKJavaFieldImpl(override val name: String) : JKJavaField, JKElementBase() {
|
||||
class JKJavaFieldImpl(override val name: String,
|
||||
override var initializer: JKExpression?) : JKJavaField, JKElementBase() {
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R {
|
||||
return if (visitor is JKJavaVisitor) {
|
||||
@@ -30,4 +32,7 @@ class JKJavaFieldImpl(override val name: String) : JKJavaField, JKElementBase()
|
||||
visitor.visitDeclaration(this, data)
|
||||
}
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D)
|
||||
= initializer?.accept(visitor, data) ?: Unit
|
||||
}
|
||||
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.j2k.tree
|
||||
|
||||
interface JKJavaField : JKDeclaration {
|
||||
val name: String
|
||||
var initializer: JKExpression?
|
||||
}
|
||||
|
||||
interface JKJavaMethod : JKDeclaration
|
||||
|
||||
Reference in New Issue
Block a user