The Kotlin modules (storm-kotlin, storm-kotlin-spring, storm-kotlin-spring-boot-starter, storm-kotlinx-serialization, storm-ktor) enable -Xexplicit-api=strict on the main-sources compile execution only, so the build enforces explicit visibility on the published API while test sources stay unrestricted. IDEs however import the Kotlin compiler args into a single module-wide configuration, so editors apply strict mode to test sources as well and flag every test declaration with "Visibility must be specified in explicit API mode" (roughly 1750 declarations in storm-kotlin's tests alone). The Maven build is unaffected.
Proposal: mark the Kotlin test classes internal. Explicit API checks apply only to effectively public declarations, so one keyword per test class silences the diagnostics for all members, and it states the truth: tests are not API. JUnit and Spring are unaffected, since internal classes compile to public bytecode and members of internal classes keep their names.
Mechanical, one line per test class, across the Kotlin modules' test sources.
The Kotlin modules (storm-kotlin, storm-kotlin-spring, storm-kotlin-spring-boot-starter, storm-kotlinx-serialization, storm-ktor) enable
-Xexplicit-api=stricton the main-sources compile execution only, so the build enforces explicit visibility on the published API while test sources stay unrestricted. IDEs however import the Kotlin compiler args into a single module-wide configuration, so editors apply strict mode to test sources as well and flag every test declaration with "Visibility must be specified in explicit API mode" (roughly 1750 declarations in storm-kotlin's tests alone). The Maven build is unaffected.Proposal: mark the Kotlin test classes
internal. Explicit API checks apply only to effectively public declarations, so one keyword per test class silences the diagnostics for all members, and it states the truth: tests are not API. JUnit and Spring are unaffected, sinceinternalclasses compile to public bytecode and members of internal classes keep their names.Mechanical, one line per test class, across the Kotlin modules' test sources.