Support multiple breakpoints at one line (especially for lambdas)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
LineBreakpoint created at ceAnonymousObjectCapturedInClosure.kt:7
|
||||
LineBreakpoint created at ceAnonymousObjectCapturedInClosure.kt:7 lambdaOrdinal = -1
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! ceAnonymousObjectCapturedInClosure.CeAnonymousObjectCapturedInClosureKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
ceAnonymousObjectCapturedInClosure.kt:7
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:9 lambdaOrdinal = -1
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:14 lambdaOrdinal = 0
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:19 lambdaOrdinal = 1
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:30
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:38 lambdaOrdinal = -1
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:43 lambdaOrdinal = 0
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:48 lambdaOrdinal = 1
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:62
|
||||
LineBreakpoint created at multipleBreakpointsAtLine.kt:67 lambdaOrdinal = 1
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! multipleBreakpointsAtLine.MultipleBreakpointsAtLineKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
multipleBreakpointsAtLine.kt:9
|
||||
multipleBreakpointsAtLine.kt:14
|
||||
Compile bytecode for it + 2
|
||||
multipleBreakpointsAtLine.kt:19
|
||||
Compile bytecode for it + 3
|
||||
multipleBreakpointsAtLine.kt:30
|
||||
multipleBreakpointsAtLine.kt:30
|
||||
Compile bytecode for it + 5
|
||||
multipleBreakpointsAtLine.kt:30
|
||||
Compile bytecode for it + 6
|
||||
multipleBreakpointsAtLine.kt:38
|
||||
multipleBreakpointsAtLine.kt:38
|
||||
multipleBreakpointsAtLine.kt:43
|
||||
Compile bytecode for it + 9
|
||||
multipleBreakpointsAtLine.kt:48
|
||||
Compile bytecode for it + 10
|
||||
multipleBreakpointsAtLine.kt:62
|
||||
multipleBreakpointsAtLine.kt:62
|
||||
Compile bytecode for it + 12
|
||||
multipleBreakpointsAtLine.kt:62
|
||||
multipleBreakpointsAtLine.kt:62
|
||||
Compile bytecode for it + 14
|
||||
multipleBreakpointsAtLine.kt:67
|
||||
Compile bytecode for it + 15
|
||||
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
|
||||
Process finished with exit code 0
|
||||
@@ -1,4 +1,4 @@
|
||||
LineBreakpoint created at severalFunLiterals.kt:6
|
||||
LineBreakpoint created at severalFunLiterals.kt:6 lambdaOrdinal = -1
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! severalFunLiterals.SeveralFunLiteralsKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
severalFunLiterals.kt:6
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
LineBreakpoint created at severalFunLiteralsInClass.kt:20
|
||||
LineBreakpoint created at severalFunLiteralsInClass.kt:20 lambdaOrdinal = -1
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! severalFunLiteralsInClass.SeveralFunLiteralsInClassKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
severalFunLiteralsInClass.kt:20
|
||||
|
||||
@@ -2,12 +2,14 @@ LineBreakpoint created at smartStepIntoInlinedFunLiteral.kt:6
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! smartStepIntoInlinedFunLiteral.SmartStepIntoInlinedFunLiteralKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
smartStepIntoInlinedFunLiteral.kt:6
|
||||
smartStepIntoInlinedFunLiteral.kt:9
|
||||
smartStepIntoInlinedFunLiteral.kt:10
|
||||
smartStepIntoInlinedFunLiteral.kt:13
|
||||
smartStepIntoInlinedFunLiteral.kt:14
|
||||
smartStepIntoInlinedFunLiteral.kt:11
|
||||
smartStepIntoInlinedFunLiteral.kt:12
|
||||
smartStepIntoInlinedFunLiteral.kt:17
|
||||
smartStepIntoInlinedFunLiteral.kt:18
|
||||
smartStepIntoInlinedFunLiteral.kt:20
|
||||
smartStepIntoInlinedFunLiteral.kt:24
|
||||
smartStepIntoInlinedFunLiteral.kt:26
|
||||
smartStepIntoInlinedFunLiteral.kt:32
|
||||
smartStepIntoInlinedFunLiteral.kt:32
|
||||
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
|
||||
Process finished with exit code 0
|
||||
|
||||
+7
-5
@@ -2,12 +2,14 @@ LineBreakpoint created at smartStepIntoInlinedFunctionalExpression.kt:6
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! smartStepIntoInlinedFunctionalExpression.SmartStepIntoInlinedFunctionalExpressionKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
smartStepIntoInlinedFunctionalExpression.kt:6
|
||||
smartStepIntoInlinedFunctionalExpression.kt:9
|
||||
smartStepIntoInlinedFunctionalExpression.kt:10
|
||||
smartStepIntoInlinedFunctionalExpression.kt:13
|
||||
smartStepIntoInlinedFunctionalExpression.kt:14
|
||||
smartStepIntoInlinedFunctionalExpression.kt:11
|
||||
smartStepIntoInlinedFunctionalExpression.kt:12
|
||||
smartStepIntoInlinedFunctionalExpression.kt:17
|
||||
smartStepIntoInlinedFunctionalExpression.kt:18
|
||||
smartStepIntoInlinedFunctionalExpression.kt:20
|
||||
smartStepIntoInlinedFunctionalExpression.kt:24
|
||||
smartStepIntoInlinedFunctionalExpression.kt:26
|
||||
smartStepIntoInlinedFunctionalExpression.kt:31
|
||||
smartStepIntoInlinedFunctionalExpression.kt:31
|
||||
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
|
||||
Process finished with exit code 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
LineBreakpoint created at twoLambdasOnOneLineFirst.kt:9
|
||||
LineBreakpoint created at twoLambdasOnOneLineFirst.kt:9 lambdaOrdinal = -1
|
||||
!JDK_HOME!\bin\java -agentlib:jdwp=transport=dt_socket,address=!HOST_NAME!:!HOST_PORT!,suspend=y,server=n -Dfile.encoding=!FILE_ENCODING! -classpath !OUTPUT_PATH!;!KOTLIN_RUNTIME!;!CUSTOM_LIBRARY!;!RT_JAR! twoLambdasOnOneLineFirst.TwoLambdasOnOneLineFirstKt
|
||||
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
|
||||
twoLambdasOnOneLineFirst.kt:9
|
||||
|
||||
Vendored
+82
@@ -0,0 +1,82 @@
|
||||
package multipleBreakpointsAtLine
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val a = A()
|
||||
|
||||
// EXPRESSION: it + 1
|
||||
// RESULT: Unresolved reference: it
|
||||
//Breakpoint! (-1)
|
||||
a.foo(1) { 1 }.foo(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 2
|
||||
// RESULT: 3: I
|
||||
//Breakpoint! (0)
|
||||
a.foo(1) { 1 }.foo(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 3
|
||||
// RESULT: 5: I
|
||||
//Breakpoint! (1)
|
||||
a.foo(1) { 1 }.foo(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 4
|
||||
// RESULT: Unresolved reference: it
|
||||
|
||||
// EXPRESSION: it + 5
|
||||
// RESULT: 6: I
|
||||
|
||||
// EXPRESSION: it + 6
|
||||
// RESULT: 8: I
|
||||
//Breakpoint!
|
||||
a.foo(1) { 1 }.foo(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 7
|
||||
// RESULT: Unresolved reference: it
|
||||
|
||||
// EXPRESSION: it + 8
|
||||
// RESULT: Unresolved reference: it
|
||||
//Breakpoint! (-1)
|
||||
a.bar(1) { 1 }.bar(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 9
|
||||
// RESULT: 10: I
|
||||
//Breakpoint! (0)
|
||||
a.bar(1) { 1 }.bar(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 10
|
||||
// RESULT: 12: I
|
||||
//Breakpoint! (1)
|
||||
a.bar(1) { 1 }.bar(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 11
|
||||
// RESULT: Unresolved reference: it
|
||||
|
||||
// EXPRESSION: it + 12
|
||||
// RESULT: 13: I
|
||||
|
||||
// EXPRESSION: it + 13
|
||||
// RESULT: Unresolved reference: it
|
||||
|
||||
// EXPRESSION: it + 14
|
||||
// RESULT: 16: I
|
||||
//Breakpoint!
|
||||
a.bar(1) { 1 }.bar(2) { 1 }
|
||||
|
||||
// EXPRESSION: it + 15
|
||||
// RESULT: 17: I
|
||||
//Breakpoint! (1)
|
||||
a.bar(1) { 1 }.bar(2) { 1 + 1
|
||||
1 + 1
|
||||
}
|
||||
}
|
||||
|
||||
class A {
|
||||
fun foo(i: Int, f: (i: Int) -> Int): A {
|
||||
f(i)
|
||||
return this
|
||||
}
|
||||
|
||||
inline fun bar(i: Int, f: (i: Int) -> Int): A {
|
||||
f(i)
|
||||
return this
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -3,7 +3,7 @@ package ceAnonymousObjectCapturedInClosure
|
||||
fun main(args: Array<String>) {
|
||||
val localObject = object { fun test() = 1 }
|
||||
var localObjectVar = object { fun test() = 1 }
|
||||
//Breakpoint!
|
||||
//Breakpoint! (-1)
|
||||
lambda { localObjectVar.test() }
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -5,7 +5,7 @@ fun main(args: Array<String>) {
|
||||
// EXPRESSION: it
|
||||
// RESULT: 1: I
|
||||
// STEP_INTO: 2
|
||||
//Breakpoint!
|
||||
//Breakpoint! (-1)
|
||||
a.foo { a }.foo { a }
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package severalFunLiterals
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val myClass = MyClass()
|
||||
//Breakpoint!
|
||||
//Breakpoint! (-1)
|
||||
myClass.f1 { test() }.f2 {
|
||||
test()
|
||||
}
|
||||
@@ -22,4 +22,4 @@ class MyClass {
|
||||
|
||||
fun test() {}
|
||||
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ class MyClass {
|
||||
}
|
||||
|
||||
fun inClass() {
|
||||
//Breakpoint!
|
||||
//Breakpoint! (-1)
|
||||
f1 { test() }.f2 {
|
||||
test()
|
||||
}
|
||||
@@ -25,4 +25,4 @@ class MyClass {
|
||||
|
||||
fun test() {}
|
||||
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
|
||||
+12
-8
@@ -5,20 +5,31 @@ fun main(args: Array<String>) {
|
||||
//Breakpoint!
|
||||
val myClass = MyClass()
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// smart step into f2.invoke(), one-line lambda
|
||||
myClass.f1 { test() }
|
||||
.f2 { test() }
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 2
|
||||
// smart step into map.invoke(), multiline lambda
|
||||
array.map {
|
||||
it *2
|
||||
}
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// smart step into filter.invoke()
|
||||
array.map { it * 2 }
|
||||
.filter {
|
||||
it > 2
|
||||
}
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// smart step into f2.invoke(), one-line lambda
|
||||
myClass.f1 { test() }.f2 { test() }
|
||||
}
|
||||
|
||||
class MyClass {
|
||||
@@ -35,11 +46,4 @@ class MyClass {
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {}
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 2
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
fun test() {}
|
||||
Vendored
+18
-8
@@ -5,20 +5,32 @@ fun main(args: Array<String>) {
|
||||
//Breakpoint!
|
||||
val myClass = MyClass()
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// smart step into f2.invoke(), one-line lambda
|
||||
myClass.f1(fun () { test() })
|
||||
.f2(fun () { test() })
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 2
|
||||
// smart step into map.invoke(), multiline lambda
|
||||
array.map(fun (it): Int {
|
||||
return it * 2
|
||||
})
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// smart step into filter.invoke()
|
||||
array.map(fun (it): Int { return it * 2 })
|
||||
.filter(fun (it): Boolean {
|
||||
return it > 2
|
||||
})
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 2
|
||||
myClass.f3(fun () = myClass.f3 {
|
||||
println()
|
||||
})
|
||||
}
|
||||
|
||||
class MyClass {
|
||||
@@ -33,13 +45,11 @@ class MyClass {
|
||||
f1Param()
|
||||
return this
|
||||
}
|
||||
|
||||
inline fun f3(f1Param: () -> Unit): Unit {
|
||||
test()
|
||||
f1Param()
|
||||
}
|
||||
}
|
||||
|
||||
fun test() {}
|
||||
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 2
|
||||
// STEP_OVER: 1
|
||||
// SMART_STEP_INTO_BY_INDEX: 4
|
||||
fun test() {}
|
||||
Reference in New Issue
Block a user