Java to Kotlin conversion: dropped "NOT_OPEN" pseudo-modifier

This commit is contained in:
Valentin Kipyatkov
2014-06-03 15:04:37 +04:00
parent 66a83a4322
commit 6604af0bdf
4 changed files with 14 additions and 27 deletions
+13 -5
View File
@@ -258,17 +258,25 @@ public class Converter(val project: Project, val settings: ConverterSettings) {
val returnType = convertType(method.getReturnType(), method.isAnnotatedAsNotNull())
val modifiers = HashSet(convertModifierList(method.getModifierList()))
if (isOverride(method)) {
modifiers.add(Modifier.OVERRIDE)
}
val containingClass = method.getContainingClass()
if (containingClass != null && containingClass.isInterface()) {
modifiers.remove(Modifier.ABSTRACT)
}
if (containingClass != null && (containingClass.hasModifierProperty(PsiModifier.FINAL) || containingClass.isEnum())) {
modifiers.add(Modifier.FINAL)
}
if (isNotOpenMethod(method)) {
modifiers.add(Modifier.NOT_OPEN)
if (settings.openByDefault &&
!modifiers.contains(Modifier.ABSTRACT) &&
!modifiers.contains(Modifier.FINAL) &&
!modifiers.contains(Modifier.PRIVATE)) {
modifiers.add(Modifier.OPEN)
}
if (isOverride(method)) {
modifiers.add(Modifier.OVERRIDE)
modifiers.remove(Modifier.OPEN)
}
val comments = getComments(method)
@@ -55,17 +55,6 @@ fun Converter.isOverride(method: PsiMethod): Boolean {
return false
}
fun isNotOpenMethod(method: PsiMethod): Boolean {
val parent = method.getParent()
if (parent is PsiClass) {
val parentModifierList = parent.getModifierList()
if ((parentModifierList != null && parentModifierList.hasExplicitModifier(PsiModifier.FINAL)) || parent.isEnum()) {
return true
}
}
return false
}
fun directlyOverridesMethodFromObject(method: PsiMethod): Boolean {
var superSignatures = method.getHierarchicalMethodSignature().getSuperSignatures()
if (superSignatures.size() == 1) {
@@ -46,18 +46,10 @@ open class Function(
resultingModifiers.add(Modifier.ABSTRACT)
}
if (converter.settings.openByDefault &&
!modifiers.contains(Modifier.ABSTRACT) &&
!isOverride &&
!modifiers.contains(Modifier.FINAL) &&
!modifiers.contains(Modifier.PRIVATE)) {
if (modifiers.contains(Modifier.OPEN)) {
resultingModifiers.add(Modifier.OPEN)
}
if (modifiers.contains(Modifier.NOT_OPEN)) {
resultingModifiers.remove(Modifier.OPEN)
}
return resultingModifiers.toKotlin()
}
@@ -30,13 +30,11 @@ enum class Modifier(val name: String) {
ABSTRACT: Modifier("abstract")
FINAL: Modifier("final")
OPEN: Modifier("open")
NOT_OPEN: Modifier("not open") //TODO: drop it
OVERRIDE: Modifier("override")
public fun toKotlin(): String? {
return when(this) {
INTERNAL -> null
NOT_OPEN -> throw IllegalArgumentException()
else -> name
}
}