From 763ea3480daad744a9ef8a216ff1e032dac9552c Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 18 Dec 2018 14:28:18 +0300 Subject: [PATCH] New J2K: Add support of enum consts initializingClass --- j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 1 + j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt | 3 +++ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt | 2 ++ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt | 1 + 4 files changed, 7 insertions(+) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index f5ec6f8be19..04a92849973 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -321,6 +321,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { JKEnumConstantImpl( JKNameIdentifierImpl(name), with(expressionTreeMapper) { argumentList.toJK() }, + initializingClass?.createClassBody() ?: JKEmptyClassBodyImpl(), JKTypeElementImpl(JKClassTypeImpl(symbolProvider.provideDirectSymbol(containingClass!!) as JKClassSymbol, emptyList())) ) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 6c635e7dd11..bdd60880ff9 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -253,6 +253,9 @@ class NewCodeBuilder { enumConstant.arguments.accept(this) } } + if (enumConstant.body !is JKEmptyClassBody) { + enumConstant.body.accept(this) + } } override fun visitKtInitDeclaration(ktInitDeclaration: JKKtInitDeclaration) { 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 615ff820c8f..51580cbab3c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -460,10 +460,12 @@ class JKTypeParameterTypeImpl( class JKEnumConstantImpl( name: JKNameIdentifier, arguments: JKExpressionList, + body: JKClassBody, type: JKTypeElement ) : JKEnumConstant, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { override var name: JKNameIdentifier by child(name) override val arguments: JKExpressionList by child(arguments) + override val body: JKClassBody by child(body) override var type: JKTypeElement by child(type) override var initializer: JKExpression by child(JKStubExpressionImpl()) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 82fb943b95c..20a5d73043e 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -383,6 +383,7 @@ interface JKTypeParameterListOwner : JKTreeElement { interface JKEnumConstant : JKVariable { val arguments: JKExpressionList + val body: JKClassBody } interface JKForInStatement : JKStatement {