mirror of
https://github.com/github/codeql.git
synced 2025-12-22 11:46:32 +01:00
Kotlin: Don't extract a name for a '_' parameter
I can't reproduce the exact circumstances, but these sometimes get "<anonymous parameter X>" names and sometimes get "$noName_X" names. Whichever way, avoiding extracting a synthetic name seems safest; anyone finding the .class file and not reading the metadata indicating it came from a `_` will extract the binary name selected, or else QL will invent a name.
This commit is contained in:
@@ -642,7 +642,7 @@ open class KotlinFileExtractor(
|
|||||||
if (extractTypeAccess) {
|
if (extractTypeAccess) {
|
||||||
extractTypeAccessRecursive(substitutedType, location, id, -1)
|
extractTypeAccessRecursive(substitutedType, location, id, -1)
|
||||||
}
|
}
|
||||||
val syntheticParameterNames = (vp.parent as? IrFunction)?.let { hasSynthesizedParameterNames(it) } ?: true
|
val syntheticParameterNames = vp.origin == IrDeclarationOrigin.UNDERSCORE_PARAMETER || ((vp.parent as? IrFunction)?.let { hasSynthesizedParameterNames(it) } ?: true)
|
||||||
return extractValueParameter(id, substitutedType, vp.name.asString(), location, parent, idx, useValueParameter(vp, parentSourceDeclaration), vp.isVararg, syntheticParameterNames)
|
return extractValueParameter(id, substitutedType, vp.name.asString(), location, parent, idx, useValueParameter(vp, parentSourceDeclaration), vp.isVararg, syntheticParameterNames)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3583,7 +3583,7 @@ funcExprs.kt:
|
|||||||
# 27| 2: [Method] invoke
|
# 27| 2: [Method] invoke
|
||||||
# 27| 3: [TypeAccess] int
|
# 27| 3: [TypeAccess] int
|
||||||
#-----| 4: (Parameters)
|
#-----| 4: (Parameters)
|
||||||
# 27| 0: [Parameter] <anonymous parameter 0>
|
# 27| 0: [Parameter] p0
|
||||||
# 27| 0: [TypeAccess] int
|
# 27| 0: [TypeAccess] int
|
||||||
# 27| 5: [BlockStmt] { ... }
|
# 27| 5: [BlockStmt] { ... }
|
||||||
# 27| 0: [ReturnStmt] return ...
|
# 27| 0: [ReturnStmt] return ...
|
||||||
@@ -3629,9 +3629,9 @@ funcExprs.kt:
|
|||||||
# 30| 2: [Method] invoke
|
# 30| 2: [Method] invoke
|
||||||
# 30| 3: [TypeAccess] int
|
# 30| 3: [TypeAccess] int
|
||||||
#-----| 4: (Parameters)
|
#-----| 4: (Parameters)
|
||||||
# 30| 0: [Parameter] <anonymous parameter 0>
|
# 30| 0: [Parameter] p0
|
||||||
# 30| 0: [TypeAccess] int
|
# 30| 0: [TypeAccess] int
|
||||||
# 30| 1: [Parameter] <anonymous parameter 1>
|
# 30| 1: [Parameter] p1
|
||||||
# 30| 0: [TypeAccess] int
|
# 30| 0: [TypeAccess] int
|
||||||
# 30| 5: [BlockStmt] { ... }
|
# 30| 5: [BlockStmt] { ... }
|
||||||
# 30| 0: [ReturnStmt] return ...
|
# 30| 0: [ReturnStmt] return ...
|
||||||
@@ -3652,9 +3652,9 @@ funcExprs.kt:
|
|||||||
# 31| 2: [Method] invoke
|
# 31| 2: [Method] invoke
|
||||||
# 31| 3: [TypeAccess] int
|
# 31| 3: [TypeAccess] int
|
||||||
#-----| 4: (Parameters)
|
#-----| 4: (Parameters)
|
||||||
# 31| 0: [Parameter] <anonymous parameter 0>
|
# 31| 0: [Parameter] p0
|
||||||
# 31| 0: [TypeAccess] int
|
# 31| 0: [TypeAccess] int
|
||||||
# 31| 1: [Parameter] <anonymous parameter 1>
|
# 31| 1: [Parameter] p1
|
||||||
# 31| 0: [TypeAccess] int
|
# 31| 0: [TypeAccess] int
|
||||||
# 31| 5: [BlockStmt] { ... }
|
# 31| 5: [BlockStmt] { ... }
|
||||||
# 31| 0: [ReturnStmt] return ...
|
# 31| 0: [ReturnStmt] return ...
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
| test.kt:5:9:5:9 | p0 | p0 |
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class A {
|
||||||
|
|
||||||
|
var x: Int
|
||||||
|
get() = 1
|
||||||
|
set(_) { }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import java
|
||||||
|
|
||||||
|
from Parameter p
|
||||||
|
where p.getCallable().fromSource()
|
||||||
|
select p, p.getName()
|
||||||
Reference in New Issue
Block a user