New J2K: Add JKEmptyStatement

This commit is contained in:
Ilya Kirillov
2018-11-01 18:19:13 +03:00
committed by Ilya Kirillov
parent e10a81a942
commit 78c5b4acd5
6 changed files with 18 additions and 1 deletions
@@ -379,6 +379,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
val (labels, statement) = collectLabels()
JKLabeledStatementImpl(statement.toJK(), labels.map { JKNameIdentifierImpl(it.text) })
}
is PsiEmptyStatement -> JKEmptyStatementImpl()
else -> TODO("for ${this::class}")
}.also {
if (this != null) (it as PsiOwner).psi = this
@@ -405,6 +405,12 @@ class NewCodeBuilder {
}
}
override fun visitEmptyStatement(emptyStatement: JKEmptyStatement) {
}
override fun visitStubExpression(stubExpression: JKStubExpression) {
}
override fun visitKtConvertedFromForLoopSyntheticWhileStatement(
ktConvertedFromForLoopSyntheticWhileStatement: JKKtConvertedFromForLoopSyntheticWhileStatement
) {
@@ -434,6 +434,10 @@ class JKLabeledStatementImpl(statement: JKStatement, labels: List<JKNameIdentifi
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitLabeledStatement(this, data)
}
class JKEmptyStatementImpl: JKEmptyStatement, JKElementBase() , PsiOwner by PsiOwnerImpl() {
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitEmptyStatement(this, data)
}
class PsiOwnerImpl(override var psi: PsiElement? = null) : PsiOwner
val JKElement.psi: PsiElement?
@@ -441,3 +445,4 @@ val JKElement.psi: PsiElement?
fun <Elem : PsiElement>JKElement.psi(): Elem? =
(this as? PsiOwner)?.psi as? Elem
@@ -271,4 +271,6 @@ interface JKContinueStatement : JKStatement {
interface JKLabeledStatement : JKStatement {
var statement: JKStatement
val labels: List<JKNameIdentifier>
}
}
interface JKEmptyStatement : JKStatement
@@ -59,6 +59,7 @@ interface JKVisitor<out R, in D> {
fun visitLabelText(labelText: JKLabelText, data: D): R = visitLabel(labelText, data)
fun visitContinueStatement(continueStatement: JKContinueStatement, data: D): R = visitStatement(continueStatement, data)
fun visitLabeledStatement(labeledStatement: JKLabeledStatement, data: D): R = visitStatement(labeledStatement, data)
fun visitEmptyStatement(emptyStatement: JKEmptyStatement, data: D): R = visitStatement(emptyStatement, data)
fun visitJavaField(javaField: JKJavaField, data: D): R = visitField(javaField, data)
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
fun visitJavaMethodCallExpression(javaMethodCallExpression: JKJavaMethodCallExpression, data: D): R = visitMethodCallExpression(javaMethodCallExpression, data)
@@ -115,6 +115,8 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitContinueStatement(continueStatement: JKContinueStatement, data: Nothing?) = visitContinueStatement(continueStatement)
fun visitLabeledStatement(labeledStatement: JKLabeledStatement) = visitStatement(labeledStatement, null)
override fun visitLabeledStatement(labeledStatement: JKLabeledStatement, data: Nothing?) = visitLabeledStatement(labeledStatement)
fun visitEmptyStatement(emptyStatement: JKEmptyStatement) = visitStatement(emptyStatement, null)
override fun visitEmptyStatement(emptyStatement: JKEmptyStatement, data: Nothing?) = visitEmptyStatement(emptyStatement)
fun visitJavaField(javaField: JKJavaField) = visitField(javaField, null)
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)