Do not generate no-arg constructor for sealed ultra-light class

This commit is contained in:
Denis Zharkov
2018-12-05 17:44:44 +03:00
parent 2f8b214e76
commit b16bfad079
2 changed files with 5 additions and 0 deletions
@@ -377,6 +377,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
private fun shouldGenerateNoArgOverload(primary: KtPrimaryConstructor): Boolean {
return !primary.hasModifier(PRIVATE_KEYWORD) &&
!classOrObject.hasModifier(INNER_KEYWORD) && !isEnum &&
!classOrObject.hasModifier(SEALED_KEYWORD) &&
primary.valueParameters.isNotEmpty() &&
primary.valueParameters.all { it.defaultValue != null } &&
classOrObject.allConstructors.none { it.valueParameters.isEmpty() }
@@ -11,3 +11,7 @@ class Outer {
inner class Inner(x: Int = 1, y: String = "")
class Nested(x: Int = 1, y: String = "")
}
sealed class A(val x: String? = null) {
class C : A()
}