blob: 182cf672ea344f701823ce3de99f55bd39d07ee5 [file] [log] [blame]
inline fun foo(block: Function0<Unit>) {
block.invoke()
}
inline fun bar(block1: Function0<Unit>, noinline block2: Function0<Unit>) {
block1.invoke()
block2.invoke()
}
inline fun baz(crossinline block: Function0<Unit>) {
block.invoke()
}
inline fun <T : Any?> Iterable<T>.myForEach(action: Function1<T, Unit>) {
{ // BLOCK
val tmp0_iterator: Iterator<T> = <this>.iterator()
while (tmp0_iterator.hasNext()) { // BLOCK
val element: T = tmp0_iterator.next()
action.invoke(p1 = element)
}
}
}
fun test1() {
error("") /* ErrorExpression */
local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke()
local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke()
foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
}
fun test2() {
L1@ while (true) { // BLOCK
error("") /* ErrorExpression */
local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke()
local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke()
foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
}
}
fun test3() {
L1@ while (true) { // BLOCK
val lambda: Function0<Unit> = local fun <anonymous>() {
error("") /* ErrorExpression */
local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke()
local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke()
foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
}
}
}
fun test4() {
while (local fun <anonymous>(): Nothing {
return error("") /* ErrorExpression */
}
.invoke()) { // BLOCK
}
while (local fun <anonymous>(): Nothing {
return error("") /* ErrorExpression */
}
.invoke()) { // BLOCK
}
while (local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke() /*as Boolean */) { // BLOCK
}
while (local fun <no name provided>() {
error("") /* ErrorExpression */
}
.invoke() /*as Boolean */) { // BLOCK
}
while (foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
) /*as Boolean */) { // BLOCK
}
while (foo(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
) /*as Boolean */) { // BLOCK
}
while (foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
) /*as Boolean */) { // BLOCK
}
while (foo(block = local fun <no name provided>() {
error("") /* ErrorExpression */
}
) /*as Boolean */) { // BLOCK
}
}
fun test5() {
listOf<Int>(elements = [1, 2, 3]).forEach<Int>(action = local fun <anonymous>(i: Int) {
when {
EQEQ(arg0 = i, arg1 = 2) -> error("") /* ErrorExpression */
}
}
)
listOf<Int>(elements = [1, 2, 3]).forEach<Int>(action = local fun <anonymous>(i: Int) {
when {
EQEQ(arg0 = i, arg1 = 2) -> error("") /* ErrorExpression */
}
}
)
listOf<Int>(elements = [1, 2, 3]).forEach<Int>(action = local fun <no name provided>(i: Int) {
when {
EQEQ(arg0 = i, arg1 = 2) -> error("") /* ErrorExpression */
}
}
)
listOf<Int>(elements = [1, 2, 3]).forEach<Int>(action = local fun <no name provided>(i: Int) {
when {
EQEQ(arg0 = i, arg1 = 2) -> error("") /* ErrorExpression */
}
}
)
}
fun test6() {
while (true) { // BLOCK
bar(block1 = local fun <anonymous>() {
return Unit
}
, block2 = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
bar(block1 = local fun <anonymous>() {
return Unit
}
, block2 = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
bar(block1 = local fun <no name provided>() {
}
, block2 = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
bar(block1 = local fun <no name provided>() {
}
, block2 = local fun <no name provided>() {
error("") /* ErrorExpression */
}
)
}
}
fun test7() {
1.rangeTo(other = 3).myForEach<Int>(action = local fun <anonymous>(i: Int) {
when {
EQEQ(arg0 = i, arg1 = 2) -> { // BLOCK
error("") /* ErrorExpression */
}
}
}
)
}
fun test8() {
while (true) { // BLOCK
baz(block = local fun <anonymous>() {
error("") /* ErrorExpression */
}
)
}
}