Skip to content

Commit 41ca791

Browse files
committed
Implement is-underscore-parameter for old versions of Kotlin
1 parent d4b0163 commit 41ca791

File tree

9 files changed

+86
-1
lines changed

9 files changed

+86
-1
lines changed

java/kotlin-extractor/src/main/kotlin/KotlinFileExtractor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.github.codeql.comments.CommentExtractor
44
import com.github.codeql.utils.*
55
import com.github.codeql.utils.versions.functionN
66
import com.github.codeql.utils.versions.getIrStubFromDescriptor
7+
import com.github.codeql.utils.versions.isUnderscoreParameter
78
import com.semmle.extractor.java.OdasaOutput
89
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
910
import org.jetbrains.kotlin.backend.common.lower.parents
@@ -642,7 +643,7 @@ open class KotlinFileExtractor(
642643
if (extractTypeAccess) {
643644
extractTypeAccessRecursive(substitutedType, location, id, -1)
644645
}
645-
val syntheticParameterNames = vp.origin == IrDeclarationOrigin.UNDERSCORE_PARAMETER || ((vp.parent as? IrFunction)?.let { hasSynthesizedParameterNames(it) } ?: true)
646+
val syntheticParameterNames = isUnderscoreParameter(vp) || ((vp.parent as? IrFunction)?.let { hasSynthesizedParameterNames(it) } ?: true)
646647
return extractValueParameter(id, substitutedType, vp.name.asString(), location, parent, idx, useValueParameter(vp, parentSourceDeclaration), vp.isVararg, syntheticParameterNames)
647648
}
648649
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
import org.jetbrains.kotlin.psi.KtParameter
6+
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
7+
import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore
8+
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
9+
10+
@OptIn(ObsoleteDescriptorBasedAPI::class)
11+
fun isUnderscoreParameter(vp: IrValueParameter) =
12+
DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs<KtParameter>()?.isSingleUnderscore == true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
import org.jetbrains.kotlin.psi.KtParameter
6+
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
7+
import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore
8+
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
9+
10+
@OptIn(ObsoleteDescriptorBasedAPI::class)
11+
fun isUnderscoreParameter(vp: IrValueParameter) =
12+
DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs<KtParameter>()?.isSingleUnderscore == true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
import org.jetbrains.kotlin.psi.KtParameter
6+
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
7+
import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore
8+
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
9+
10+
@OptIn(ObsoleteDescriptorBasedAPI::class)
11+
fun isUnderscoreParameter(vp: IrValueParameter) =
12+
DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs<KtParameter>()?.isSingleUnderscore == true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
import org.jetbrains.kotlin.psi.KtParameter
6+
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
7+
import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore
8+
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
9+
10+
@OptIn(ObsoleteDescriptorBasedAPI::class)
11+
fun isUnderscoreParameter(vp: IrValueParameter) =
12+
DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs<KtParameter>()?.isSingleUnderscore == true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
import org.jetbrains.kotlin.psi.KtParameter
6+
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
7+
import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore
8+
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
9+
10+
@OptIn(ObsoleteDescriptorBasedAPI::class)
11+
fun isUnderscoreParameter(vp: IrValueParameter) =
12+
DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs<KtParameter>()?.isSingleUnderscore == true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
import org.jetbrains.kotlin.psi.KtParameter
6+
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
7+
import org.jetbrains.kotlin.resolve.calls.util.isSingleUnderscore
8+
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
9+
10+
@OptIn(ObsoleteDescriptorBasedAPI::class)
11+
fun isUnderscoreParameter(vp: IrValueParameter) =
12+
DescriptorToSourceUtils.getSourceFromDescriptor(vp.descriptor)?.safeAs<KtParameter>()?.isSingleUnderscore == true
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
6+
fun isUnderscoreParameter(vp: IrValueParameter) = vp.origin == IrDeclarationOrigin.UNDERSCORE_PARAMETER
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
4+
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
5+
6+
fun isUnderscoreParameter(vp: IrValueParameter) = vp.origin == IrDeclarationOrigin.UNDERSCORE_PARAMETER

0 commit comments

Comments
 (0)