@@ -67,6 +67,7 @@ import kotlin.coroutines.intrinsics.*
6767 * @param block the function body.
6868 */
6969@SinceKotlin(" 1.4" )
70+ @ExperimentalStdlibApi
7071public class DeepRecursiveFunction <T , R >(
7172 internal val block : suspend DeepRecursiveScope <T , R >.(T ) -> R
7273)
@@ -79,6 +80,7 @@ public class DeepRecursiveFunction<T, R>(
7980 * [callRecursive][DeepRecursiveScope.callRecursive].
8081 */
8182@SinceKotlin(" 1.4" )
83+ @ExperimentalStdlibApi
8284public operator fun <T , R > DeepRecursiveFunction <T , R >.invoke (value : T ): R =
8385 DeepRecursiveScopeImpl <T , R >(block, value).runCallLoop()
8486
@@ -91,6 +93,7 @@ public operator fun <T, R> DeepRecursiveFunction<T, R>.invoke(value: T): R =
9193 */
9294@RestrictsSuspension
9395@SinceKotlin(" 1.4" )
96+ @ExperimentalStdlibApi
9497public sealed class DeepRecursiveScope <T , R > {
9598 /* *
9699 * Makes recursive call to this [DeepRecursiveFunction] function putting the call activation frame on the heap,
@@ -118,11 +121,13 @@ public sealed class DeepRecursiveScope<T, R> {
118121
119122// ================== Implementation ==================
120123
124+ @ExperimentalStdlibApi
121125private typealias DeepRecursiveFunctionBlock = suspend DeepRecursiveScope <* , * >.(Any? ) -> Any?
122126
123127private val UNDEFINED_RESULT = Result .success(COROUTINE_SUSPENDED )
124128
125129@Suppress(" UNCHECKED_CAST" )
130+ @ExperimentalStdlibApi
126131private class DeepRecursiveScopeImpl <T , R >(
127132 block : suspend DeepRecursiveScope <T , R >.(T ) -> R ,
128133 value : T
0 commit comments