diff --git a/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-android-compat.gradle.kts b/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-android-compat.gradle.kts index 1e9637161..948857618 100644 --- a/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-android-compat.gradle.kts +++ b/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-android-compat.gradle.kts @@ -5,7 +5,7 @@ import ru.vyarus.gradle.plugin.animalsniffer.AnimalSnifferExtension -pluginManager.withPlugin("java") { +pluginManager.withPlugin("org.gradle.java-base") { apply(plugin = "ru.vyarus.animalsniffer") configure { diff --git a/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-multiplatform.gradle.kts b/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-multiplatform.gradle.kts index 399c692d1..8dc93f5c3 100644 --- a/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-multiplatform.gradle.kts +++ b/build-logic/src/main/kotlin/kotlinx/io/conventions/kotlinx-io-multiplatform.gradle.kts @@ -6,6 +6,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension +import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask import kotlin.jvm.optionals.getOrNull plugins { @@ -38,7 +39,7 @@ kotlin { } @OptIn(org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl::class) - wasm { + wasmJs { nodejs() // Disabled because we can't exclude some tests: https://youtrack.jetbrains.com/issue/KT-58291 // browser() @@ -89,6 +90,12 @@ kotlin { createSourceSet("linuxTest", parent = unixTest, children = linuxTargets()) createSourceSet("androidMain", parent = unixMain, children = androidTargets()) createSourceSet("androidTest", parent = unixTest, children = androidTargets()) + getByName("wasmJsMain") { + kotlin.srcDir(File(File(projectDir, "wasm"), "src")) + } + getByName("wasmJsTest") { + kotlin.srcDir(File(File(projectDir, "wasm"), "test")) + } } } @@ -192,5 +199,10 @@ fun androidTargets() = listOf( ) rootProject.the().apply { - nodeVersion = "20.4.0" + nodeVersion = "21.0.0-v8-canary202310177990572111" + nodeDownloadBaseUrl = "https://nodejs.org/download/v8-canary" +} + +rootProject.tasks.withType().configureEach { + args.add("--ignore-engines") } diff --git a/build.gradle.kts b/build.gradle.kts index 7a84ebf09..dcff665cf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,7 @@ */ import kotlinx.kover.gradle.plugin.dsl.MetricType +import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile @@ -27,11 +28,19 @@ subprojects { kotlinOptions { allWarningsAsErrors = true freeCompilerArgs += "-Xjvm-default=all" + freeCompilerArgs += "-Xexpect-actual-classes" } } tasks.withType().configureEach { kotlinOptions { allWarningsAsErrors = true + freeCompilerArgs += "-Xexpect-actual-classes" + } + } + tasks.withType().configureEach { + kotlinOptions { + allWarningsAsErrors = true + freeCompilerArgs += "-Xexpect-actual-classes" } } } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 3746d77e5..26b89e9b8 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -32,7 +32,7 @@ kotlin { } @OptIn(org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl::class) - wasm { + wasmJs { nodejs { testTask(Action { useMocha { diff --git a/core/common/src/-CommonPlatform.kt b/core/common/src/-CommonPlatform.kt index 7f0f74f19..8182eeb67 100644 --- a/core/common/src/-CommonPlatform.kt +++ b/core/common/src/-CommonPlatform.kt @@ -27,13 +27,16 @@ internal expect fun String.asUtf8ToByteArray(): ByteArray * Signals about a general issue occurred during I/O operation. */ public expect open class IOException(message: String?, cause: Throwable?) : Exception { - public constructor(message: String? = null) + public constructor() + public constructor(message: String?) } /** * Signals that the end of the file or stream was reached unexpectedly during an input operation. */ -public expect open class EOFException(message: String? = null) : IOException +public expect open class EOFException(message: String?) : IOException { + public constructor() +} // There is no actual AutoCloseable on JVM (https://youtrack.jetbrains.com/issue/KT-55777), diff --git a/core/js/src/-PlatfromJs.kt b/core/js/src/-PlatfromJs.kt index 732a2b4cc..fa06788a2 100644 --- a/core/js/src/-PlatfromJs.kt +++ b/core/js/src/-PlatfromJs.kt @@ -14,6 +14,10 @@ public actual open class IOException actual constructor( cause: Throwable? ) : Exception(message, cause) { public actual constructor(message: String?) : this(message, null) + + public actual constructor() : this(null) } -public actual open class EOFException actual constructor(message: String?) : IOException(message) +public actual open class EOFException actual constructor(message: String?) : IOException(message) { + public actual constructor() : this(null) +} diff --git a/core/jvm/src/RawSink.kt b/core/jvm/src/RawSink.kt index a8d5d02e6..3c42e6428 100644 --- a/core/jvm/src/RawSink.kt +++ b/core/jvm/src/RawSink.kt @@ -21,8 +21,6 @@ package kotlinx.io import java.io.Flushable - -@OptIn(ExperimentalStdlibApi::class) public actual interface RawSink : AutoCloseableAlias, Flushable { public actual fun write(source: Buffer, byteCount: Long) diff --git a/core/native/src/-NonJvmPlatform.kt b/core/native/src/-NonJvmPlatform.kt index ffddac860..b5297d949 100644 --- a/core/native/src/-NonJvmPlatform.kt +++ b/core/native/src/-NonJvmPlatform.kt @@ -29,6 +29,10 @@ public actual open class IOException actual constructor( cause: Throwable? ) : Exception(message, cause) { public actual constructor(message: String?) : this(message, null) + + public actual constructor() : this(null) } -public actual open class EOFException actual constructor(message: String?) : IOException(message) +public actual open class EOFException actual constructor(message: String?) : IOException(message) { + public actual constructor() : this(null) +} diff --git a/core/wasm/src/-PlatformWasm.kt b/core/wasm/src/-PlatformWasm.kt index 732a2b4cc..fa06788a2 100644 --- a/core/wasm/src/-PlatformWasm.kt +++ b/core/wasm/src/-PlatformWasm.kt @@ -14,6 +14,10 @@ public actual open class IOException actual constructor( cause: Throwable? ) : Exception(message, cause) { public actual constructor(message: String?) : this(message, null) + + public actual constructor() : this(null) } -public actual open class EOFException actual constructor(message: String?) : IOException(message) +public actual open class EOFException actual constructor(message: String?) : IOException(message) { + public actual constructor() : this(null) +} diff --git a/gradle.properties b/gradle.properties index 32adba4d8..cf9e5bbb2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,3 +8,4 @@ version=0.3.1-SNAPSHOT kotlin.code.style=official org.gradle.jvmargs=-Xmx4G nativeBenchmarksEnabled=false +kotlin.mpp.applyDefaultHierarchyTemplate=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c70a25044..6ab60c22f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -kotlin = "1.9.10" +kotlin = "1.9.20" java = "8" dokka = "1.8.20" kover = "0.7.3"