@@ -3,7 +3,6 @@ package com.github.codeql
3
3
import com.github.codeql.comments.CommentExtractor
4
4
import com.github.codeql.utils.*
5
5
import com.github.codeql.utils.versions.functionN
6
- import com.github.codeql.utils.versions.getIrStubFromDescriptor
7
6
import com.github.codeql.utils.versions.isUnderscoreParameter
8
7
import com.semmle.extractor.java.OdasaOutput
9
8
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
@@ -1788,7 +1787,7 @@ open class KotlinFileExtractor(
1788
1787
1789
1788
private fun extractCall (c : IrCall , callable : Label <out DbCallable >, stmtExprParent : StmtExprParent ) {
1790
1789
with (" call" , c) {
1791
- val owner = tryGetPossiblyUnboundSymbolOwner (c.symbol, c) ? : return
1790
+ val owner = getBoundSymbolOwner (c.symbol, c) ? : return
1792
1791
val target = tryReplaceSyntheticFunction(owner)
1793
1792
1794
1793
// The vast majority of types of call want an expr context, so make one available lazily:
@@ -2954,7 +2953,7 @@ open class KotlinFileExtractor(
2954
2953
tw.writeCallableEnclosingExpr(id, callable)
2955
2954
tw.writeStatementEnclosingExpr(id, exprParent.enclosingStmt)
2956
2955
2957
- val owner = tryGetPossiblyUnboundSymbolOwner (e.symbol, e) ? : return
2956
+ val owner = getBoundSymbolOwner (e.symbol, e) ? : return
2958
2957
2959
2958
val vId = useEnumEntry(owner)
2960
2959
tw.writeVariableBinding(id, vId)
@@ -3131,7 +3130,7 @@ open class KotlinFileExtractor(
3131
3130
// automatically-generated `public static final MyObject INSTANCE`
3132
3131
// field that we are accessing here.
3133
3132
val exprParent = parent.expr(e, callable)
3134
- val c = tryGetPossiblyUnboundSymbolOwner (e.symbol, e) ? : return
3133
+ val c = getBoundSymbolOwner (e.symbol, e) ? : return
3135
3134
3136
3135
val instance = if (c.isCompanion) useCompanionObjectClassInstance(c) else useObjectClassInstance(c)
3137
3136
@@ -3244,21 +3243,12 @@ open class KotlinFileExtractor(
3244
3243
}
3245
3244
}
3246
3245
3247
- private inline fun <D : DeclarationDescriptor , reified B : IrSymbolOwner > tryGetPossiblyUnboundSymbolOwner (symbol : IrBindableSymbol <D , B >, e : IrElement ): B ? {
3246
+ private inline fun <D : DeclarationDescriptor , reified B : IrSymbolOwner > getBoundSymbolOwner (symbol : IrBindableSymbol <D , B >, e : IrExpression ): B ? {
3248
3247
if (symbol.isBound) {
3249
3248
return symbol.owner
3250
3249
}
3251
3250
3252
- logger.warnElement(" Unbound symbol, trying to use owner stub from descriptor" , e)
3253
-
3254
- @OptIn(ObsoleteDescriptorBasedAPI ::class )
3255
- val owner = getIrStubFromDescriptor() { it.generateMemberStub(symbol.descriptor) }
3256
-
3257
- if (owner is B ) {
3258
- return owner
3259
- }
3260
-
3261
- logger.errorElement(" Couldn't get owner of unbound symbol from its descriptor" , e)
3251
+ logger.errorElement(" Unbound symbol found, skipping extraction of expression" , e)
3262
3252
return null
3263
3253
}
3264
3254
0 commit comments