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 returnType = convertType(method.getReturnType(), method.isAnnotatedAsNotNull())
val modifiers = HashSet(convertModifierList(method.getModifierList())) val modifiers = HashSet(convertModifierList(method.getModifierList()))
if (isOverride(method)) {
modifiers.add(Modifier.OVERRIDE)
}
val containingClass = method.getContainingClass() val containingClass = method.getContainingClass()
if (containingClass != null && containingClass.isInterface()) { if (containingClass != null && containingClass.isInterface()) {
modifiers.remove(Modifier.ABSTRACT) modifiers.remove(Modifier.ABSTRACT)
} }
if (containingClass != null && (containingClass.hasModifierProperty(PsiModifier.FINAL) || containingClass.isEnum())) {
modifiers.add(Modifier.FINAL)
}
if (isNotOpenMethod(method)) { if (settings.openByDefault &&
modifiers.add(Modifier.NOT_OPEN) !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) val comments = getComments(method)
@@ -55,17 +55,6 @@ fun Converter.isOverride(method: PsiMethod): Boolean {
return false 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 { fun directlyOverridesMethodFromObject(method: PsiMethod): Boolean {
var superSignatures = method.getHierarchicalMethodSignature().getSuperSignatures() var superSignatures = method.getHierarchicalMethodSignature().getSuperSignatures()
if (superSignatures.size() == 1) { if (superSignatures.size() == 1) {
@@ -46,18 +46,10 @@ open class Function(
resultingModifiers.add(Modifier.ABSTRACT) resultingModifiers.add(Modifier.ABSTRACT)
} }
if (converter.settings.openByDefault && if (modifiers.contains(Modifier.OPEN)) {
!modifiers.contains(Modifier.ABSTRACT) &&
!isOverride &&
!modifiers.contains(Modifier.FINAL) &&
!modifiers.contains(Modifier.PRIVATE)) {
resultingModifiers.add(Modifier.OPEN) resultingModifiers.add(Modifier.OPEN)
} }
if (modifiers.contains(Modifier.NOT_OPEN)) {
resultingModifiers.remove(Modifier.OPEN)
}
return resultingModifiers.toKotlin() return resultingModifiers.toKotlin()
} }
@@ -30,13 +30,11 @@ enum class Modifier(val name: String) {
ABSTRACT: Modifier("abstract") ABSTRACT: Modifier("abstract")
FINAL: Modifier("final") FINAL: Modifier("final")
OPEN: Modifier("open") OPEN: Modifier("open")
NOT_OPEN: Modifier("not open") //TODO: drop it
OVERRIDE: Modifier("override") OVERRIDE: Modifier("override")
public fun toKotlin(): String? { public fun toKotlin(): String? {
return when(this) { return when(this) {
INTERNAL -> null INTERNAL -> null
NOT_OPEN -> throw IllegalArgumentException()
else -> name else -> name
} }
} }