708bfdbd5f
Before this fix line numbers for function call arguments were not generated, so if argument was on another line than function call it was impossible to stop on argument line during debugging. Now line number for each argument is generated if necessary (another line than function call line). #KT-17144 Fixed
111 lines
2.6 KiB
Kotlin
Vendored
111 lines
2.6 KiB
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// WITH_RUNTIME
|
|
// FULL_JDK
|
|
package test
|
|
fun testProperLineNumberAfterInline(): String {
|
|
var exceptionCount = 0;
|
|
try {
|
|
fail(inlineFun(),
|
|
"12")
|
|
}
|
|
catch(e: AssertionError) {
|
|
val entry = (e as java.lang.Throwable).getStackTrace()!!.get(1)
|
|
val actual = "${entry.getFileName()}:${entry.getLineNumber()}"
|
|
if ("simpleCallWithParams.kt:8" != actual) {
|
|
return "fail 1: ${actual}"
|
|
}
|
|
exceptionCount++
|
|
}
|
|
|
|
try {
|
|
fail("12",
|
|
inlineFun())
|
|
}
|
|
catch(e: AssertionError) {
|
|
val entry = e.stackTrace!![1]
|
|
val actual = "${entry.getFileName()}:${entry.getLineNumber()}"
|
|
if ("simpleCallWithParams.kt:21" != actual) {
|
|
return "fail 2: ${actual}"
|
|
}
|
|
exceptionCount++
|
|
}
|
|
|
|
return if (exceptionCount == 2) "OK" else "fail"
|
|
}
|
|
|
|
fun testProperLineForOtherParameters(): String {
|
|
var exceptionCount = 0;
|
|
try {
|
|
fail(inlineFun(),
|
|
fail())
|
|
}
|
|
catch(e: AssertionError) {
|
|
val entry = e.stackTrace!![1]
|
|
val actual = "${entry.getFileName()}:${entry.getLineNumber()}"
|
|
if ("simpleCallWithParams.kt:40" != actual) {
|
|
return "fail 3: ${actual}"
|
|
}
|
|
exceptionCount++
|
|
|
|
}
|
|
|
|
try {
|
|
fail(fail(),
|
|
inlineFun())
|
|
}
|
|
catch(e: AssertionError) {
|
|
val entry = e.stackTrace!![1]
|
|
val actual = "${entry.getFileName()}:${entry.getLineNumber()}"
|
|
if ("simpleCallWithParams.kt:53" != actual) {
|
|
return "fail 4: ${actual}"
|
|
}
|
|
exceptionCount++
|
|
}
|
|
|
|
try {
|
|
fail(fail(), inlineFun())
|
|
}
|
|
catch(e: AssertionError) {
|
|
val entry = e.stackTrace!![1]
|
|
val actual = "${entry.getFileName()}:${entry.getLineNumber()}"
|
|
if ("simpleCallWithParams.kt:66" != actual) {
|
|
return "fail 5: ${actual}"
|
|
}
|
|
exceptionCount++
|
|
}
|
|
|
|
try {
|
|
fail(fail(), inlineFun())
|
|
}
|
|
catch(e: AssertionError) {
|
|
val entry = e.stackTrace!![1]
|
|
val actual = "${entry.getFileName()}:${entry.getLineNumber()}"
|
|
if ("simpleCallWithParams.kt:78" != actual) {
|
|
return "fail 6: ${actual}"
|
|
}
|
|
exceptionCount++
|
|
}
|
|
|
|
return if (exceptionCount == 4) "OK" else "fail"
|
|
}
|
|
|
|
|
|
fun box(): String {
|
|
val res = testProperLineNumberAfterInline()
|
|
if (res != "OK") return "$res"
|
|
|
|
return testProperLineForOtherParameters()
|
|
}
|
|
|
|
public fun fail(p1: String, p2: String) {
|
|
throw AssertionError("fail")
|
|
}
|
|
|
|
inline fun inlineFun(): String {
|
|
return "123"
|
|
}
|
|
|
|
fun fail(): String {
|
|
throw AssertionError("fail")
|
|
}
|