From 0ac81c7aea69aa06c9af9b0e94e02acc749bd461 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 8 Jan 2025 12:26:14 +0000 Subject: [PATCH 1/4] Kotlin: Add 2.1.20-Beta1 deps --- java/kotlin-extractor/deps/kotlin-compiler-2.1.20-Beta1.jar | 3 +++ .../deps/kotlin-compiler-embeddable-2.1.20-Beta1.jar | 3 +++ java/kotlin-extractor/deps/kotlin-stdlib-2.1.20-Beta1.jar | 3 +++ 3 files changed, 9 insertions(+) create mode 100644 java/kotlin-extractor/deps/kotlin-compiler-2.1.20-Beta1.jar create mode 100644 java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.1.20-Beta1.jar create mode 100644 java/kotlin-extractor/deps/kotlin-stdlib-2.1.20-Beta1.jar diff --git a/java/kotlin-extractor/deps/kotlin-compiler-2.1.20-Beta1.jar b/java/kotlin-extractor/deps/kotlin-compiler-2.1.20-Beta1.jar new file mode 100644 index 000000000000..83666567390e --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-compiler-2.1.20-Beta1.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bc01138d15bc1b7657480ce9fabbbb704626f92287edc05745341b11d8795b4 +size 57815398 diff --git a/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.1.20-Beta1.jar b/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.1.20-Beta1.jar new file mode 100644 index 000000000000..d95916683434 --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-compiler-embeddable-2.1.20-Beta1.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bba10897b31a9e2b6b436bfc9e36ddfda3320f7306f32ccf896339fda3e5c64c +size 56337688 diff --git a/java/kotlin-extractor/deps/kotlin-stdlib-2.1.20-Beta1.jar b/java/kotlin-extractor/deps/kotlin-stdlib-2.1.20-Beta1.jar new file mode 100644 index 000000000000..7c5c56eae6af --- /dev/null +++ b/java/kotlin-extractor/deps/kotlin-stdlib-2.1.20-Beta1.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ec0d983b549c7296535e0fc4e1b1af38eda7c1e25c7b0f8421c133ce50e3f01 +size 1688617 From c8b1efd5281c3c73be5351dab86193741aa88e79 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 8 Jan 2025 12:27:51 +0000 Subject: [PATCH 2/4] Kotlin: Add 2.1.20-Beta1 --- MODULE.bazel | 3 +++ java/kotlin-extractor/versions.bzl | 1 + 2 files changed, 4 insertions(+) diff --git a/MODULE.bazel b/MODULE.bazel index b409d751ac6d..60d1c3b123ea 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -151,6 +151,7 @@ use_repo( "kotlin-compiler-2.0.0-RC1", "kotlin-compiler-2.0.20-Beta2", "kotlin-compiler-2.1.0-Beta1", + "kotlin-compiler-2.1.20-Beta1", "kotlin-compiler-embeddable-1.5.0", "kotlin-compiler-embeddable-1.5.10", "kotlin-compiler-embeddable-1.5.20", @@ -165,6 +166,7 @@ use_repo( "kotlin-compiler-embeddable-2.0.0-RC1", "kotlin-compiler-embeddable-2.0.20-Beta2", "kotlin-compiler-embeddable-2.1.0-Beta1", + "kotlin-compiler-embeddable-2.1.20-Beta1", "kotlin-stdlib-1.5.0", "kotlin-stdlib-1.5.10", "kotlin-stdlib-1.5.20", @@ -179,6 +181,7 @@ use_repo( "kotlin-stdlib-2.0.0-RC1", "kotlin-stdlib-2.0.20-Beta2", "kotlin-stdlib-2.1.0-Beta1", + "kotlin-stdlib-2.1.20-Beta1", ) go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk") diff --git a/java/kotlin-extractor/versions.bzl b/java/kotlin-extractor/versions.bzl index aecb170b6304..c48f98ae363e 100644 --- a/java/kotlin-extractor/versions.bzl +++ b/java/kotlin-extractor/versions.bzl @@ -14,6 +14,7 @@ VERSIONS = [ "2.0.0-RC1", "2.0.20-Beta2", "2.1.0-Beta1", + "2.1.20-Beta1", ] def _version_to_tuple(v): From f0a904e3049ec964e83c14525dde2df812a15264 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 8 Jan 2025 14:13:46 +0000 Subject: [PATCH 3/4] Kotlin: Fix build with 2.1.20-Beta1 --- .../src/main/kotlin/KotlinFileExtractor.kt | 14 +++++++++++++- .../src/main/kotlin/KotlinUsesExtractor.kt | 19 ++++++++++++++++++- .../src/main/kotlin/utils/ClassNames.kt | 6 +++--- .../src/main/kotlin/utils/TypeSubstitution.kt | 16 ++++++++++------ .../utils/versions/v_1_5_0/IrBuiltIns.kt | 5 +++++ ...nt.kt => VirtualFileBasedSourceElement.kt} | 6 ++++-- .../utils/versions/v_1_5_0/isNullable.kt | 11 +++++++++++ .../utils/versions/v_1_6_0/IrBuiltIns.kt | 5 +++++ .../v_2_0_0-RC1/JavaBinarySourceElement.kt | 3 --- .../VirtualFileBasedSourceElement.kt | 3 +++ .../versions/v_2_1_0-Beta1/isNullable.kt | 11 +++++++++++ .../VirtualFileBasedSourceElement.kt | 1 + .../versions/v_2_1_20-Beta1/isNullable.kt | 1 + 13 files changed, 85 insertions(+), 16 deletions(-) create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt rename java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/{JavaBinarySourceElement.kt => VirtualFileBasedSourceElement.kt} (56%) create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isNullable.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt delete mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/JavaBinarySourceElement.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/VirtualFileBasedSourceElement.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_0-Beta1/isNullable.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/VirtualFileBasedSourceElement.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/isNullable.kt diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 42617078ff54..902387d43e65 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -25,7 +25,19 @@ import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyFunction import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.symbols.* -import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.types.classFqName +import org.jetbrains.kotlin.ir.types.classifierOrFail +import org.jetbrains.kotlin.ir.types.classOrNull +import org.jetbrains.kotlin.ir.types.isAny +import org.jetbrains.kotlin.ir.types.isNullableAny +import org.jetbrains.kotlin.ir.types.typeOrNull +import org.jetbrains.kotlin.ir.types.typeWith +import org.jetbrains.kotlin.ir.types.typeWithArguments +import org.jetbrains.kotlin.ir.types.IrSimpleType +import org.jetbrains.kotlin.ir.types.IrStarProjection +import org.jetbrains.kotlin.ir.types.IrType +import org.jetbrains.kotlin.ir.types.IrTypeArgument +import org.jetbrains.kotlin.ir.types.IrTypeProjection import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.load.java.JvmAnnotationNames diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index 03b74db19fac..ead0a23374ac 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt @@ -12,7 +12,24 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.symbols.* -import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.types.addAnnotations +import org.jetbrains.kotlin.ir.types.classFqName +import org.jetbrains.kotlin.ir.types.classifierOrNull +import org.jetbrains.kotlin.ir.types.classOrNull +import org.jetbrains.kotlin.ir.types.isAny +import org.jetbrains.kotlin.ir.types.isNullableAny +import org.jetbrains.kotlin.ir.types.isPrimitiveType +import org.jetbrains.kotlin.ir.types.makeNullable +import org.jetbrains.kotlin.ir.types.typeOrNull +import org.jetbrains.kotlin.ir.types.typeWith +import org.jetbrains.kotlin.ir.types.typeWithArguments +import org.jetbrains.kotlin.ir.types.IrDynamicType +import org.jetbrains.kotlin.ir.types.IrErrorType +import org.jetbrains.kotlin.ir.types.IrSimpleType +import org.jetbrains.kotlin.ir.types.IrStarProjection +import org.jetbrains.kotlin.ir.types.IrType +import org.jetbrains.kotlin.ir.types.IrTypeArgument +import org.jetbrains.kotlin.ir.types.IrTypeProjection import org.jetbrains.kotlin.ir.types.impl.* import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature diff --git a/java/kotlin-extractor/src/main/kotlin/utils/ClassNames.kt b/java/kotlin-extractor/src/main/kotlin/utils/ClassNames.kt index 54373933b843..5a06de67c042 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/ClassNames.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/ClassNames.kt @@ -5,7 +5,7 @@ import com.github.codeql.utils.versions.* import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap -import org.jetbrains.kotlin.fir.java.JavaBinarySourceElement +import org.jetbrains.kotlin.fir.java.VirtualFileBasedSourceElement import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable @@ -89,8 +89,8 @@ fun getIrClassVirtualFile(irClass: IrClass): VirtualFile? { is BinaryJavaClass -> return element.virtualFile } } - is JavaBinarySourceElement -> { - return cSource.javaClass.virtualFile + is VirtualFileBasedSourceElement -> { + return cSource.virtualFile } is KotlinJvmBinarySourceElement -> { val binaryClass = cSource.binaryClass diff --git a/java/kotlin-extractor/src/main/kotlin/utils/TypeSubstitution.kt b/java/kotlin-extractor/src/main/kotlin/utils/TypeSubstitution.kt index 6f8d0d33f373..aacc15c56647 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/TypeSubstitution.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/TypeSubstitution.kt @@ -5,6 +5,7 @@ import com.github.codeql.Logger import com.github.codeql.getJavaEquivalentClassId import com.github.codeql.utils.versions.codeQlWithHasQuestionMark import com.github.codeql.utils.versions.createImplicitParameterDeclarationWithWrappedDescriptor +import com.github.codeql.utils.versions.* import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.ir.builders.declarations.addConstructor @@ -18,15 +19,18 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.symbols.impl.DescriptorlessExternalPackageFragmentSymbol -import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.types.addAnnotations +import org.jetbrains.kotlin.ir.types.classifierOrNull +import org.jetbrains.kotlin.ir.types.typeWith +import org.jetbrains.kotlin.ir.types.IrSimpleType +import org.jetbrains.kotlin.ir.types.IrStarProjection +import org.jetbrains.kotlin.ir.types.IrType +import org.jetbrains.kotlin.ir.types.IrTypeArgument +import org.jetbrains.kotlin.ir.types.IrTypeProjection import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.types.impl.IrStarProjectionImpl import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection -import org.jetbrains.kotlin.ir.util.classId -import org.jetbrains.kotlin.ir.util.constructedClassType -import org.jetbrains.kotlin.ir.util.constructors -import org.jetbrains.kotlin.ir.util.kotlinFqName -import org.jetbrains.kotlin.ir.util.parents +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.Variance diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt new file mode 100644 index 000000000000..825fc46b0d86 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IrBuiltIns.kt @@ -0,0 +1,5 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns + +typealias IrBuiltIns = IrBuiltIns diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JavaBinarySourceElement.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/VirtualFileBasedSourceElement.kt similarity index 56% rename from java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JavaBinarySourceElement.kt rename to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/VirtualFileBasedSourceElement.kt index 71b45fa3cbb6..9cba41929937 100644 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/JavaBinarySourceElement.kt +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/VirtualFileBasedSourceElement.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.fir.java +import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.load.java.structure.impl.classFiles.BinaryJavaClass @@ -7,5 +8,6 @@ import org.jetbrains.kotlin.load.java.structure.impl.classFiles.BinaryJavaClass We need this class to exist, but the compiler will never give us an instance of it. */ -abstract class JavaBinarySourceElement private constructor(val javaClass: BinaryJavaClass) : - SourceElement {} +abstract class VirtualFileBasedSourceElement private constructor(val javaClass: BinaryJavaClass) : SourceElement { + abstract val virtualFile: VirtualFile +} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isNullable.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isNullable.kt new file mode 100644 index 000000000000..b98ad476f124 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/isNullable.kt @@ -0,0 +1,11 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.types.* + +fun IrType.isNullable(): Boolean = + isNullable() + +val IrType.isBoxedArray: Boolean by IrType::isBoxedArray + +fun IrType.getArrayElementType(irBuiltIns: IrBuiltIns): IrType = + getArrayElementType(irBuiltIns) diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt new file mode 100644 index 000000000000..79b7f29ea409 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_0/IrBuiltIns.kt @@ -0,0 +1,5 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.IrBuiltIns + +typealias IrBuiltIns = IrBuiltIns diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/JavaBinarySourceElement.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/JavaBinarySourceElement.kt deleted file mode 100644 index 80167cbcc8f1..000000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/JavaBinarySourceElement.kt +++ /dev/null @@ -1,3 +0,0 @@ -/* -The compiler provides this class, so we don't have to do anything. -*/ diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/VirtualFileBasedSourceElement.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/VirtualFileBasedSourceElement.kt new file mode 100644 index 000000000000..c4d4d8efe2bb --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_0_0-RC1/VirtualFileBasedSourceElement.kt @@ -0,0 +1,3 @@ +package org.jetbrains.kotlin.fir.java + +typealias VirtualFileBasedSourceElement = JavaBinarySourceElement diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_0-Beta1/isNullable.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_0-Beta1/isNullable.kt new file mode 100644 index 000000000000..b98ad476f124 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_0-Beta1/isNullable.kt @@ -0,0 +1,11 @@ +package com.github.codeql.utils.versions + +import org.jetbrains.kotlin.ir.types.* + +fun IrType.isNullable(): Boolean = + isNullable() + +val IrType.isBoxedArray: Boolean by IrType::isBoxedArray + +fun IrType.getArrayElementType(irBuiltIns: IrBuiltIns): IrType = + getArrayElementType(irBuiltIns) diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/VirtualFileBasedSourceElement.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/VirtualFileBasedSourceElement.kt new file mode 100644 index 000000000000..9c103006099f --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/VirtualFileBasedSourceElement.kt @@ -0,0 +1 @@ +// Nothing to do diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/isNullable.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/isNullable.kt new file mode 100644 index 000000000000..9c103006099f --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_2_1_20-Beta1/isNullable.kt @@ -0,0 +1 @@ +// Nothing to do From 32f83f37eb5bc2885ecec33117f52d84918855ce Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 8 Jan 2025 17:28:23 +0000 Subject: [PATCH 4/4] Kotlin: Add support for 2.0.20 --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- .../diagnostics/kotlin-version-too-new/diagnostics.expected | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index 168b5170cf0f..9831e48e1a9b 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -20,7 +20,7 @@ Java,"Java 7 to 22 [5]_","javac (OpenJDK and Oracle JDK), Eclipse compiler for Java (ECJ) [6]_",``.java`` - Kotlin,"Kotlin 1.5.0 to 2.1.0\ *x*","kotlinc",``.kt`` + Kotlin,"Kotlin 1.5.0 to 2.1.20\ *x*","kotlinc",``.kt`` JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [7]_" Python [8]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13",Not applicable,``.py`` Ruby [9]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" diff --git a/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected index 401eaa6ee9d1..9a2cbdc1ab08 100644 --- a/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected +++ b/java/ql/integration-tests/kotlin/all-platforms/diagnostics/kotlin-version-too-new/diagnostics.expected @@ -1,5 +1,5 @@ { - "markdownMessage": "The Kotlin version installed (`999.999.999`) is too recent for this version of CodeQL. Install a version lower than 2.1.10.", + "markdownMessage": "The Kotlin version installed (`999.999.999`) is too recent for this version of CodeQL. Install a version lower than 2.1.30.", "severity": "error", "source": { "extractorName": "java",