From 41ca7919664db1fc8cda7700f6708a765904ca9d Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Fri, 15 Jul 2022 12:36:37 +0100 Subject: [PATCH] Implement is-underscore-parameter for old versions of Kotlin --- .../src/main/kotlin/KotlinFileExtractor.kt | 3 ++- .../utils/versions/v_1_4_32/IsUnderscoreParameter.kt | 12 ++++++++++++ .../utils/versions/v_1_5_0/IsUnderscoreParameter.kt | 12 ++++++++++++ .../utils/versions/v_1_5_10/IsUnderscoreParameter.kt | 12 ++++++++++++ .../utils/versions/v_1_5_21/IsUnderscoreParameter.kt | 12 ++++++++++++ .../utils/versions/v_1_5_31/IsUnderscoreParameter.kt | 12 ++++++++++++ .../utils/versions/v_1_6_10/IsUnderscoreParameter.kt | 12 ++++++++++++ .../utils/versions/v_1_6_20/IsUnderscoreParameter.kt | 6 ++++++ .../utils/versions/v_1_7_0/IsUnderscoreParameter.kt | 6 ++++++ 9 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/IsUnderscoreParameter.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/IsUnderscoreParameter.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/IsUnderscoreParameter.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/IsUnderscoreParameter.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/IsUnderscoreParameter.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/IsUnderscoreParameter.kt create mode 100644 java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/IsUnderscoreParameter.kt diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt index 9ffd4115e2c..268e4b43bf2 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt @@ -4,6 +4,7 @@ import com.github.codeql.comments.CommentExtractor import com.github.codeql.utils.* import com.github.codeql.utils.versions.functionN import com.github.codeql.utils.versions.getIrStubFromDescriptor +import com.github.codeql.utils.versions.isUnderscoreParameter import com.semmle.extractor.java.OdasaOutput import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.backend.common.lower.parents @@ -642,7 +643,7 @@ open class KotlinFileExtractor( if (extractTypeAccess) { extractTypeAccessRecursive(substitutedType, location, id, -1) } - val syntheticParameterNames = vp.origin == IrDeclarationOrigin.UNDERSCORE_PARAMETER || ((vp.parent as? IrFunction)?.let { hasSynthesizedParameterNames(it) } ?: true) + val syntheticParameterNames = isUnderscoreParameter(vp) || ((vp.parent as? IrFunction)?.let { hasSynthesizedParameterNames(it) } ?: true) return extractValueParameter(id, substitutedType, vp.name.asString(), location, parent, idx, useValueParameter(vp, parentSourceDeclaration), vp.isVararg, syntheticParameterNames) } } diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/IsUnderscoreParameter.kt new file mode 100644 index 00000000000..59fd08c95f5 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/IsUnderscoreParameter.kt @@ -0,0 +1,12 @@ +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) = + DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs()?.isSingleUnderscore == true \ No newline at end of file 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 new file mode 100644 index 00000000000..59fd08c95f5 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_0/IsUnderscoreParameter.kt @@ -0,0 +1,12 @@ +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) = + DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs()?.isSingleUnderscore == true \ No newline at end of file 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 new file mode 100644 index 00000000000..59fd08c95f5 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_10/IsUnderscoreParameter.kt @@ -0,0 +1,12 @@ +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) = + DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs()?.isSingleUnderscore == true \ No newline at end of file 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 new file mode 100644 index 00000000000..59fd08c95f5 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_21/IsUnderscoreParameter.kt @@ -0,0 +1,12 @@ +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) = + DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs()?.isSingleUnderscore == true \ No newline at end of file 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 new file mode 100644 index 00000000000..59fd08c95f5 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_5_31/IsUnderscoreParameter.kt @@ -0,0 +1,12 @@ +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) = + DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs()?.isSingleUnderscore == true \ 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 new file mode 100644 index 00000000000..59fd08c95f5 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_10/IsUnderscoreParameter.kt @@ -0,0 +1,12 @@ +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) = + DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs()?.isSingleUnderscore == true \ No newline at end of file diff --git a/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/IsUnderscoreParameter.kt new file mode 100644 index 00000000000..00effc32c20 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_6_20/IsUnderscoreParameter.kt @@ -0,0 +1,6 @@ +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/IsUnderscoreParameter.kt b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/IsUnderscoreParameter.kt new file mode 100644 index 00000000000..00effc32c20 --- /dev/null +++ b/java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_7_0/IsUnderscoreParameter.kt @@ -0,0 +1,6 @@ +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