Java to Kotlin converter: minor code refactoring

This commit is contained in:
Valentin Kipyatkov
2014-06-24 14:31:48 +04:00
parent a99f6f3774
commit 73ba1af779
+14 -7
View File
@@ -286,25 +286,32 @@ public class Converter private(val project: Project, val settings: ConverterSett
convertElement(field.getArgumentList()))
}
else {
val initializer = field.getInitializer()
val convertedType = typeConverter.convertVariableType(field)
val isVal = isVal(field)
val omitType = !settings.specifyFieldTypeByDefault &&
initializer != null &&
(modifiers.isPrivate && (isVal || convertedType == typeConverter.convertExpressionType(initializer)) ||
modifiers.isInternal && convertedType == typeConverter.convertExpressionType(initializer))
Field(name,
annotations,
modifiers,
convertedType,
convertExpression(initializer, field.getType()),
convertExpression(field.getInitializer(), field.getType()),
isVal,
!omitType,
shouldDeclareType(field, isVal, convertedType),
field.hasWriteAccesses(field.getContainingClass()))
}
return converted.assignPrototype(field)
}
private fun shouldDeclareType(field: PsiField, isVal: Boolean, convertedType: Type): Boolean {
if (settings.specifyFieldTypeByDefault) return true
val initializer = field.getInitializer() ?: return true
fun typeMatches() = convertedType == typeConverter.convertExpressionType(initializer)
return if (field.hasModifierProperty(PsiModifier.PRIVATE))
!isVal && !typeMatches()
else if (field.hasModifierProperty(PsiModifier.PACKAGE_LOCAL))
!typeMatches()
else
true
}
private fun isVal(field: PsiField): Boolean {
if (field.hasModifierProperty(PsiModifier.FINAL)) return true
if (!field.hasModifierProperty(PsiModifier.PRIVATE)) return false