Я думаю, что REPL запускает код kotlin как скрипт, который не компилируется полностью.
При запуске test.kt
:
class A(val x: Int = 1, val y: Int = 2)
fun main(args: Array<String>) {
for (c in A::class.java.constructors) println(c)
}
с
kotlinc test.kt -include-runtime -d test.jar
kotlin test.jar
он правильно печатает
public A(int,int,int,kotlin.jvm.internal.DefaultConstructorMarker)
public A()
public A(int,int)
При работе test.kts
:
class A(val x: Int = 1, val y: Int = 2)
for (c in A::class.java.constructors) println(c)
с
kotlinc -script test.kts
он печатает
public Test$A(int,int,int,kotlin.jvm.internal.DefaultConstructorMarker)
public Test$A(int,int)
то жекак REPL.
Поэтому можно с уверенностью сказать, что он компилирует с конструктором без параметров.