Generate line numbers for function call parameters
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
This commit is contained in:
@@ -51,21 +51,6 @@ public class CallBasedArgumentGenerator extends ArgumentGenerator {
|
||||
"Value parameters and their types mismatch in sizes: " + valueParameters.size() + " != " + valueParameterTypes.size();
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public DefaultCallArgs generate(
|
||||
@NotNull List<? extends ResolvedValueArgument> valueArgumentsByIndex,
|
||||
@NotNull List<? extends ResolvedValueArgument> valueArgs,
|
||||
@Nullable CallableDescriptor calleeDescriptor
|
||||
) {
|
||||
boolean shouldMarkLineNumbers = this.codegen.isShouldMarkLineNumbers();
|
||||
this.codegen.setShouldMarkLineNumbers(false);
|
||||
DefaultCallArgs defaultArgs = super.generate(valueArgumentsByIndex, valueArgs, calleeDescriptor);
|
||||
this.codegen.setShouldMarkLineNumbers(shouldMarkLineNumbers);
|
||||
return defaultArgs;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void generateExpression(int i, @NotNull ExpressionValueArgument argument) {
|
||||
ValueParameterDescriptor parameter = valueParameters.get(i);
|
||||
|
||||
+13
-13
@@ -5,8 +5,8 @@ package test
|
||||
fun testProperLineNumberAfterInline(): String {
|
||||
var exceptionCount = 0;
|
||||
try {
|
||||
checkEquals(test(),
|
||||
"12")
|
||||
fail(inlineFun(),
|
||||
"12")
|
||||
}
|
||||
catch(e: AssertionError) {
|
||||
val entry = (e as java.lang.Throwable).getStackTrace()!!.get(1)
|
||||
@@ -18,8 +18,8 @@ fun testProperLineNumberAfterInline(): String {
|
||||
}
|
||||
|
||||
try {
|
||||
checkEquals("12",
|
||||
test())
|
||||
fail("12",
|
||||
inlineFun())
|
||||
}
|
||||
catch(e: AssertionError) {
|
||||
val entry = e.stackTrace!![1]
|
||||
@@ -36,13 +36,13 @@ fun testProperLineNumberAfterInline(): String {
|
||||
fun testProperLineForOtherParameters(): String {
|
||||
var exceptionCount = 0;
|
||||
try {
|
||||
checkEquals(test(),
|
||||
fail())
|
||||
fail(inlineFun(),
|
||||
fail())
|
||||
}
|
||||
catch(e: AssertionError) {
|
||||
val entry = e.stackTrace!![1]
|
||||
val actual = "${entry.getFileName()}:${entry.getLineNumber()}"
|
||||
if ("simpleCallWithParams.kt:39" != actual) {
|
||||
if ("simpleCallWithParams.kt:40" != actual) {
|
||||
return "fail 3: ${actual}"
|
||||
}
|
||||
exceptionCount++
|
||||
@@ -50,8 +50,8 @@ fun testProperLineForOtherParameters(): String {
|
||||
}
|
||||
|
||||
try {
|
||||
checkEquals(fail(),
|
||||
test())
|
||||
fail(fail(),
|
||||
inlineFun())
|
||||
}
|
||||
catch(e: AssertionError) {
|
||||
val entry = e.stackTrace!![1]
|
||||
@@ -63,7 +63,7 @@ fun testProperLineForOtherParameters(): String {
|
||||
}
|
||||
|
||||
try {
|
||||
checkEquals(fail(), test())
|
||||
fail(fail(), inlineFun())
|
||||
}
|
||||
catch(e: AssertionError) {
|
||||
val entry = e.stackTrace!![1]
|
||||
@@ -75,7 +75,7 @@ fun testProperLineForOtherParameters(): String {
|
||||
}
|
||||
|
||||
try {
|
||||
checkEquals(fail(), test())
|
||||
fail(fail(), inlineFun())
|
||||
}
|
||||
catch(e: AssertionError) {
|
||||
val entry = e.stackTrace!![1]
|
||||
@@ -97,11 +97,11 @@ fun box(): String {
|
||||
return testProperLineForOtherParameters()
|
||||
}
|
||||
|
||||
public fun checkEquals(p1: String, p2: String) {
|
||||
public fun fail(p1: String, p2: String) {
|
||||
throw AssertionError("fail")
|
||||
}
|
||||
|
||||
inline fun test(): String {
|
||||
inline fun inlineFun(): String {
|
||||
return "123"
|
||||
}
|
||||
|
||||
|
||||
@@ -14,4 +14,4 @@ fun foo() {
|
||||
|
||||
}
|
||||
|
||||
// 2 1 5 8 9 15
|
||||
// 2 1 5 8 9 +10 +11 10 9 15
|
||||
@@ -7,4 +7,4 @@ fun foo() {
|
||||
fun foo(i: Int) {
|
||||
}
|
||||
|
||||
// 2 5 8
|
||||
// 2 +3 2 5 8
|
||||
@@ -6,4 +6,4 @@ fun foo() {
|
||||
infix fun Int.foo(i: Int) {
|
||||
}
|
||||
|
||||
// 2 4 7
|
||||
// 2 3 2 4 7
|
||||
@@ -18,4 +18,4 @@ fun fail() : String {
|
||||
throw AssertionError("fail")
|
||||
}
|
||||
|
||||
// 2 22 2 5 23 5 7 10 14 18
|
||||
// 2 22 3 2 5 6 23 5 7 10 14 18
|
||||
@@ -16,4 +16,4 @@ fun fail() : String {
|
||||
throw AssertionError("fail")
|
||||
}
|
||||
|
||||
// 1 4 20 4 7 21 7 9 12 16
|
||||
// 1 4 20 5 4 7 8 21 7 9 12 16
|
||||
@@ -18,4 +18,4 @@ fun fail() : String {
|
||||
throw AssertionError("fail")
|
||||
}
|
||||
|
||||
// 2 22 2 23 5 24 5 25 7 10 14 18
|
||||
// 2 22 3 2 23 5 6 24 5 25 7 10 14 18
|
||||
@@ -0,0 +1,8 @@
|
||||
LineBreakpoint created at kt17144.kt:9
|
||||
Run Java
|
||||
Connected to the target VM
|
||||
kt17144.kt:9
|
||||
Disconnected from the target VM
|
||||
|
||||
Process finished with exit code 0
|
||||
foo
|
||||
@@ -0,0 +1,18 @@
|
||||
package kt17144
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val a = true
|
||||
1 + when (a) {
|
||||
true -> {
|
||||
println("foo")
|
||||
//Breakpoint!
|
||||
1
|
||||
}
|
||||
else -> {
|
||||
println("bar")
|
||||
2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//RESUME: 1
|
||||
@@ -1088,6 +1088,12 @@ public class KotlinSteppingTestGenerated extends AbstractKotlinSteppingTest {
|
||||
doCustomTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("kt17144.kt")
|
||||
public void testKt17144() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/custom/kt17144.kt");
|
||||
doCustomTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("kt17295.kt")
|
||||
public void testKt17295() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/debugger/tinyApp/src/stepping/custom/kt17295.kt");
|
||||
|
||||
Reference in New Issue
Block a user