Skip to content

Conversation

@andersfugmann
Copy link
Contributor

This PR add support for Kotlin 2.3.0-Beta2.

To support Kotlin 2.3.0-Beta2, and update of the rules_kotlin bazel package needs to be updated to 2.2.0. Unfortunatly that drops support for Kotlin 1.6.x and 1.7.x.

Copilot AI review requested due to automatic review settings December 4, 2025 16:09
@andersfugmann andersfugmann requested review from a team as code owners December 4, 2025 16:09
@github-actions github-actions bot added the Kotlin label Dec 4, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for Kotlin 2.3.0-Beta2 by updating the rules_kotlin Bazel package from version 2.1.3-codeql.1 to 2.2.0-codeql.1. This update necessarily drops support for Kotlin versions 1.6.x and 1.7.x.

Key Changes:

  • Updated rules_kotlin from 2.1.3-codeql.1 to 2.2.0-codeql.1 with updated dependencies and patches
  • Added support for Kotlin 2.3.0-Beta2 with version-specific compatibility files
  • Removed support for Kotlin 1.6.0, 1.6.20, 1.7.0, and 1.7.20 (dependencies and version-specific files)

Reviewed changes

Copilot reviewed 29 out of 29 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
misc/bazel/registry/modules/rules_kotlin/metadata.json Updated to reference only the new 2.2.0-codeql.1 version
misc/bazel/registry/modules/rules_kotlin/2.2.0-codeql.1/source.json New source configuration for rules_kotlin 2.2.0 with patch references
misc/bazel/registry/modules/rules_kotlin/2.2.0-codeql.1/patches/*.patch Updated patch files for the new rules_kotlin version
misc/bazel/registry/modules/rules_kotlin/2.2.0-codeql.1/MODULE.bazel New MODULE.bazel with updated dependencies (rules_android 0.6.4, protobuf 29.0, etc.)
misc/bazel/registry/modules/rules_kotlin/2.1.3-codeql.1/source.json Removed old version configuration
java/kotlin-extractor/versions.bzl Removed 1.6.x and 1.7.x versions, added 2.3.0-Beta2
java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_3_0-Beta2/*.kt Added version-specific compatibility files for Kotlin 2.3.0-Beta2
java/kotlin-extractor/src/main/kotlin/utils/TypeSubstitution.kt Added @Suppress("REDUNDANT_ELSE_IN_WHEN") annotations for Kotlin 2.3 compatibility
java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt Removed TODO comment and added suppression annotation
java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt Added suppression annotations, explicit return type, and workaround for nullable delegate property
java/kotlin-extractor/deps/*.jar Removed 1.6.x and 1.7.x dependency JARs, added 2.3.0-Beta2 JARs
java/kotlin-extractor/BUILD.bazel Removed resource_strip_prefix configuration
MODULE.bazel Updated rules_kotlin dependency and repository references
Comments suppressed due to low confidence (1)

misc/bazel/registry/modules/rules_kotlin/2.2.0-codeql.1/MODULE.bazel:10

  • There is a commented-out duplicate declaration of bazel_dep(name = "rules_java", version = "7.2.0") on line 10, with an active identical declaration on line 11. This commented line should be removed unless there's a specific reason to keep it.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@andersfugmann andersfugmann marked this pull request as draft December 5, 2025 10:06
@igfoo
Copy link
Contributor

igfoo commented Dec 5, 2025

If we're removing support for 1.6 and 1.7, then we should move (into v_1_8_0) or delete all the files in utils/versions/v_1_{6,7}*

@Suppress("USELESS_CAST")
val delegate = (s.delegate as IrVariable?) ?: run {
logger.errorElement("Local delegated property is missing delegate", s)
return
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we want to just skip the next few lines, continuing at // Getter:, rather than returning?

// For Kotlin < 2.3, s.delegate is not-nullable. Cast to a be nullable,
// as a workaround to silence warnings for kotlin < 2.3 about the elvis
// operator being redundant.
// For Kotlin >= 2.3, the cast is redundant, so we need to silence that warning
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know why it is now nullable? Is that actually an error?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tbh, I have not dug into why it can be nullable. Let me take a look at the API to understand if its an error if its null.

@hfhbd
Copy link

hfhbd commented Dec 16, 2025

BTW Kotlin 2.3.0 is released, so you can update 2.3.0-Beta2 to 2.3.0

@sgammon
Copy link

sgammon commented Dec 31, 2025

@andersfugmann we are blocked on this, can i help in any way? i tried to complete it on our own fork but couldn't, for version 2.3.0

@andersfugmann
Copy link
Contributor Author

andersfugmann commented Jan 5, 2026

Thanks for the offer to help @sgammon. We have been making progress and expect to have a working solution this week. Support for Kotlin 2.3 is expected to be available in CodeQL 2.24.1 (Early February)

This change rolls up all files from v1_6_0, v1_6_20, v1_7_0 and v_1_7_20.
In addition, versioned files that are not overridden by any later Kotlin versions (i.e. files that only have one copy under utils/versions) are inlined and removed to simplify list of changes.

List of removed/inlined files:
     allOverriddenIncludingSelf.kt
     copyTo.kt
     ExperimentalCompilerApi.kt
     getFileClassFqName.kt
     IsUnderscoreParameter.kt
     ReferenceEntity.kt
     SyntheticBodyKind.kt
     Types.kt
     withHasQuestionMark.kt
@andersfugmann andersfugmann force-pushed the andersfugmann/kotlin_2.3.0-beta2 branch from 2e8db58 to be03a72 Compare January 5, 2026 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants