Refactor sealed subclass to object: add tests, fix type parameter case

This commit is contained in:
Mikhail Glukhikh
2018-04-11 14:11:06 +03:00
parent df7968678a
commit e4275cc027
7 changed files with 70 additions and 0 deletions
@@ -38,6 +38,7 @@ class CanSealedSubClassBeObjectInspection : AbstractKotlinInspection() {
klass.getSubclasses()
.withEmptyConstructors()
.thatAreFinal()
.thatHasNoTypeParameters()
.thatHasNoInnerClasses()
.thatHasNoCompanionObjects()
.forEach { reportPossibleObject(it) }
@@ -74,6 +75,10 @@ class CanSealedSubClassBeObjectInspection : AbstractKotlinInspection() {
return filter { klass -> klass.getModalityFromDescriptor() == KtTokens.FINAL_KEYWORD }
}
private fun List<KtClass>.thatHasNoTypeParameters(): List<KtClass> {
return filter { klass -> klass.typeParameters.isEmpty() }
}
private fun List<KtClass>.thatHasNoInnerClasses(): List<KtClass> {
return filter { klass -> klass.hasNoInnerClass() }
}