diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 5bdbd5bf7d0..54b43daffbc 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -1232,6 +1232,21 @@ task inline14(type: RunKonanTest) { source = "codegen/inline/inline14.kt" } +task inline15(type: RunKonanTest) { + goldValue = "4\n" + source = "codegen/inline/inline15.kt" +} + +//task inline16(type: RunKonanTest) { +// goldValue = "false\n" +// source = "codegen/inline/inline16.kt" +//} + +task inline17(type: RunKonanTest) { + goldValue = "[1, 2]\n" + source = "codegen/inline/inline17.kt" +} + kotlinNativeInterop { sysstat { pkg 'sysstat' diff --git a/backend.native/tests/codegen/inline/inline15.kt b/backend.native/tests/codegen/inline/inline15.kt new file mode 100644 index 00000000000..3891f0d3102 --- /dev/null +++ b/backend.native/tests/codegen/inline/inline15.kt @@ -0,0 +1,17 @@ +@Suppress("NOTHING_TO_INLINE") +inline fun foo2(i1: Int): Int { + return i1 + 1 +} + +@Suppress("NOTHING_TO_INLINE") +inline fun foo1(i1: Int, body: (Int) -> Int): Int { + return body(i1) +} + +fun bar(i0: Int): Int { + return foo1(i0) { foo2(it) + 1 } +} + +fun main(args: Array) { + println(bar(2).toString()) +} diff --git a/backend.native/tests/codegen/inline/inline16.kt b/backend.native/tests/codegen/inline/inline16.kt new file mode 100644 index 00000000000..9c5255ea714 --- /dev/null +++ b/backend.native/tests/codegen/inline/inline16.kt @@ -0,0 +1,17 @@ +@Suppress("NOTHING_TO_INLINE") +inline fun > foo(destination: C, predicate: (T) -> Boolean): C { + for (element in destination) { + val value = element as T + if (!predicate(value)) destination.add(value) + } + return destination +} + +fun bar(): Boolean { + val result = foo > (mutableListOf(1, 2, 3)) { true } + return result.isEmpty() +} + +fun main(args: Array) { + println(bar().toString()) +} diff --git a/backend.native/tests/codegen/inline/inline17.kt b/backend.native/tests/codegen/inline/inline17.kt new file mode 100644 index 00000000000..1de814adfc4 --- /dev/null +++ b/backend.native/tests/codegen/inline/inline17.kt @@ -0,0 +1,12 @@ +@Suppress("NOTHING_TO_INLINE") +inline fun foo(i1: T, i2: T): List { + return listOf(i1, i2) +} + +fun bar(): List { + return foo (1, 2) +} + +fun main(args: Array) { + println(bar().toString()) +}