Fix step over for inlined functions in Android Studio (KT-14374)

#KT-14374 Fixed
This commit is contained in:
Nikolay Krasko
2016-10-26 20:43:08 +03:00
parent f87779bfb0
commit 623ee316c0
28 changed files with 392 additions and 79 deletions
@@ -2,7 +2,6 @@ LineBreakpoint created at inlineInIfFalseDex.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! inlineInIfFalseDex.InlineInIfFalseDexKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
inlineInIfFalseDex.kt:6
inlineInIfFalseDex.kt:15
inlineInIfFalseDex.kt:9
inlineInIfFalseDex.kt:10
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
@@ -2,7 +2,6 @@ LineBreakpoint created at inlineInIfTrueDex.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! inlineInIfTrueDex.InlineInIfTrueDexKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
inlineInIfTrueDex.kt:6
inlineInIfTrueDex.kt:14
inlineInIfTrueDex.kt:7
inlineInIfTrueDex.kt:9
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
@@ -3,12 +3,8 @@ LineBreakpoint created at soInlineAnonymousFunctionArgumentDex.kt:5
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineAnonymousFunctionArgumentDex.kt:5
soInlineAnonymousFunctionArgumentDex.kt:7
soInlineAnonymousFunctionArgumentDex.kt:15
soInlineAnonymousFunctionArgumentDex.kt:8
soInlineAnonymousFunctionArgumentDex.kt:16
soInlineAnonymousFunctionArgumentDex.kt:15
soInlineAnonymousFunctionArgumentDex.kt:11
soInlineAnonymousFunctionArgumentDex.kt:16
soInlineAnonymousFunctionArgumentDex.kt:12
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -3,9 +3,7 @@ LineBreakpoint created at soInlineCallInLastStatementInInlineDex.kt:10
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineCallInLastStatementInInlineDex.kt:10
soInlineCallInLastStatementInInlineDex.kt:11
soInlineCallInLastStatementInInlineDex.kt:15
soInlineCallInLastStatementInInlineDex.kt:11
soInlineCallInLastStatementInInlineDex.kt:16
soInlineCallInLastStatementInInlineDex.kt:5
soInlineCallInLastStatementInInlineDex.kt:6
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
@@ -2,9 +2,8 @@ LineBreakpoint created at soInlineCallInLastStatementInInlineFunctionArgumentDex
!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! soInlineCallInLastStatementInInlineFunctionArgumentDex.SoInlineCallInLastStatementInInlineFunctionArgumentDexKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineCallInLastStatementInInlineFunctionArgumentDex.kt:7
soInlineCallInLastStatementInInlineFunctionArgumentDex.kt:17
soInlineCallInLastStatementInInlineFunctionArgumentDex.kt:18
soInlineCallInLastStatementInInlineFunctionArgumentDex.kt:14
soInlineCallInLastStatementInInlineFunctionArgumentDex.kt:8
soInlineCallInLastStatementInInlineFunctionArgumentDex.kt:9
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
+10
View File
@@ -0,0 +1,10 @@
LineBreakpoint created at soInlineFunDex.kt:7
!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! soInlineFunDex.SoInlineFunDexKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineFunDex.kt:7
soInlineFunDex.kt:9
soInlineFunDex.kt:11
soInlineFunDex.kt:12
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,10 @@
LineBreakpoint created at soInlineFunOnOneLineFor.kt:17
!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! soInlineFunOnOneLineFor.SoInlineFunOnOneLineForKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineFunOnOneLineFor.kt:17
soInlineFunOnOneLineFor.kt:18
soInlineFunOnOneLineFor.kt:8
soInlineFunOnOneLineFor.kt:9
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,10 @@
LineBreakpoint created at soInlineFunOnOneLineForDex.kt:17
!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! soInlineFunOnOneLineForDex.SoInlineFunOnOneLineForDexKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineFunOnOneLineForDex.kt:17
soInlineFunOnOneLineForDex.kt:18
soInlineFunOnOneLineForDex.kt:8
soInlineFunOnOneLineForDex.kt:9
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,10 @@
LineBreakpoint created at soInlineFunWithFor.kt:5
!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! soInlineFunWithFor.SoInlineFunWithForKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineFunWithFor.kt:5
soInlineFunWithFor.kt:7
soInlineFunWithFor.kt:9
soInlineFunWithFor.kt:10
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,10 @@
LineBreakpoint created at soInlineIterableFunDex.kt:5
!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! soInlineIterableFunDex.SoInlineIterableFunDexKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineIterableFunDex.kt:5
soInlineIterableFunDex.kt:7
soInlineIterableFunDex.kt:9
soInlineIterableFunDex.kt:10
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -0,0 +1,11 @@
LineBreakpoint created at soInlineLibFunDex.kt:5
!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! soInlineLibFunDex.SoInlineLibFunDexKt
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineLibFunDex.kt:5
soInlineLibFunDex.kt:7
soInlineLibFunDex.kt:9
soInlineLibFunDex.kt:10
soInlineLibFunDex.kt:12
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
Process finished with exit code 0
@@ -3,14 +3,8 @@ LineBreakpoint created at soInlineWhileConditionDex.kt:5
Connected to the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
soInlineWhileConditionDex.kt:5
soInlineWhileConditionDex.kt:7
soInlineWhileConditionDex.kt:18
soInlineWhileConditionDex.kt:7
soInlineWhileConditionDex.kt:8
soInlineWhileConditionDex.kt:7
soInlineWhileConditionDex.kt:18
soInlineWhileConditionDex.kt:7
soInlineWhileConditionDex.kt:12
soInlineWhileConditionDex.kt:18
soInlineWhileConditionDex.kt:12
soInlineWhileConditionDex.kt:15
Disconnected from the target VM, address: '!HOST_NAME!:PORT_NAME!', transport: 'socket'
@@ -3,10 +3,10 @@ package inlineInIfTrueDex
fun main(args: Array<String>) {
val bar = ""
//Breakpoint!
if (inlineCall { true }) {
foo()
if (inlineCall { true }) { // 1
foo() // 2
}
}
} // 3
fun foo() {}
@@ -2,14 +2,14 @@ package soInlineAnonymousFunctionArgumentDex
fun main(args: Array<String>) {
//Breakpoint!
val b = 1
val b = 1 // 1
foo(
fun (){ test(1) }
foo( // 2
fun (){ test(1) } //
)
foo(fun (){ test(1) })
}
foo(fun (){ test(1) }) // 3
} // 4
inline fun foo(f: () -> Unit) {
f()
@@ -2,13 +2,13 @@ package soInlineCallInLastStatementInInlineDex
fun main(args: Array<String>) {
bar()
nop()
}
nop() // 3
} // 4
inline fun bar() {
//Breakpoint!
nop()
foo { 42 }
nop() // 1
foo { 42 } // 2
}
inline fun foo(f: () -> Unit) {
@@ -0,0 +1,27 @@
package soInlineFunDex
fun main(args: Array<String>) {
val a = 1
//Breakpoint!
simple() // 1
withParam(1 + a) // 2
withLambda { "hi" } // 3
} // 4
inline fun simple() {
foo()
}
inline fun withParam(i: Int) {
}
inline fun withLambda(a: () -> Unit) {
a()
}
fun foo() {}
// STEP_OVER: 6
@@ -0,0 +1,21 @@
package soInlineFunOnOneLineFor
fun main(args: Array<String>) {
val list = listOf(1, 2, 3)
list.any1 { it > 2 }
foo()
}
fun foo() {
}
inline fun <T> Iterable<T>.any1(predicate: (T) -> Boolean): Boolean {
//Breakpoint!
for (element in this) if (predicate(element)) return true
return false
}
// STEP_OVER: 3
@@ -0,0 +1,21 @@
package soInlineFunOnOneLineForDex
fun main(args: Array<String>) {
val list = listOf(1, 2, 3)
list.any1 { it > 2 }
foo()
}
fun foo() {
}
inline fun <T> Iterable<T>.any1(predicate: (T) -> Boolean): Boolean {
//Breakpoint!
for (element in this) if (predicate(element)) return true
return false
}
// STEP_OVER: 3
@@ -0,0 +1,22 @@
package soInlineFunWithFor
fun main(args: Array<String>) {
//Breakpoint!
foo()
val r = any1 { it > 2 }
foo()
}
fun foo() {}
inline fun any1(predicate: (Int) -> Boolean) {
for (i in 1..2) {
if (predicate(i)) {
return
}
}
}
// STEP_OVER: 5
@@ -0,0 +1,21 @@
package soInlineIterableFunDex
fun main(args: Array<String>) {
//Breakpoint!
val list = listOf(1, 2, 3)
list.any1 { it > 2 }
foo()
}
fun foo() {
}
inline fun <T> Iterable<T>.any1(predicate: (T) -> Boolean): Boolean {
for (element in this) if (predicate(element)) return true
return false
}
// STEP_OVER: 5
@@ -0,0 +1,18 @@
package soInlineLibFunDex
fun main(args: Array<String>) {
//Breakpoint!
var i = 1
listOf(1, 2, 3).any { it > 2 } // Step over goes into 'any' (regression)
if (listOf(1, 2, 3).any { it > 2 }) { // Step over goes into 'any'
i++
}
}
inline fun test(a: () -> Unit) {
a()
}
// STEP_OVER: 7
@@ -9,7 +9,7 @@ fun main(args: Array<String>) {
}
// inline in while condition (false)
while (id { false }) { // 5
while (id { false }) { // 5
bar()
}
} // 6