Do an ordinal step over while stepping over inlined calls in dex

(cherry picked from commit d741895)
This commit is contained in:
Nikolay Krasko
2016-10-12 01:08:01 +03:00
committed by Nikolay Krasko
parent b6460e6280
commit 06b72e608e
16 changed files with 276 additions and 0 deletions
@@ -0,0 +1,18 @@
package inlineInIfFalseDex
fun main(args: Array<String>) {
val bar = ""
//Breakpoint!
if (inlineCall { true }) {
foo()
}
foo()
}
fun foo() {}
inline fun inlineCall(predicate: (String?) -> Boolean): Boolean {
return false
}
// STEP_OVER: 8
@@ -0,0 +1,17 @@
package inlineInIfTrueDex
fun main(args: Array<String>) {
val bar = ""
//Breakpoint!
if (inlineCall { true }) {
foo()
}
}
fun foo() {}
inline fun inlineCall(predicate: (String?) -> Boolean): Boolean {
return true
}
// STEP_OVER: 6
@@ -0,0 +1,20 @@
package soInlineAnonymousFunctionArgumentDex
fun main(args: Array<String>) {
//Breakpoint!
val b = 1
foo(
fun (){ test(1) }
)
foo(fun (){ test(1) })
}
inline fun foo(f: () -> Unit) {
f()
}
fun test(i: Int) = 1
// STEP_OVER: 10
@@ -0,0 +1,20 @@
package soInlineCallInLastStatementInInlineDex
fun main(args: Array<String>) {
bar()
nop()
}
inline fun bar() {
//Breakpoint!
nop()
foo { 42 }
}
inline fun foo(f: () -> Unit) {
f()
}
fun nop() {}
// STEP_OVER: 8
@@ -0,0 +1,22 @@
package soInlineCallInLastStatementInInlineFunctionArgument
fun main(args: Array<String>) {
bar {
nop()
//Breakpoint!
foo()
}
}
inline fun bar(f: () -> Unit) {
nop()
f()
}
inline fun foo() {
nop()
}
fun nop() {}
// STEP_OVER: 3
@@ -0,0 +1,22 @@
package soInlineCallInLastStatementInInlineFunctionArgumentDex
fun main(args: Array<String>) {
bar {
nop()
//Breakpoint!
foo()
}
}
inline fun bar(f: () -> Unit) {
nop()
f()
}
inline fun foo() {
nop()
}
fun nop() {}
// STEP_OVER: 5
@@ -0,0 +1,23 @@
package soInlineWhileConditionDex
fun main(args: Array<String>) {
//Breakpoint!
var i = 1
// inline in while condition (true)
while (id { i < 2 }) {
i++
}
// inline in while condition (false)
while (id { false }) {
bar()
}
}
inline fun id(f: () -> Boolean): Boolean {
return f()
}
fun bar() {}
// STEP_OVER: 12