Uh oh!
There was an error while loading. Please reload this page.
Kotlin: add Kotlin 2.4.0 support - #21970
Conversation
There was a problem hiding this comment.
Pull request overview
This pull request updates the Java/Kotlin extractor and its test infrastructure to support Kotlin 2.4.0, while dropping Kotlin 1.x support (minimum Kotlin version becomes 2.0.0) and updating baselines/docs accordingly.
Changes:
- Add Kotlin 2.4.0 compiler/stdlib dependencies and extractor compatibility shims for Kotlin IR API changes in 2.4.0.
- Switch Kotlin integration tests that previously used Kotlin 1.x language mode to use
-language-version 2.0, and update expected outputs. - Update docs and change notes to reflect the new supported Kotlin version range and deprecation of Kotlin < 2.0.
Show a summary per file
| File | Description |
|---|---|
| MODULE.bazel | Adds Bazel repos for Kotlin 2.4.0 compiler/embeddable/stdlib artifacts. |
| java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/DB-CHECK.expected | Updated test baseline output (dbcheck). |
| java/ql/test/query-tests/security/CWE-312/android/CleartextStorage/CleartextStorageSharedPrefsTest.expected | Updated test baseline output. |
| java/ql/test/library-tests/pathsanitizer/test.expected | Updated test baseline output. |
| java/ql/test/library-tests/pathsanitizer/DB-CHECK.expected | Updated test baseline output (dbcheck). |
| java/ql/lib/change-notes/2026-06-08-kotlin-drop-1x.md | Adds change note deprecating Kotlin < 2.0. |
| java/ql/lib/change-notes/2026-06-04-kotlin-2.4.0.md | Adds change note for Kotlin 2.4.0 support. |
| java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.py | Moves test compilation to -language-version 2.0. |
| java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/test.expected | Updates expected output for wildcard lowering changes. |
| java/ql/integration-tests/kotlin/all-platforms/kotlin_java_lowering_wildcards/DB-CHECK.expected | Updated test baseline output (dbcheck). |
| java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.py | Moves test compilation to -language-version 2.0. |
| java/ql/integration-tests/kotlin/all-platforms/java-interface-redeclares-tostring/test.expected | Updates expected output for interface toString redeclare scenario. |
| java/ql/integration-tests/kotlin/all-platforms/file_classes/test.py | Moves test compilation to -language-version 2.0. |
| java/ql/integration-tests/kotlin/all-platforms/file_classes/classes.expected | Updates expected class extraction output. |
| java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/test.py | Moves test compilation to -language-version 2.0. |
| java/ql/integration-tests/kotlin/all-platforms/extractor_information_kotlin1/ExtractorInformation.expected | Updates expected extractor info (Uses Kotlin 2 flag). |
| java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.py | Moves test compilation to -language-version 2.0. |
| java/ql/integration-tests/kotlin/all-platforms/external-property-overloads/test.expected | Updates expected external binary location formatting. |
| java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.py | Moves test compilation to -language-version 2.0. |
| java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/test.expected | Updates expected output for enhanced nullability extraction. |
| java/ql/integration-tests/kotlin/all-platforms/enhanced-nullability/DB-CHECK.expected | Updated test baseline output (dbcheck). |
| java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected | Updates max-supported-version diagnostic message. |
| java/kotlin-extractor/versions.bzl | Adds 2.4.0 to supported versions list; adjusts language-version mapping. |
| java/kotlin-extractor/src/main/resources/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar | Adds service registration for Kotlin 2.4+ compiler plugin registrar. |
| java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_4_0/parameterIndexExcludingReceivers.kt | Adds Kotlin 2.4.0-specific parameter indexing logic (handles new receiver kinds). |
| java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_4_0/Kotlin2ComponentRegistrar.kt | Introduces Kotlin 2.4.0 CompilerPluginRegistrar-based registration path. |
| java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_4_0/IrCompat.kt | Adds Kotlin 2.4.0 IR compatibility accessors for removed APIs. |
| java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_9_0-Beta/Kotlin2ComponentRegistrar.kt | Refactors older registrar to route through doRegisterExtensions and centralize extension registration. |
| java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/Kotlin2ComponentRegistrar.kt | Refactors older registrar to route through doRegisterExtensions. |
| java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_8_0/IrCompat.kt | Adds pre-2.4.0 IR compatibility wrappers matching the new shim API. |
| java/kotlin-extractor/src/main/kotlin/utils/TypeSubstitution.kt | Switches annotation handling to compatibility wrappers (codeQlAddAnnotations / codeQlAnnotationFromSymbolOwner). |
| java/kotlin-extractor/src/main/kotlin/utils/JvmNames.kt | Switches annotation argument access to compatibility wrappers. |
| java/kotlin-extractor/src/main/kotlin/TrapWriter.kt | Switches extension receiver access to compatibility wrapper. |
| java/kotlin-extractor/src/main/kotlin/MetaAnnotationSupport.kt | Switches IR annotation construction/mutation to compatibility wrappers. |
| java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt | Switches parameter/receiver access to compatibility wrappers. |
| java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt | Switches multiple IR access patterns to compatibility wrappers; updates related comment/docs. |
| java/kotlin-extractor/src/main/kotlin/KotlinExtractorComponentRegistrar.kt | Refactors registrar to use doRegisterExtensions and centralized extension registration. |
| java/kotlin-extractor/src/main/kotlin/comments/CommentExtractor.kt | Switches extension receiver detection to compatibility wrapper. |
| java/kotlin-extractor/dev/wrapper.py | Bumps default wrapper Kotlin version to 2.4.0. |
| java/kotlin-extractor/deps/kotlin-stdlib-2.4.0.jar | Adds Kotlin 2.4.0 stdlib (LFS pointer). |
| java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.4.0.jar | Adds Kotlin 2.4.0 embeddable compiler (LFS pointer). |
| java/kotlin-extractor/deps/kotlin-compiler-2.4.0.jar | Adds Kotlin 2.4.0 compiler (LFS pointer). |
| java/kotlin-extractor/BUILD.bazel | Conditionally packages CompilerPluginRegistrar service file for Kotlin >= 2.4.0. |
| docs/codeql/reusables/supported-versions-compilers.rst | Updates documented supported Kotlin version range to 2.0.0–2.4.x. |
Copilot's findings
- Files reviewed: 44/44 changed files
- Comments generated: 4
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| * this.dispatchReceiver = dispatchReceiver | ||
| * this.extensionReceiver = extensionReceiver | ||
| * this.codeQlExtensionReceiver = extensionReceiver | ||
| * } |
Uh oh!
There was an error while loading. Please reload this page.
30b0a30 to
547c78fCompareAdd the Kotlin 2.4.0 compiler plugin variant (component registrar, IR compatibility shims, and version-specific utilities), bundle the 2.4.0 compiler dependencies, and update the build wiring, supported version metadata and the too-new diagnostic bound. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Mark the integration tests that require a Kotlin 1.x language version with @pytest.mark.kotlin1 so CI can run them on a pinned pre-2.4 compiler (Kotlin 2.4 no longer accepts -language-version 1.9). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
79437b8 to
1b785a8Compare
jketema
left a comment
There was a problem hiding this comment.
Some comments and questions. Nothing major here.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
jketema
left a comment
There was a problem hiding this comment.
We generally do not leave empty lines between imports in integration tests.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
* Update documentation to only claim support for 2.4.0x * Python test code; remove newlines between imports. * Sync comments between kotlin 1.8 and 1.9 * Update code comments to attach where actually relevant, and improve comments on IrMemberAccessExpression<*>.extensionReceiverParameterIndex()
andersfugmann
commented
Jun 19, 2026
All but one comment addressed. |
jketema
left a comment
There was a problem hiding this comment.
I'm happy with the changes here. Probably still needs a DCA run?
Uh oh!
There was an error while loading. Please reload this page.
The Kotlin 2.4.0 extractor support (github/codeql#21970) is merged but not yet in a released CodeQL CLI — the latest (2.25.6) still caps at < 2.3.30, so the java-kotlin job fails regardless of action version. Keep the v4 upgrade (off the deprecated v3 / Node 20) and scope to c-cpp + actions; the comment records the exact condition to re-add Kotlin.
* ci: CodeQL action v4 + re-add Kotlin v3 is deprecated (Dec 2026) and runs on the now-deprecated Node 20; its bundled CodeQL CLI also predated Kotlin 2.4.0 support, which is why java-kotlin failed with 'Kotlin version 2.4.0 is too recent'. github/codeql#21970 added 2.4.0 support, shipped in v4's CLI — so move init/analyze to @v4 and restore the java-kotlin matrix entry (build-mode manual via 'flutter build apk'). * ci: keep CodeQL on v4 but drop Kotlin until a CLI ships 2.4.0 The Kotlin 2.4.0 extractor support (github/codeql#21970) is merged but not yet in a released CodeQL CLI — the latest (2.25.6) still caps at < 2.3.30, so the java-kotlin job fails regardless of action version. Keep the v4 upgrade (off the deprecated v3 / Node 20) and scope to c-cpp + actions; the comment records the exact condition to re-add Kotlin. --------- Co-authored-by: George-Cosmin Hanta <george-cosmin.hanta@marigoldointment.com>
…e_flutter 2.16.0 (#85) CodeQL CLI 2.26.0 / codeql-bundle-v2.26.0 (published 2026-07-08) ships the Kotlin 2.4.0 support merged in github/codeql#21970, so codeql-action@v4 no longer aborts with "Kotlin version 2.4.0 is too recent". Re-add the java-kotlin matrix entry (build-mode manual: setup-java temurin 17 + flutter build apk --debug, checkout with LFS for the libdovi AAR) and refresh the header comment to document the >= v2.26.0 bundle requirement. Also bump the Flutter pin 3.44.4 -> 3.44.5 across build/codeql/release workflows and upgrade supabase_flutter 2.15.4 -> 2.16.0 (supabase 2.14.0, gotrue 2.26.0, realtime_client 2.11.0, passkeys_platform_interface 2.8.0). flutter analyze clean; flutter test 141/141 pass. Closes#32 Claude-Session: https://claude.ai/code/session_01Pf76uZnruw81CCGZo1pQFo Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Add extractor support for Kotlin 2.4.0 and adjust the integration tests that depend on a pre-2.4 compiler.
Changes
BUILD.bazel,versions.bzl,MODULE.bazel,dev/wrapper.py), refreshes the supported-versions documentation, and raises the "Kotlin version too new" diagnostic bound from 2.3.30 to 2.4.10.kotlin1integration tests. Six integration tests pass-language-version 1.9, which Kotlin 2.4 no longer accepts. They are marked with@pytest.mark.kotlin1so CI can run them on a pinned pre-2.4 compiler.Notes
kotlin-version-too-newdiagnostic.-language-version 1.9is no longer available) are a needed follow-up investigation.