Skip to content

Commit

Permalink
Build Kord with K2
Browse files Browse the repository at this point in the history
  • Loading branch information
lukellmann committed May 13, 2024
1 parent 2518603 commit 9fe52c2
Show file tree
Hide file tree
Showing 29 changed files with 2,853 additions and 2,900 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
.gradle/
.idea/*
!.idea/icon.png
.kotlin/

**/build/*
!**/build/generated/
Expand Down
12 changes: 4 additions & 8 deletions buildSrc/src/main/kotlin/Compiler.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import kotlinx.atomicfu.plugin.gradle.AtomicFUPluginExtension
import org.gradle.api.NamedDomainObjectSet
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.assign
Expand All @@ -7,10 +8,6 @@ import org.gradle.kotlin.dsl.getByType
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet

object OptIns {
const val coroutines = "kotlinx.coroutines.ExperimentalCoroutinesApi"
}

val kordOptIns = listOf(
"kotlin.contracts.ExperimentalContracts",

Expand All @@ -30,11 +27,10 @@ fun KotlinCommonCompilerOptions.applyKordCompilerOptions() {
freeCompilerArgs.add("-Xexpect-actual-classes")
}

fun KotlinSourceSet.applyKordOptIns() {
languageSettings {
internal fun NamedDomainObjectSet<KotlinSourceSet>.applyKordTestOptIns() {
named { it.contains("test", ignoreCase = true) }.configureEach {
// allow `ExperimentalCoroutinesApi` for `TestScope.currentTime`
if ("Test" in name) optIn(OptIns.coroutines)
kordOptIns.forEach(::optIn)
languageSettings.optIn("kotlinx.coroutines.ExperimentalCoroutinesApi")
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi

plugins {
org.jetbrains.kotlin.multiplatform
}
Expand All @@ -14,10 +16,9 @@ kotlin {
}
jvmToolchain(Jvm.target)

targets.all {
compilations.all {
compilerOptions.options.applyKordCompilerOptions()
}
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
applyKordCompilerOptions()
}
}

Expand Down
3 changes: 1 addition & 2 deletions buildSrc/src/main/kotlin/kord-module.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ kotlin {
}

sourceSets {
// allow `ExperimentalCoroutinesApi` for `TestScope.currentTime`
test { languageSettings.optIn(OptIns.coroutines) }
applyKordTestOptIns()
}
}

Expand Down
13 changes: 6 additions & 7 deletions buildSrc/src/main/kotlin/kord-multiplatform-module.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest

plugins {
Expand Down Expand Up @@ -40,18 +41,16 @@ kotlin {
}
jvmToolchain(Jvm.target)

targets.all {
compilations.all {
compilerOptions.options.applyKordCompilerOptions()
}
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
applyKordCompilerOptions()
optIn.addAll(kordOptIns)
}

applyDefaultHierarchyTemplate()

sourceSets {
all {
applyKordOptIns()
}
applyKordTestOptIns()
commonMain {
// mark ksp src dir
kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin")
Expand Down
1,180 changes: 590 additions & 590 deletions common/api/common.api

Large diffs are not rendered by default.

538 changes: 269 additions & 269 deletions common/api/common.klib.api

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions common/src/commonMain/kotlin/entity/Interactions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ public sealed class Option {
ApplicationCommandOptionType.User -> CommandArgument.Serializer.deserialize(
json, jsonValue!!, name, type!!, focused
)
null, is ApplicationCommandOptionType.Unknown -> error("unknown ApplicationCommandOptionType $type")
is ApplicationCommandOptionType.Unknown -> error("unknown ApplicationCommandOptionType $type")
}
}

Expand Down Expand Up @@ -579,7 +579,7 @@ public sealed class CommandArgument<out T> : Option() {
is AutoCompleteArgument, is StringArgument -> encodeStringElement(
descriptor,
1,
value.value as String
value.value
)
}
}
Expand Down
730 changes: 365 additions & 365 deletions core/api/core.api

Large diffs are not rendered by default.

1,076 changes: 538 additions & 538 deletions core/api/core.klib.api

Large diffs are not rendered by default.

9 changes: 6 additions & 3 deletions core/live-tests/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi

plugins {
`kord-internal-multiplatform-module`
}

kotlin {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
optIn.addAll(kordOptIns)
}
sourceSets {
all {
applyKordOptIns()
}
commonTest {
dependencies {
implementation(projects.core)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public fun OptionValue(value: CommandArgument<*>, resolvedObjects: ResolvedObjec
is CommandArgument.BooleanArgument -> BooleanOptionValue(value.value, focused)
is CommandArgument.IntegerArgument -> IntegerOptionValue(value.value, focused)
is CommandArgument.StringArgument, is CommandArgument.AutoCompleteArgument ->
StringOptionValue(value.value as String, focused)
StringOptionValue(value.value, focused)
is CommandArgument.ChannelArgument -> {
val channel = resolvedObjects?.channels.orEmpty()[value.value]
ChannelOptionValue(value.value, focused, channel)
Expand Down
Loading

0 comments on commit 9fe52c2

Please sign in to comment.