New J2K: Cleanup element impls to reference nested elements via delegates
This commit is contained in:
committed by
Ilya Kirillov
parent
9f7146d8b9
commit
77b6eca76e
@@ -241,8 +241,11 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
||||
|
||||
fun PsiMethod.toJK(): JKJavaMethod {
|
||||
return JKJavaMethodImpl(
|
||||
with(modifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(name),
|
||||
parameterList.parameters.map { it -> it.toJK() }, body?.toJK() ?: TODO()
|
||||
with(modifierMapper) { modifierList.toJK() },
|
||||
with(expressionTreeMapper) { returnTypeElement?.toJK() ?: TODO() },
|
||||
JKNameIdentifierImpl(name),
|
||||
parameterList.parameters.map { it -> it.toJK() },
|
||||
body?.toJK() ?: TODO()
|
||||
).also {
|
||||
(symbolProvider.provideSymbol(this) as? JKUniverseMethodSymbol)?.run { target = it }
|
||||
}
|
||||
|
||||
@@ -37,22 +37,28 @@ class JKJavaFieldImpl(
|
||||
}
|
||||
|
||||
class JKJavaMethodImpl(
|
||||
override var modifierList: JKModifierList,
|
||||
override var name: JKNameIdentifier,
|
||||
override var valueArguments: List<JKValueArgument>,
|
||||
override var block: JKBlock
|
||||
) : JKJavaMethod, JKElementBase() {
|
||||
override val returnType: JKTypeElement
|
||||
get() = TODO()
|
||||
modifierList: JKModifierList,
|
||||
returnType: JKTypeElement,
|
||||
name: JKNameIdentifier,
|
||||
valueArguments: List<JKValueArgument>,
|
||||
block: JKBlock
|
||||
) : JKJavaMethod, JKBranchElementBase() {
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaMethod(this, data)
|
||||
|
||||
override var modifierList: JKModifierList by child(modifierList)
|
||||
override var returnType: JKTypeElement by child(returnType)
|
||||
override var name: JKNameIdentifier by child(name)
|
||||
override var valueArguments: List<JKValueArgument> by children(valueArguments)
|
||||
override var block: JKBlock by child(block)
|
||||
|
||||
override val valid: Boolean
|
||||
get() = true
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaMethod(this, data)
|
||||
}
|
||||
|
||||
class JKJavaLiteralExpressionImpl(
|
||||
override val literal: String, override val type: JKLiteralExpression.LiteralType
|
||||
override val literal: String,
|
||||
override val type: JKLiteralExpression.LiteralType
|
||||
) : JKJavaLiteralExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaLiteralExpression(this, data)
|
||||
}
|
||||
@@ -76,9 +82,12 @@ sealed class JKJavaQualifierImpl : JKQualifier {
|
||||
}
|
||||
|
||||
class JKJavaMethodCallExpressionImpl(
|
||||
override var identifier: JKMethodSymbol, override var arguments: JKExpressionList
|
||||
) : JKJavaMethodCallExpression, JKElementBase() {
|
||||
override var identifier: JKMethodSymbol,
|
||||
arguments: JKExpressionList
|
||||
) : JKJavaMethodCallExpression, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaMethodCallExpression(this, data)
|
||||
|
||||
override val arguments: JKExpressionList by child(arguments)
|
||||
}
|
||||
|
||||
class JKJavaFieldAccessExpressionImpl(override var identifier: JKFieldSymbol) : JKJavaFieldAccessExpression, JKElementBase() {
|
||||
@@ -112,7 +121,7 @@ class JKJavaArrayTypeImpl(override val type: JKType) : JKJavaArrayType
|
||||
|
||||
class JKReturnStatementImpl(expression: JKExpression) : JKBranchElementBase(), JKReturnStatement {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitReturnStatement(this, data)
|
||||
// TODO accept
|
||||
|
||||
override val expression by child(expression)
|
||||
}
|
||||
|
||||
@@ -121,6 +130,8 @@ class JKJavaAssignmentExpressionImpl(
|
||||
rExpression: JKExpression/*,
|
||||
TODO operation:? */
|
||||
) : JKBranchElementBase(), JKJavaAssignmentExpression {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaAssignmentExpression(this, data)
|
||||
|
||||
override var lExpression: JKExpression by child(lExpression)
|
||||
override var rExpression: JKExpression by child(rExpression)
|
||||
}
|
||||
@@ -20,95 +20,112 @@ import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||
import org.jetbrains.kotlin.j2k.tree.*
|
||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||
|
||||
class JKClassImpl(modifierList: JKModifierList, name: JKNameIdentifier, override var classKind: JKClass.ClassKind) :
|
||||
JKClass,
|
||||
JKBranchElementBase() {
|
||||
class JKClassImpl(
|
||||
modifierList: JKModifierList,
|
||||
name: JKNameIdentifier,
|
||||
override var classKind: JKClass.ClassKind
|
||||
) : JKClass, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitClass(this, data)
|
||||
|
||||
override val name by child(name)
|
||||
override var name by child(name)
|
||||
override var modifierList by child(modifierList)
|
||||
override val valid: Boolean = true
|
||||
|
||||
override var declarationList by children<JKDeclaration>()
|
||||
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitClass(this, data)
|
||||
override val valid: Boolean = true
|
||||
}
|
||||
|
||||
|
||||
class JKNameIdentifierImpl(override val value: String) : JKNameIdentifier, JKElementBase() {}
|
||||
|
||||
class JKModifierListImpl(modifiers: List<JKModifier> = emptyList()) : JKModifierList, JKBranchElementBase() {
|
||||
override var modifiers: List<JKModifier> by children(modifiers)
|
||||
class JKModifierListImpl(
|
||||
modifiers: List<JKModifier> = emptyList()
|
||||
) : JKModifierList, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitModifierList(this, data)
|
||||
|
||||
override var modifiers: List<JKModifier> by children(modifiers)
|
||||
}
|
||||
|
||||
class JKValueArgumentImpl(type: JKTypeElement, override val name: String) : JKValueArgument, JKBranchElementBase() {
|
||||
override var type by child(type)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitValueArgument(this, data)
|
||||
|
||||
override var type by child(type)
|
||||
}
|
||||
|
||||
class JKBlockImpl(statements: List<JKStatement> = emptyList()) : JKBlock, JKBranchElementBase() {
|
||||
override var statements by children(statements)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitBlock(this, data)
|
||||
|
||||
override var statements by children(statements)
|
||||
}
|
||||
|
||||
class JKBinaryExpressionImpl(left: JKExpression, right: JKExpression, override var operator: JKOperator) : JKBinaryExpression,
|
||||
class JKBinaryExpressionImpl(
|
||||
left: JKExpression,
|
||||
right: JKExpression,
|
||||
override var operator: JKOperator
|
||||
) : JKBinaryExpression,
|
||||
JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitBinaryExpression(this, data)
|
||||
|
||||
override var right by child(right)
|
||||
override var left by child(left)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitBinaryExpression(this, data)
|
||||
}
|
||||
|
||||
class JKPrefixExpressionImpl(expression: JKExpression, override var operator: JKOperator) : JKPrefixExpression, JKBranchElementBase() {
|
||||
override var expression by child(expression)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitPrefixExpression(this, data)
|
||||
|
||||
override var expression by child(expression)
|
||||
}
|
||||
|
||||
class JKPostfixExpressionImpl(expression: JKExpression, override var operator: JKOperator) : JKPostfixExpression, JKBranchElementBase() {
|
||||
override var expression by child(expression)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitPostfixExpression(this, data)
|
||||
|
||||
override var expression by child(expression)
|
||||
}
|
||||
|
||||
class JKExpressionListImpl(expressions: List<JKExpression> = emptyList()) : JKExpressionList, JKBranchElementBase() {
|
||||
override var expressions by children(expressions)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitExpressionList(this, data)
|
||||
|
||||
override var expressions by children(expressions)
|
||||
}
|
||||
|
||||
class JKQualifiedExpressionImpl(
|
||||
override var receiver: JKExpression, override var operator: JKQualifier, override var selector: JKExpression
|
||||
) : JKQualifiedExpression, JKElementBase() {
|
||||
receiver: JKExpression,
|
||||
override var operator: JKQualifier,
|
||||
selector: JKExpression
|
||||
) : JKQualifiedExpression, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitQualifiedExpression(this, data)
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
receiver.accept(visitor, data)
|
||||
selector.accept(visitor, data)
|
||||
}
|
||||
|
||||
override var receiver: JKExpression by child(receiver)
|
||||
override var selector: JKExpression by child(selector)
|
||||
}
|
||||
|
||||
class JKExpressionStatementImpl(override val expression: JKExpression) : JKExpressionStatement, JKElementBase() {
|
||||
class JKExpressionStatementImpl(
|
||||
expression: JKExpression
|
||||
) : JKExpressionStatement, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitExpressionStatement(this, data)
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
expression.accept(visitor, data)
|
||||
}
|
||||
|
||||
override val expression: JKExpression by child(expression)
|
||||
}
|
||||
|
||||
class JKArrayAccessExpressionImpl(override var expression: JKExpression, override var indexExpression: JKExpression) :
|
||||
JKArrayAccessExpression, JKElementBase() {
|
||||
class JKArrayAccessExpressionImpl(
|
||||
expression: JKExpression,
|
||||
indexExpression: JKExpression
|
||||
) : JKArrayAccessExpression, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitArrayAccessExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
expression.accept(visitor, data)
|
||||
indexExpression.accept(visitor, data)
|
||||
}
|
||||
override var expression: JKExpression by child(expression)
|
||||
override var indexExpression: JKExpression by child(indexExpression)
|
||||
}
|
||||
|
||||
class JKParenthesizedExpressionImpl(override var expression: JKExpression) : JKParenthesizedExpression, JKBranchElementBase() {
|
||||
class JKParenthesizedExpressionImpl(expression: JKExpression) : JKParenthesizedExpression, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitParenthesizedExpression(this, data)
|
||||
|
||||
override var expression: JKExpression by child(expression)
|
||||
}
|
||||
|
||||
class JKTypeCastExpressionImpl(override var expression: JKExpression, type: JKTypeElement) : JKTypeCastExpression,
|
||||
JKBranchElementBase() {
|
||||
override var type by child(type)
|
||||
class JKTypeCastExpressionImpl(override var expression: JKExpression, type: JKTypeElement) : JKTypeCastExpression, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitTypeCastExpression(this, data)
|
||||
|
||||
override var type by child(type)
|
||||
}
|
||||
|
||||
class JKTypeElementImpl(override val type: JKType) : JKTypeElement, JKElementBase()
|
||||
|
||||
@@ -63,24 +63,21 @@ sealed class JKKtQualifierImpl : JKQualifier, JKElementBase() {
|
||||
|
||||
class JKKtCallExpressionImpl(
|
||||
override val identifier: JKMethodSymbol,
|
||||
override val arguments: JKExpressionList
|
||||
) : JKKtMethodCallExpression, JKElementBase() {
|
||||
arguments: JKExpressionList
|
||||
) : JKKtMethodCallExpression, JKBranchElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtMethodCallExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
arguments.accept(visitor, data)
|
||||
}
|
||||
override var arguments: JKExpressionList by child(arguments)
|
||||
}
|
||||
|
||||
class JKKtFieldAccessExpressionImpl(override val identifier: JKFieldSymbol) : JKKtFieldAccessExpression, JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtFieldAccessExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: JKVisitor<Unit, D>, data: D) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class JKKtLiteralExpressionImpl(override val literal: String, override val type: JKLiteralExpression.LiteralType) : JKKtLiteralExpression,
|
||||
class JKKtLiteralExpressionImpl(
|
||||
override val literal: String,
|
||||
override val type: JKLiteralExpression.LiteralType
|
||||
) : JKKtLiteralExpression,
|
||||
JKElementBase() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtLiteralExpression(this, data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user