|
16 | 16 |
|
17 | 17 | package org.jetbrains.kotlin.j2k
|
18 | 18 |
|
19 |
| -import com.intellij.psi.PsiClass |
20 |
| -import java.util.HashSet |
21 |
| -import com.intellij.psi.PsiMember |
22 |
| -import java.util.LinkedHashMap |
23 |
| -import com.intellij.psi.PsiAnnotationMethod |
24 |
| -import java.util.ArrayList |
25 |
| -import com.intellij.psi.PsiModifier |
26 |
| -import com.intellij.psi.PsiMethod |
| 19 | +import com.intellij.openapi.util.text.StringUtil |
| 20 | +import com.intellij.psi.* |
27 | 21 | import org.jetbrains.kotlin.j2k.ast.*
|
28 | 22 | import org.jetbrains.kotlin.j2k.ast.Class
|
29 |
| -import com.intellij.psi.PsiField |
30 |
| -import com.intellij.psi.PsiReturnStatement |
31 |
| -import com.intellij.psi.PsiReferenceExpression |
32 |
| -import com.intellij.openapi.util.text.StringUtil |
33 |
| -import java.util.HashMap |
34 |
| -import com.intellij.psi.PsiClassInitializer |
35 |
| -import com.intellij.psi.PsiExpressionStatement |
36 |
| -import com.intellij.psi.PsiAssignmentExpression |
37 |
| -import com.intellij.psi.PsiExpression |
38 |
| -import com.intellij.psi.JavaTokenType |
39 | 23 | import org.jetbrains.kotlin.j2k.usageProcessing.AccessorToPropertyProcessing
|
| 24 | +import java.util.ArrayList |
| 25 | +import java.util.HashMap |
| 26 | +import java.util.HashSet |
| 27 | +import java.util.LinkedHashMap |
40 | 28 |
|
41 | 29 | class FieldCorrectionInfo(val name: String, val access: Modifier?, val setterAccess: Modifier?) {
|
42 | 30 | val identifier = Identifier(name).assignNoPrototype()
|
@@ -97,7 +85,7 @@ class ClassBodyConverter(private val psiClass: PsiClass,
|
97 | 85 | primaryConstructorSignature = member.createSignature(converter)
|
98 | 86 | members.add(member.initializer())
|
99 | 87 | }
|
100 |
| - else if (useCompanionObject && member !is Class && psiMember.hasModifierProperty(PsiModifier.STATIC)) { |
| 88 | + else if (useCompanionObject && member !is Class && psiMember !is PsiEnumConstant && psiMember.hasModifierProperty(PsiModifier.STATIC)) { |
101 | 89 | companionObjectMembers.add(member)
|
102 | 90 | }
|
103 | 91 | else {
|
@@ -131,10 +119,8 @@ class ClassBodyConverter(private val psiClass: PsiClass,
|
131 | 119 |
|
132 | 120 | // do not convert private static methods into companion object if possible
|
133 | 121 | private fun shouldGenerateCompanionObject(convertedMembers: Map<PsiMember, Member>): Boolean {
|
134 |
| - if (psiClass.isEnum()) return false |
135 |
| - |
136 | 122 | val members = convertedMembers.keySet().filter { !it.isConstructor() }
|
137 |
| - val companionObjectMembers = members.filter { it !is PsiClass && it.hasModifierProperty(PsiModifier.STATIC) } |
| 123 | + val companionObjectMembers = members.filter { it !is PsiClass && it !is PsiEnumConstant && it.hasModifierProperty(PsiModifier.STATIC) } |
138 | 124 | val nestedClasses = members.filterIsInstance<PsiClass>().filter { it.hasModifierProperty(PsiModifier.STATIC) }
|
139 | 125 | if (companionObjectMembers.all { it is PsiMethod && it.hasModifierProperty(PsiModifier.PRIVATE) }) {
|
140 | 126 | return nestedClasses.any { nestedClass -> companionObjectMembers.any { converter.referenceSearcher.findMethodCalls(it as PsiMethod, nestedClass).isNotEmpty() } }
|
|
0 commit comments