From 7dbefd71f541c555767237133d42f3012b0a3828 Mon Sep 17 00:00:00 2001 From: Daniel Slapman Date: Mon, 2 Sep 2024 21:29:17 +0200 Subject: [PATCH] Function converters --- build.sbt | 1 + readme.md | 2 +- .../sk/FunctionConvertersToKotlin.kt | 125 ++++++++++++++++++ .../leviysoft/sk/FunctionConvertersToScala.kt | 124 +++++++++++++++++ 4 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToKotlin.kt create mode 100644 src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToScala.kt diff --git a/build.sbt b/build.sbt index 40856a1..8cd46aa 100644 --- a/build.sbt +++ b/build.sbt @@ -29,5 +29,6 @@ lazy val root = (project in file(".")) name := "scala-kotlin-compat", kotlinVersion := "1.9.25", kotlincJvmTarget := "11", + kotlincOptions += "-Xjvm-default=all", kotlinLib("stdlib") ) diff --git a/readme.md b/readme.md index ce79f58..26541ec 100644 --- a/readme.md +++ b/readme.md @@ -12,7 +12,7 @@ All you need to do is: The following components of `scala.jdk` are implemented: - [x] CollectionConverters - [x] DurationConverters -- [ ] FunctionConverters +- [x] FunctionConverters - [x] FutureConverters - [x] OptionConverters - [ ] StreamConverters diff --git a/src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToKotlin.kt b/src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToKotlin.kt new file mode 100644 index 0000000..2a13cf3 --- /dev/null +++ b/src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToKotlin.kt @@ -0,0 +1,125 @@ +package com.github.leviysoft.sk + +/* + WARNING! + + The following code is AI-generated or contains + AI-generated pieces + */ + +import scala.Function0 +import scala.Function1 +import scala.Function2 +import scala.Function3 +import scala.Function4 +import scala.Function5 +import scala.Function6 +import scala.Function7 +import scala.Function8 +import scala.Function9 +import scala.Function10 +import scala.Function11 +import scala.Function12 +import scala.Function13 +import scala.Function14 +import scala.Function15 +import scala.Function16 +import scala.Function17 +import scala.Function18 +import scala.Function19 +import scala.Function20 +import scala.Function21 +import scala.Function22 + + +fun Function0.toKotlin(): () -> R { + return { this.apply() } +} + +fun Function1.toKotlin(): (T1) -> R { + return { t1 -> this.apply(t1) } +} + +fun Function2.toKotlin(): (T1, T2) -> R { + return { t1, t2 -> this.apply(t1, t2) } +} + +fun Function3.toKotlin(): (T1, T2, T3) -> R { + return { t1, t2, t3 -> this.apply(t1, t2, t3) } +} + +fun Function4.toKotlin(): (T1, T2, T3, T4) -> R { + return { t1, t2, t3, t4 -> this.apply(t1, t2, t3, t4) } +} + +fun Function5.toKotlin(): (T1, T2, T3, T4, T5) -> R { + return { t1, t2, t3, t4, t5 -> this.apply(t1, t2, t3, t4, t5) } +} + +fun Function6.toKotlin(): (T1, T2, T3, T4, T5, T6) -> R { + return { t1, t2, t3, t4, t5, t6 -> this.apply(t1, t2, t3, t4, t5, t6) } +} + +fun Function7.toKotlin(): (T1, T2, T3, T4, T5, T6, T7) -> R { + return { t1, t2, t3, t4, t5, t6, t7 -> this.apply(t1, t2, t3, t4, t5, t6, t7) } +} + +fun Function8.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8) } +} + +fun Function9.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9) } +} + +fun Function10.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } +} + +fun Function11.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) } +} + +fun Function12.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) } +} + +fun Function13.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) } +} + +fun Function14.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) } +} + +fun Function15.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) } +} + +fun Function16.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) } +} + +fun Function17.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) } +} + +fun Function18.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) } +} + +fun Function19.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19) } +} + +fun Function20.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) } +} + +fun Function21.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21) } +} + +fun Function22.toKotlin(): (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) -> R { + return { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22 -> this.apply(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22) } +} diff --git a/src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToScala.kt b/src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToScala.kt new file mode 100644 index 0000000..3f73fdf --- /dev/null +++ b/src/main/kotlin/com/github/leviysoft/sk/FunctionConvertersToScala.kt @@ -0,0 +1,124 @@ +package com.github.leviysoft.sk + +/* + WARNING! + + The following code is AI-generated or contains + AI-generated pieces + */ + +import scala.Function0 +import scala.Function1 +import scala.Function2 +import scala.Function3 +import scala.Function4 +import scala.Function5 +import scala.Function6 +import scala.Function7 +import scala.Function8 +import scala.Function9 +import scala.Function10 +import scala.Function11 +import scala.Function12 +import scala.Function13 +import scala.Function14 +import scala.Function15 +import scala.Function16 +import scala.Function17 +import scala.Function18 +import scala.Function19 +import scala.Function20 +import scala.Function21 +import scala.Function22 + +fun (() -> R).toScala(): Function0 { + return Function0 { this() } +} + +fun ((T1) -> R).toScala(): Function1 { + return Function1 { t1 -> this(t1) } +} + +fun ((T1, T2) -> R).toScala(): Function2 { + return Function2 { t1, t2 -> this(t1, t2) } +} + +fun ((T1, T2, T3) -> R).toScala(): Function3 { + return Function3 { t1, t2, t3 -> this(t1, t2, t3) } +} + +fun ((T1, T2, T3, T4) -> R).toScala(): Function4 { + return Function4 { t1, t2, t3, t4 -> this(t1, t2, t3, t4) } +} + +fun ((T1, T2, T3, T4, T5) -> R).toScala(): Function5 { + return Function5 { t1, t2, t3, t4, t5 -> this(t1, t2, t3, t4, t5) } +} + +fun ((T1, T2, T3, T4, T5, T6) -> R).toScala(): Function6 { + return Function6 { t1, t2, t3, t4, t5, t6 -> this(t1, t2, t3, t4, t5, t6) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7) -> R).toScala(): Function7 { + return Function7 { t1, t2, t3, t4, t5, t6, t7 -> this(t1, t2, t3, t4, t5, t6, t7) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8) -> R).toScala(): Function8 { + return Function8 { t1, t2, t3, t4, t5, t6, t7, t8 -> this(t1, t2, t3, t4, t5, t6, t7, t8) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R).toScala(): Function9 { + return Function9 { t1, t2, t3, t4, t5, t6, t7, t8, t9 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R).toScala(): Function10 { + return Function10 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R).toScala(): Function11 { + return Function11 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R).toScala(): Function12 { + return Function12 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R).toScala(): Function13 { + return Function13 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R).toScala(): Function14 { + return Function14 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R).toScala(): Function15 { + return Function15 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R).toScala(): Function16 { + return Function16 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R).toScala(): Function17 { + return Function17 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R).toScala(): Function18 { + return Function18 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R).toScala(): Function19 { + return Function19 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R).toScala(): Function20 { + return Function20 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) -> R).toScala(): Function21 { + return Function21 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21) } +} + +fun ((T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) -> R).toScala(): Function22 { + return Function22 { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22 -> this(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22) } +} \ No newline at end of file