Files
kotlin-fork/plugins/noarg/noarg-cli/testData/box/kt18245.kt
T
Yan Zhulanow 187ca71dc6 NoArg: Fix compatibility with sealed classes with non-zero-parameter constructors (KT-19687)
Also check if a class has a sealed super class properly.
2017-09-06 17:40:20 +03:00

45 lines
906 B
Kotlin
Vendored

// WITH_RUNTIME
annotation class NoArg
sealed class Test {
abstract val test: String
@NoArg
data class Test1(override val test: String) : Test()
@NoArg
data class Test2(override val test: String) : Test()
}
fun box(): String {
Test::class.java.declaredConstructors.forEach { it.isAccessible = true }
Test.Test1::class.java.declaredConstructors.forEach { it.isAccessible = true }
val instance = Test.Test1::class.java.newInstance() // Error
Demo.Foo::class.java.newInstance()
Demo.Free::class.java.newInstance()
A.Free::class.java.newInstance()
return "OK"
}
@NoArg
sealed class Demo(val name : String) {
@NoArg
class Free(name: String)
@NoArg
class Foo(name: String) : Demo(name)
@NoArg
class Bar(name: String) : Demo(name)
}
@NoArg
abstract class A(val name: String) {
@NoArg
class Free(name: String) : A(name)
}