Java to Kotlin converter: minor code refactoring
This commit is contained in:
@@ -125,21 +125,7 @@ public class Converter private(val project: Project, val settings: ConverterSett
|
|||||||
val primaryConstructor = convertedMembers.values().filterIsInstance(javaClass<PrimaryConstructor>()).firstOrNull()
|
val primaryConstructor = convertedMembers.values().filterIsInstance(javaClass<PrimaryConstructor>()).firstOrNull()
|
||||||
val secondaryConstructors = convertedMembers.values().filterIsInstance(javaClass<SecondaryConstructor>())
|
val secondaryConstructors = convertedMembers.values().filterIsInstance(javaClass<SecondaryConstructor>())
|
||||||
|
|
||||||
// do not convert private static methods into class object if possible
|
val useClassObject = shouldGenerateClassObject(psiClass, convertedMembers)
|
||||||
val useClassObject = if (psiClass.isEnum()) {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
val members = convertedMembers.keySet().filter { it !is PsiMethod || !it.isConstructor() }
|
|
||||||
val classObjectMembers = members.filter { it !is PsiClass && it.hasModifierProperty(PsiModifier.STATIC) }
|
|
||||||
val nestedClasses = members.filterIsInstance(javaClass<PsiClass>()).filter { it.hasModifierProperty(PsiModifier.STATIC) }
|
|
||||||
if (classObjectMembers.all { it is PsiMethod && it.hasModifierProperty(PsiModifier.PRIVATE) }) {
|
|
||||||
nestedClasses.any { nestedClass -> classObjectMembers.any { findMethodCalls(it as PsiMethod, nestedClass).isNotEmpty() } }
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val normalMembers = ArrayList<Member>()
|
val normalMembers = ArrayList<Member>()
|
||||||
val classObjectMembers = ArrayList<Member>()
|
val classObjectMembers = ArrayList<Member>()
|
||||||
@@ -158,6 +144,20 @@ public class Converter private(val project: Project, val settings: ConverterSett
|
|||||||
return ClassBody(primaryConstructor, secondaryConstructors, normalMembers, classObjectMembers, lBrace, rBrace)
|
return ClassBody(primaryConstructor, secondaryConstructors, normalMembers, classObjectMembers, lBrace, rBrace)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// do not convert private static methods into class object if possible
|
||||||
|
private fun shouldGenerateClassObject(psiClass: PsiClass, convertedMembers: Map<PsiMember, Member>): Boolean {
|
||||||
|
if (psiClass.isEnum()) return false
|
||||||
|
val members = convertedMembers.keySet().filter { it !is PsiMethod || !it.isConstructor() }
|
||||||
|
val classObjectMembers = members.filter { it !is PsiClass && it.hasModifierProperty(PsiModifier.STATIC) }
|
||||||
|
val nestedClasses = members.filterIsInstance(javaClass<PsiClass>()).filter { it.hasModifierProperty(PsiModifier.STATIC) }
|
||||||
|
if (classObjectMembers.all { it is PsiMethod && it.hasModifierProperty(PsiModifier.PRIVATE) }) {
|
||||||
|
return nestedClasses.any { nestedClass -> classObjectMembers.any { findMethodCalls(it as PsiMethod, nestedClass).isNotEmpty() } }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun convertMember(member: PsiMember, membersToRemove: MutableSet<PsiMember>): Member = when (member) {
|
private fun convertMember(member: PsiMember, membersToRemove: MutableSet<PsiMember>): Member = when (member) {
|
||||||
is PsiMethod -> convertMethod(member, membersToRemove)
|
is PsiMethod -> convertMethod(member, membersToRemove)
|
||||||
is PsiField -> convertField(member)
|
is PsiField -> convertField(member)
|
||||||
|
|||||||
Reference in New Issue
Block a user