diff --git a/java/kotlin-extractor/build.gradle b/java/kotlin-extractor/build.gradle index 3926962fd3d..7b3853a735d 100644 --- a/java/kotlin-extractor/build.gradle +++ b/java/kotlin-extractor/build.gradle @@ -27,16 +27,12 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { sourceSets { main { kotlin { - // change the excludes for building with other versions: + // change the excludes for building with other versions. + // Currently 1.7.0 is configured: excludes = [ "utils/versions/v_1_4_32/*.kt", - "utils/versions/v_1_5_0/*.kt", - "utils/versions/v_1_5_10/*.kt", - "utils/versions/v_1_5_21/*.kt", - "utils/versions/v_1_5_31/*.kt", - "utils/versions/v_1_6_10/*.kt", - "utils/versions/v_1_6_20/*.kt", - // "utils/versions/v_1_7_0/*.kt", + "utils/versions/v_1_5_21/Descriptors.kt", + "utils/versions/v_1_6_10/Descriptors.kt", ] } } diff --git a/java/kotlin-extractor/build.py b/java/kotlin-extractor/build.py index 7d838fe1da8..3f14eb0b28e 100755 --- a/java/kotlin-extractor/build.py +++ b/java/kotlin-extractor/build.py @@ -11,6 +11,8 @@ import os import os.path import sys import shlex +import distutils +from distutils import dir_util def parse_args(): @@ -37,10 +39,11 @@ def is_windows(): return True return False + # kotlinc might be kotlinc.bat or kotlinc.cmd on Windows, so we use `which` to find out what it is kotlinc = shutil.which('kotlinc') if kotlinc is None: - print("Cannot build the Kotlin extractor: no kotlinc found on your PATH", file = sys.stderr) + print("Cannot build the Kotlin extractor: no kotlinc found on your PATH", file=sys.stderr) sys.exit(1) javac = 'javac' @@ -166,7 +169,7 @@ def transform_to_embeddable(srcs): f.write(content) -def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output, build_dir, version): +def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output, build_dir, current_version): classpath = patterns_to_classpath(dependency_folder, jars) java_classpath = patterns_to_classpath(dependency_folder, java_jars) @@ -176,9 +179,29 @@ def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output, shutil.rmtree(tmp_src_dir) shutil.copytree('src', tmp_src_dir) - for v in kotlin_plugin_versions.many_versions: - if v != version: - d = tmp_src_dir + '/main/kotlin/utils/versions/v_' + v.replace('.', '_') + include_version_folder = tmp_src_dir + '/main/kotlin/utils/versions/to_include' + os.makedirs(include_version_folder) + + parsed_current_version = kotlin_plugin_versions.version_string_to_tuple( + current_version) + + for version in kotlin_plugin_versions.many_versions: + parsed_version = kotlin_plugin_versions.version_string_to_tuple( + version) + if parsed_version[0] < parsed_current_version[0] or \ + (parsed_version[0] == parsed_current_version[0] and parsed_version[1] < parsed_current_version[1]) or \ + (parsed_version[0] == parsed_current_version[0] and parsed_version[1] == parsed_current_version[1] and parsed_version[2] <= parsed_current_version[2]): + d = tmp_src_dir + '/main/kotlin/utils/versions/v_' + \ + version.replace('.', '_') + if os.path.exists(d): + # copy and overwrite files from the version folder to the include folder + distutils.dir_util.copy_tree(d, include_version_folder) + + # remove all version folders: + for version in kotlin_plugin_versions.many_versions: + d = tmp_src_dir + '/main/kotlin/utils/versions/v_' + \ + version.replace('.', '_') + if os.path.exists(d): shutil.rmtree(d) srcs = find_sources(tmp_src_dir) @@ -209,6 +232,7 @@ def compile_standalone(version): 'build_standalone_' + version, version) + if args.single_version: compile_standalone(args.single_version) elif args.many: diff --git a/java/kotlin-extractor/kotlin_plugin_versions.py b/java/kotlin-extractor/kotlin_plugin_versions.py index e84764dbefc..94e24773ee1 100755 --- a/java/kotlin-extractor/kotlin_plugin_versions.py +++ b/java/kotlin-extractor/kotlin_plugin_versions.py @@ -21,6 +21,7 @@ def version_string_to_tuple(version): m = re.match(r'([0-9]+)\.([0-9]+)\.([0-9]+)(.*)', version) return tuple([int(m.group(i)) for i in range(1, 4)] + [m.group(4)]) +# Version numbers in the list need to be in semantically increasing order many_versions = [ '1.4.32', '1.5.0', '1.5.10', '1.5.21', '1.5.31', '1.6.10', '1.6.20', '1.7.0' ] many_versions_tuples = [version_string_to_tuple(v) for v in many_versions] diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Descriptors.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Descriptors.kt deleted file mode 100644 index d2a3de0b2c4..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Descriptors.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.KotlinUsesExtractor -import com.github.codeql.Severity -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator -import org.jetbrains.kotlin.ir.util.SymbolTable - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun KotlinUsesExtractor.getIrStubFromDescriptor(generateStub: (DeclarationStubGenerator) -> TIrStub) : TIrStub? = - (pluginContext.symbolTable as? SymbolTable) ?.let { - val stubGenerator = DeclarationStubGenerator(pluginContext.moduleDescriptor, it, pluginContext.languageVersionSettings) - generateStub(stubGenerator) - } ?: run { - logger.error("Plugin context has no symbol table, couldn't get IR stub") - null - } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt deleted file mode 100644 index cdefc93f18f..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.SourceManager - -typealias FileEntry = SourceManager.FileEntry \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt deleted file mode 100644 index 2fd45e905d9..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Functions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.declarations.IrClass - -fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass { - return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt deleted file mode 100644 index fa3c9b91a5c..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrValueParameter -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils -import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore -import org.jetbrains.kotlin.utils.addToStdlib.safeAs - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun isUnderscoreParameter(vp: IrValueParameter) = - try { - DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor) - ?.safeAs()?.isSingleUnderscore == true - } catch(e: NotImplementedError) { - // Some kinds of descriptor throw in `getSourceFromDescriptor` as that method is not normally expected to - // be applied to synthetic functions. - false - } \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt deleted file mode 100644 index fce55c87cd6..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Psi2Ir.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.FileLogger -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.psi.KtFile - -class Psi2Ir(private val logger: FileLogger) : Psi2IrFacade { - override fun getKtFile(irFile: IrFile): KtFile? { - logger.warn("Comment extraction is not supported for Kotlin < 1.5.20") - return null - } - - override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? { - logger.error("Attempted comment extraction for Kotlin < 1.5.20") - return null - } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt deleted file mode 100644 index 15a64232e37..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/Types.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.jvm.codegen.isRawType -import org.jetbrains.kotlin.ir.types.IrSimpleType - - -fun IrSimpleType.isRawType() = this.isRawType() \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt deleted file mode 100644 index 2145e289880..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/withHasQuestionMark.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.ir.types.withHasQuestionMark - -fun IrType.codeQlWithHasQuestionMark(b : Boolean): IrType { - return this.withHasQuestionMark(b) -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Descriptors.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Descriptors.kt deleted file mode 100644 index d2a3de0b2c4..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Descriptors.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.KotlinUsesExtractor -import com.github.codeql.Severity -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator -import org.jetbrains.kotlin.ir.util.SymbolTable - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun KotlinUsesExtractor.getIrStubFromDescriptor(generateStub: (DeclarationStubGenerator) -> TIrStub) : TIrStub? = - (pluginContext.symbolTable as? SymbolTable) ?.let { - val stubGenerator = DeclarationStubGenerator(pluginContext.moduleDescriptor, it, pluginContext.languageVersionSettings) - generateStub(stubGenerator) - } ?: run { - logger.error("Plugin context has no symbol table, couldn't get IR stub") - null - } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/FileEntry.kt deleted file mode 100644 index cdefc93f18f..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.SourceManager - -typealias FileEntry = SourceManager.FileEntry \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Functions.kt deleted file mode 100644 index 2fd45e905d9..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Functions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.declarations.IrClass - -fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass { - return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/IsUnderscoreParameter.kt deleted file mode 100644 index fa3c9b91a5c..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/IsUnderscoreParameter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrValueParameter -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils -import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore -import org.jetbrains.kotlin.utils.addToStdlib.safeAs - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun isUnderscoreParameter(vp: IrValueParameter) = - try { - DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor) - ?.safeAs()?.isSingleUnderscore == true - } catch(e: NotImplementedError) { - // Some kinds of descriptor throw in `getSourceFromDescriptor` as that method is not normally expected to - // be applied to synthetic functions. - false - } \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Psi2Ir.kt deleted file mode 100644 index fce55c87cd6..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Psi2Ir.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.FileLogger -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.psi.KtFile - -class Psi2Ir(private val logger: FileLogger) : Psi2IrFacade { - override fun getKtFile(irFile: IrFile): KtFile? { - logger.warn("Comment extraction is not supported for Kotlin < 1.5.20") - return null - } - - override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? { - logger.error("Attempted comment extraction for Kotlin < 1.5.20") - return null - } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Types.kt deleted file mode 100644 index 15a64232e37..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/Types.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.jvm.codegen.isRawType -import org.jetbrains.kotlin.ir.types.IrSimpleType - - -fun IrSimpleType.isRawType() = this.isRawType() \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/withHasQuestionMark.kt deleted file mode 100644 index 2145e289880..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/withHasQuestionMark.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.ir.types.withHasQuestionMark - -fun IrType.codeQlWithHasQuestionMark(b : Boolean): IrType { - return this.withHasQuestionMark(b) -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Functions.kt deleted file mode 100644 index 2fd45e905d9..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Functions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.declarations.IrClass - -fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass { - return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/IsUnderscoreParameter.kt deleted file mode 100644 index fa3c9b91a5c..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/IsUnderscoreParameter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrValueParameter -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils -import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore -import org.jetbrains.kotlin.utils.addToStdlib.safeAs - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun isUnderscoreParameter(vp: IrValueParameter) = - try { - DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor) - ?.safeAs()?.isSingleUnderscore == true - } catch(e: NotImplementedError) { - // Some kinds of descriptor throw in `getSourceFromDescriptor` as that method is not normally expected to - // be applied to synthetic functions. - false - } \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Types.kt deleted file mode 100644 index 15a64232e37..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/Types.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.jvm.codegen.isRawType -import org.jetbrains.kotlin.ir.types.IrSimpleType - - -fun IrSimpleType.isRawType() = this.isRawType() \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/withHasQuestionMark.kt deleted file mode 100644 index 2145e289880..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/withHasQuestionMark.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.ir.types.withHasQuestionMark - -fun IrType.codeQlWithHasQuestionMark(b : Boolean): IrType { - return this.withHasQuestionMark(b) -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Descriptors.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Descriptors.kt deleted file mode 100644 index dac7205218e..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Descriptors.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.KotlinUsesExtractor -import com.github.codeql.Severity -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator -import org.jetbrains.kotlin.ir.util.SymbolTable -import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorImpl - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun KotlinUsesExtractor.getIrStubFromDescriptor(generateStub: (DeclarationStubGenerator) -> TIrStub) : TIrStub? = - (pluginContext.symbolTable as? SymbolTable) ?.let { - val stubGenerator = DeclarationStubGeneratorImpl(pluginContext.moduleDescriptor, it, pluginContext.languageVersionSettings) - generateStub(stubGenerator) - } ?: run { - logger.error("Plugin context has no symbol table, couldn't get IR stub") - null - } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/FileEntry.kt deleted file mode 100644 index e09b6baa52e..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrFileEntry - -typealias FileEntry = IrFileEntry \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Functions.kt deleted file mode 100644 index 2fd45e905d9..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Functions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext -import org.jetbrains.kotlin.ir.declarations.IrClass - -fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass { - return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/IsUnderscoreParameter.kt deleted file mode 100644 index fa3c9b91a5c..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/IsUnderscoreParameter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrValueParameter -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils -import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore -import org.jetbrains.kotlin.utils.addToStdlib.safeAs - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun isUnderscoreParameter(vp: IrValueParameter) = - try { - DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor) - ?.safeAs()?.isSingleUnderscore == true - } catch(e: NotImplementedError) { - // Some kinds of descriptor throw in `getSourceFromDescriptor` as that method is not normally expected to - // be applied to synthetic functions. - false - } \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Psi2Ir.kt deleted file mode 100644 index 8e21191f2a0..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Psi2Ir.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.FileLogger -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager -import org.jetbrains.kotlin.backend.jvm.ir.getKtFile -import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.psi.KtFile - -class Psi2Ir(private val logger: FileLogger): Psi2IrFacade { - override fun getKtFile(irFile: IrFile): KtFile? { - return irFile.getKtFile() - } - - override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? { - return PsiSourceManager.findPsiElement(irElement, irFile) - } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Types.kt deleted file mode 100644 index 15a64232e37..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/Types.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.jvm.codegen.isRawType -import org.jetbrains.kotlin.ir.types.IrSimpleType - - -fun IrSimpleType.isRawType() = this.isRawType() \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/withHasQuestionMark.kt deleted file mode 100644 index 2145e289880..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/withHasQuestionMark.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.ir.types.withHasQuestionMark - -fun IrType.codeQlWithHasQuestionMark(b : Boolean): IrType { - return this.withHasQuestionMark(b) -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/FileEntry.kt deleted file mode 100644 index e09b6baa52e..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrFileEntry - -typealias FileEntry = IrFileEntry \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/IsUnderscoreParameter.kt deleted file mode 100644 index fa3c9b91a5c..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/IsUnderscoreParameter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.declarations.IrValueParameter -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils -import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore -import org.jetbrains.kotlin.utils.addToStdlib.safeAs - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun isUnderscoreParameter(vp: IrValueParameter) = - try { - DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor) - ?.safeAs()?.isSingleUnderscore == true - } catch(e: NotImplementedError) { - // Some kinds of descriptor throw in `getSourceFromDescriptor` as that method is not normally expected to - // be applied to synthetic functions. - false - } \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/Psi2Ir.kt deleted file mode 100644 index 8e21191f2a0..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/Psi2Ir.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.FileLogger -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager -import org.jetbrains.kotlin.backend.jvm.ir.getKtFile -import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.psi.KtFile - -class Psi2Ir(private val logger: FileLogger): Psi2IrFacade { - override fun getKtFile(irFile: IrFile): KtFile? { - return irFile.getKtFile() - } - - override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? { - return PsiSourceManager.findPsiElement(irElement, irFile) - } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/Types.kt deleted file mode 100644 index 15a64232e37..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/Types.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.jvm.codegen.isRawType -import org.jetbrains.kotlin.ir.types.IrSimpleType - - -fun IrSimpleType.isRawType() = this.isRawType() \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/withHasQuestionMark.kt deleted file mode 100644 index 2145e289880..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/withHasQuestionMark.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.ir.types.withHasQuestionMark - -fun IrType.codeQlWithHasQuestionMark(b : Boolean): IrType { - return this.withHasQuestionMark(b) -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Descriptors.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Descriptors.kt deleted file mode 100644 index 661e3d425f6..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Descriptors.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.KotlinUsesExtractor -import com.github.codeql.Severity -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI -import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator -import org.jetbrains.kotlin.ir.util.SymbolTable -import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorImpl - -@OptIn(ObsoleteDescriptorBasedAPI::class) -fun KotlinUsesExtractor.getIrStubFromDescriptor(generateStub: (DeclarationStubGenerator) -> TIrStub) : TIrStub? = - (pluginContext.symbolTable as? SymbolTable) ?.let { - val stubGenerator = DeclarationStubGeneratorImpl(pluginContext.moduleDescriptor, it, pluginContext.irBuiltIns) - generateStub(stubGenerator) - } ?: run { - logger.error("Plugin context has no symbol table, couldn't get IR stub") - null - } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/FileEntry.kt deleted file mode 100644 index e09b6baa52e..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrFileEntry - -typealias FileEntry = IrFileEntry \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Functions.kt deleted file mode 100644 index 816b9cc2272..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Functions.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext - -fun functionN(pluginContext: IrPluginContext) = pluginContext.irBuiltIns::functionN \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Psi2Ir.kt deleted file mode 100644 index 8e21191f2a0..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/Psi2Ir.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.FileLogger -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager -import org.jetbrains.kotlin.backend.jvm.ir.getKtFile -import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.psi.KtFile - -class Psi2Ir(private val logger: FileLogger): Psi2IrFacade { - override fun getKtFile(irFile: IrFile): KtFile? { - return irFile.getKtFile() - } - - override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? { - return PsiSourceManager.findPsiElement(irElement, irFile) - } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/withHasQuestionMark.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/withHasQuestionMark.kt deleted file mode 100644 index 2145e289880..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/withHasQuestionMark.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.ir.types.withHasQuestionMark - -fun IrType.codeQlWithHasQuestionMark(b : Boolean): IrType { - return this.withHasQuestionMark(b) -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/FileEntry.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/FileEntry.kt deleted file mode 100644 index e09b6baa52e..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/FileEntry.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.IrFileEntry - -typealias FileEntry = IrFileEntry \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Functions.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Functions.kt deleted file mode 100644 index 816b9cc2272..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Functions.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext - -fun functionN(pluginContext: IrPluginContext) = pluginContext.irBuiltIns::functionN \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/IsUnderscoreParameter.kt deleted file mode 100644 index 00effc32c20..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/IsUnderscoreParameter.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrValueParameter - -fun isUnderscoreParameter(vp: IrValueParameter) = vp.origin == IrDeclarationOrigin.UNDERSCORE_PARAMETER diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Psi2Ir.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Psi2Ir.kt deleted file mode 100644 index 8e21191f2a0..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Psi2Ir.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.codeql.utils.versions - -import com.github.codeql.FileLogger -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager -import org.jetbrains.kotlin.backend.jvm.ir.getKtFile -import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.psi.KtFile - -class Psi2Ir(private val logger: FileLogger): Psi2IrFacade { - override fun getKtFile(irFile: IrFile): KtFile? { - return irFile.getKtFile() - } - - override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? { - return PsiSourceManager.findPsiElement(irElement, irFile) - } -} diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Types.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Types.kt deleted file mode 100644 index e3be8f45d1b..00000000000 --- a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/Types.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.codeql.utils.versions - -import org.jetbrains.kotlin.backend.jvm.ir.isRawType -import org.jetbrains.kotlin.ir.types.IrSimpleType - - -fun IrSimpleType.isRawType() = this.isRawType() \ No newline at end of file