Repository navigation
Kotlin 2.3 / AGP 9 / Gradle 9 unsupported — both auto-mode and semanticdb-kotlinc fail #864
Description
Summary
scip-java (latest stable v0.12.3, Aug 2024) cannot index modern Android projects using AGP 9 + Gradle 9 + Kotlin 2.3 in either auto-mode or manual semanticdb-kotlinc mode. The combination AGP 9 / Kotlin 2.3 became mainline in Q1 2026 (e.g., unstoppable-wallet-android master upgraded to AGP 9.1 on 2026-02-12) and projects using it currently have no working SCIP indexing path.
Toolchain (failure repro)
- AGP: 9.1.0
- Gradle: 9.3.1
- Kotlin: 2.3.10
- KSP: 2.3.2
- JVM: 21
- scip-java: 0.12.3
- semanticdb-kotlinc: 0.6.0
- OS: macOS 14 / Apple Silicon
Real-world example: https://github.com/horizontalsystems/unstoppable-wallet-android master (currently on AGP 9.1.0).
Failure 1 — Auto-mode
Command: scip-java index --output index.scip
> Task :app-mini:scipPrintDependencies FAILED
> java.util.ConcurrentModificationException (no error message)
The Sourcegraph SemanticdbGradlePlugin enumeration of project configurations triggers a ConcurrentModificationException during the :scipPrintDependencies task. Workarounds attempted (none successful):
- Trailing
-- --no-parallel --no-daemon— flags swallowed before reaching scipPrintDependencies - Trailing
-- --stacktrace— scip-java falls back togradle helptask instead
Failure 2 — Manual semanticdb-kotlinc mode
Switching to manual mode by adding the kotlinc compiler plugin:
dependencies {
kotlinCompilerPluginClasspath("com.sourcegraph:semanticdb-kotlinc:0.6.0")
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask<*>>().configureEach {
compilerOptions.freeCompilerArgs.addAll(
"-P=plugin:semanticdb-kotlinc:sourceroot=${rootProject.projectDir.absolutePath}",
"-P=plugin:semanticdb-kotlinc:targetroot=${semanticdbTargetRoot.get().asFile.absolutePath}",
)
}Result:
java.lang.AbstractMethodError: Receiver class com.sourcegraph.semanticdb_kotlinc.AnalyzerRegistrar
does not define or inherit an implementation of the resolved method
'abstract java.lang.String getPluginId()'
of abstract class org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar.
at org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser.loadPluginsLegacyStyle(PluginCliParser.kt:246)
Root cause: Kotlin 2.3.x changed the CompilerPluginRegistrar abstract class to require an abstract fun getPluginId(): String. semanticdb-kotlinc 0.6.0 (released Sept 2025, pre-Kotlin 2.3) does not implement this method.
Fix size estimate
- semanticdb-kotlinc: implement
override fun getPluginId(): String = "semanticdb-kotlinc"inAnalyzerRegistrar. Likely also need aKOTLIN_VERSION_GTE_2_3compile-time check or version matrix bump. ~20-50 LOC + tests. - scip-java Gradle plugin: investigate
ConcurrentModificationExceptioninscipPrintDependencies. AGP 9 may iterate GradleConfigurationcollections differently; need defensive copy or useConfiguration.toList()before iteration. ~50-100 LOC + integration test.
Why this is becoming urgent
- AGP 9.1 went stable in Q1 2026
- Kotlin 2.3 is mainline since late 2025
- Major Android projects (e.g., unstoppable-wallet-android, modern Compose-first apps) are migrating
- Sourcegraph Code Search and any downstream tooling using scip-java cannot index these projects
- No mention of Kotlin 2.3 / AGP 9 in current open issues — wanted to flag explicitly
Asks
- Roadmap signal — is Kotlin 2.3 / AGP 9 / Gradle 9 support being worked on internally? Public ETA?
- Workaround — any known config that bypasses both failure modes on this toolchain?
- Contribution welcome — if maintainers are open to community PRs for the two fixes above, happy to coordinate.
Repro fixture available at https://github.com/ant013/Gimle-Palace (services/palace-mcp/tests/extractors/fixtures/uw-android-mini-project — feature/GIM-127-android-scip-java-validation branch, commit 5f816f9).
Thanks for the work on scip-java!
Activity
linear commentedon Apr 30, 2026
OSS-24211