// TODO: muted automatically, investigate should it be ran for JS or not // IGNORE_BACKEND: JS, NATIVE // WITH_REFLECT // FILE: J.java public interface J { @interface NoParams {} @interface OneDefault { String foo() default "foo"; } @interface OneDefaultValue { String value() default "value"; } @interface OneNonDefault { String foo(); } @interface OneNonDefaultValue { String value(); } @interface TwoParamsOneDefault { String string(); Class clazz() default Object.class; } @interface TwoParamsOneValueOneDefault { String value(); Class clazz() default Object.class; } @interface TwoNonDefaults { String string(); Class clazz(); } @interface ManyDefaults { int i() default 0; String s() default ""; double d() default 3.14; } } // FILE: K.kt import J.* import kotlin.reflect.KClass import kotlin.reflect.full.primaryConstructor import kotlin.test.assertEquals import kotlin.test.assertFails inline fun create(vararg args: Any?): T = T::class.constructors.single().call(*args) fun box(): String { create() assertFails { create() } assertFails { create("") } assertFails { create("", "") } assertFails { create() } create("") assertFails { create("", "") } assertFails { create() } assertFails { create("") } assertFails { create() } create("") assertFails { create() } assertFails { create("") } assertFails { create("", Any::class) } assertFails { create(Any::class, "") } assertFails { create() } assertFails { create("") } assertFails { create("", Any::class) } assertFails { create(Any::class, "") } assertFails { create("", Any::class) } assertFails { create(Any::class, "") } assertFails { create() } assertFails { create(42, "Fail", 2.72) } return "OK" }