Skip to content

Commit 27e352d

Browse files
authored
Implement additional compiler flags as per KT-75078 (#2946)
Add forgotten explicitApi() to HOCON
1 parent 1e54f4b commit 27e352d

File tree

10 files changed

+57
-38
lines changed

10 files changed

+57
-38
lines changed

build.gradle.kts

+2-14
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
import kotlinx.validation.*
6+
import org.gradle.kotlin.dsl.withType
67
import org.jetbrains.dokka.gradle.*
78
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
89

@@ -86,17 +87,8 @@ tasks.named("knitPrepare") {
8687

8788
// == compiler flags setup ==
8889

89-
tasks.withType<org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile>().configureEach {
90-
compilerOptions { freeCompilerArgs.add("-Xpartial-linkage-loglevel=ERROR") }
91-
}
92-
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile>().configureEach {
93-
compilerOptions { freeCompilerArgs.add("-Xpartial-linkage-loglevel=ERROR") }
94-
}
95-
9690
subprojects {
97-
tasks.withType<org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile<*>>().configureEach {
98-
compilerOptions.freeCompilerArgs.addAll(globalCompilerArgs)
99-
}
91+
apply(plugin = "global-compiler-options")
10092
}
10193

10294
// == TeamCity setup ==
@@ -172,10 +164,6 @@ val unpublishedProjects get() = setOf(
172164
"proto-test-model",
173165
)
174166
val excludedFromBomProjects get() = unpublishedProjects + "kotlinx-serialization-bom"
175-
val globalCompilerArgs
176-
get() = listOf(
177-
"-P", "plugin:org.jetbrains.kotlinx.serialization:disableIntrinsic=false"
178-
)
179167

180168
val documentedSubprojects get() = setOf("kotlinx-serialization-core",
181169
"kotlinx-serialization-json",

buildSrc/build.gradle.kts

-1
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,3 @@ dependencies {
5050
implementation(libs.gradlePlugin.animalsniffer)
5151
implementation(libs.gradlePlugin.binaryCompatibilityValidator)
5252
}
53-
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright 2017-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
import org.jetbrains.kotlin.gradle.tasks.*
6+
7+
val globalCompilerArgs
8+
get() = listOf(
9+
"-P", "plugin:org.jetbrains.kotlinx.serialization:disableIntrinsic=false",
10+
"-Xreport-all-warnings",
11+
"-Xrender-internal-diagnostic-names",
12+
)
13+
14+
val kotlin_Werror_override: String? by project
15+
16+
tasks.withType(KotlinCompilationTask::class).configureEach {
17+
compilerOptions {
18+
// Unconditional compiler options
19+
freeCompilerArgs.addAll(globalCompilerArgs)
20+
21+
val isMainTaskName = name.startsWith("compileKotlin")
22+
if (isMainTaskName) {
23+
val werrorEnabled = when (kotlin_Werror_override?.lowercase()) {
24+
"disable" -> false
25+
"enable" -> true
26+
null -> true // Werror is enabled by default
27+
else -> throw GradleException("Invalid kotlin_Werror_override value. Use 'enable' or 'disable'")
28+
}
29+
30+
allWarningsAsErrors = werrorEnabled
31+
32+
// Add extra compiler options when -Werror is disabled
33+
if (!werrorEnabled) {
34+
freeCompilerArgs.addAll(
35+
"-Wextra",
36+
"-Xuse-fir-experimental-checkers"
37+
)
38+
}
39+
}
40+
}
41+
}
42+
43+
tasks.withType<Kotlin2JsCompile>().configureEach {
44+
compilerOptions { freeCompilerArgs.add("-Xpartial-linkage-loglevel=ERROR") }
45+
}
46+
tasks.withType<KotlinNativeCompile>().configureEach {
47+
compilerOptions { freeCompilerArgs.add("-Xpartial-linkage-loglevel=ERROR") }
48+
}

buildSrc/src/main/kotlin/source-sets-conventions.gradle.kts

-9
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,3 @@ kotlin {
125125
}
126126
}
127127
}
128-
129-
tasks.withType(KotlinCompilationTask::class).configureEach {
130-
compilerOptions {
131-
val isMainTaskName = name.startsWith("compileKotlin")
132-
if (isMainTaskName) {
133-
allWarningsAsErrors = true
134-
}
135-
}
136-
}

formats/hocon/build.gradle.kts

+1-7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ plugins {
1313
}
1414

1515
kotlin {
16+
explicitApi()
1617
jvmToolchain(jdkToolchainVersion)
1718

1819
compilerOptions {
@@ -33,13 +34,6 @@ kotlin {
3334
}
3435
}
3536

36-
// Only main
37-
tasks.compileKotlin {
38-
compilerOptions {
39-
allWarningsAsErrors = true
40-
}
41-
}
42-
4337
java {
4438
sourceCompatibility = JavaVersion.VERSION_1_8
4539
targetCompatibility = JavaVersion.VERSION_1_8

formats/hocon/src/main/kotlin/kotlinx/serialization/hocon/HoconDecoder.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import kotlinx.serialization.ExperimentalSerializationApi
3333
* ```
3434
*/
3535
@ExperimentalSerializationApi
36-
sealed interface HoconDecoder {
36+
public sealed interface HoconDecoder {
3737

3838
/**
3939
* Decodes the value at the current path from the input.
@@ -43,5 +43,5 @@ sealed interface HoconDecoder {
4343
* @param extractValueAtPath lambda for extracting value, where conf - original config object, path - current path expression being decoded.
4444
* @return result of lambda execution
4545
*/
46-
fun <E> decodeConfigValue(extractValueAtPath: (conf: Config, path: String) -> E): E
46+
public fun <E> decodeConfigValue(extractValueAtPath: (conf: Config, path: String) -> E): E
4747
}

formats/hocon/src/main/kotlin/kotlinx/serialization/hocon/HoconEncoder.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ import kotlinx.serialization.ExperimentalSerializationApi
3232
* ```
3333
*/
3434
@ExperimentalSerializationApi
35-
sealed interface HoconEncoder {
35+
public sealed interface HoconEncoder {
3636

3737
/**
3838
* Appends the given [ConfigValue] element to the current output.
3939
*
4040
* @param value to insert
4141
*/
42-
fun encodeConfigValue(value: ConfigValue)
42+
public fun encodeConfigValue(value: ConfigValue)
4343
}

formats/hocon/src/main/kotlin/kotlinx/serialization/hocon/serializers/ConfigMemorySizeSerializer.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import kotlinx.serialization.hocon.*
2929
* ```
3030
*/
3131
@ExperimentalSerializationApi
32-
object ConfigMemorySizeSerializer : KSerializer<ConfigMemorySize> {
32+
public object ConfigMemorySizeSerializer : KSerializer<ConfigMemorySize> {
3333

3434
// For powers of two.
3535
private val memoryUnitFormats = listOf("byte", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB")

formats/hocon/src/main/kotlin/kotlinx/serialization/hocon/serializers/JavaDurationSerializer.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import kotlinx.serialization.hocon.internal.*
3636
*/
3737
@ExperimentalSerializationApi
3838
@SuppressAnimalSniffer
39-
object JavaDurationSerializer : KSerializer<JDuration> {
39+
public object JavaDurationSerializer : KSerializer<JDuration> {
4040

4141
override val descriptor: SerialDescriptor =
4242
PrimitiveSerialDescriptor("hocon.java.time.Duration", PrimitiveKind.STRING)

guide/build.gradle.kts

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ kotlin {
1414
jvmToolchain(8)
1515

1616
compilerOptions {
17-
allWarningsAsErrors = true
1817
if (overriddenLanguageVersion != null) {
1918
languageVersion = KotlinVersion.fromVersion(overriddenLanguageVersion!!)
2019
freeCompilerArgs.add("-Xsuppress-version-warnings")

0 commit comments

Comments
 (0)