Fix breakpoints in function literals in inline calls (KT-11521, KT-12734, KT-12470)
#KT-11521 Fixed #KT-12734 Fixed #KT-12470 Fixed
This commit is contained in:
committed by
Nikolay Krasko
parent
59a349a4ae
commit
1889f4f7b1
+21
@@ -0,0 +1,21 @@
|
||||
package stopInInlineCallLocalFunLambda
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var prop = 1
|
||||
inlineFun {
|
||||
fun local() {
|
||||
{
|
||||
//Breakpoint!
|
||||
foo(12)
|
||||
}()
|
||||
}
|
||||
|
||||
local()
|
||||
}
|
||||
}
|
||||
|
||||
inline fun inlineFun(f: () -> Unit) {
|
||||
f()
|
||||
}
|
||||
|
||||
fun foo(a: Any) {}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package stopInInlinedInSpecialNamedFun
|
||||
|
||||
// KT-12470
|
||||
|
||||
class Foo(bar: Bar) {
|
||||
init {
|
||||
with(bar) {
|
||||
{
|
||||
//Breakpoint!
|
||||
nop()
|
||||
nop()
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
fun nop() {}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
Foo(Bar())
|
||||
}
|
||||
|
||||
class Bar
|
||||
|
||||
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
package stopInInlinedInSpecialNamedFunWithGet
|
||||
|
||||
// KT-12470
|
||||
|
||||
class Foo(bar: Bar) {
|
||||
init {
|
||||
with(bar) {
|
||||
get<String> {
|
||||
//Breakpoint!
|
||||
nop()
|
||||
nop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun nop() {}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
Foo(Bar())
|
||||
}
|
||||
|
||||
class Bar
|
||||
class BarContext
|
||||
|
||||
inline fun <reified T : Any> Bar.get(noinline body: BarContext.() -> Unit) {
|
||||
BarContext().body()
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package stopInLambdaInlineCallLambda
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var prop = 1
|
||||
{
|
||||
inlineFun {
|
||||
{
|
||||
//Breakpoint!
|
||||
foo(12)
|
||||
}()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
inline fun inlineFun(f: () -> Unit) {
|
||||
f()
|
||||
}
|
||||
|
||||
fun foo(a: Any) {}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package stopInLocalFunInlineCallLambda
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var prop = 1
|
||||
fun local() {
|
||||
inlineFun {
|
||||
{
|
||||
//Breakpoint!
|
||||
foo(12)
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
local()
|
||||
}
|
||||
|
||||
inline fun inlineFun(f: () -> Unit) {
|
||||
f()
|
||||
}
|
||||
|
||||
fun foo(a: Any) {}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package stopInNonInlinedLambdaInInlineCallWithClosure
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var prop = 1
|
||||
inlineFun {
|
||||
notInlineFun {
|
||||
//Breakpoint!
|
||||
foo(prop)
|
||||
foo(prop)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun inlineFun(f: () -> Unit) {
|
||||
f()
|
||||
}
|
||||
|
||||
fun notInlineFun(f: () -> Unit) {
|
||||
f()
|
||||
}
|
||||
|
||||
fun foo(a: Any) {}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package stopInNonInlinedLambdaInInlineCallWithoutClosure
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var prop = 1
|
||||
inlineFun {
|
||||
notInlineFun {
|
||||
//Breakpoint!
|
||||
foo(12)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun inlineFun(f: () -> Unit) {
|
||||
f()
|
||||
}
|
||||
|
||||
fun notInlineFun(f: () -> Unit) {
|
||||
f()
|
||||
}
|
||||
|
||||
fun foo(a: Any) {}
|
||||
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
package stopInObjectLiteralInInlineCallNoClosure
|
||||
|
||||
// KT-12734
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val a = 12
|
||||
|
||||
inlineF {
|
||||
val s = object: () -> Unit {
|
||||
override fun invoke() {
|
||||
//Breakpoint!
|
||||
nop()
|
||||
nop()
|
||||
}
|
||||
}
|
||||
|
||||
s()
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <R> inlineF(block: () -> R): R = block()
|
||||
|
||||
fun nop() {}
|
||||
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
package stopInObjectLiteralInInlineCallWithClosure
|
||||
|
||||
// KT-12734
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val a = 12
|
||||
|
||||
inlineF {
|
||||
val s = object: () -> Unit {
|
||||
override fun invoke() {
|
||||
//Breakpoint!
|
||||
nop(a)
|
||||
nop(a)
|
||||
}
|
||||
}
|
||||
|
||||
s()
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <R> inlineF(block: () -> R): R = block()
|
||||
|
||||
fun nop(a: Any) {}
|
||||
Reference in New Issue
Block a user