Skip to content

Commit fce111b

Browse files
committed
Kotlin: Compile with -Werror, and fix warnings
1 parent d7cdeb8 commit fce111b

File tree

3 files changed

+9
-12
lines changed

3 files changed

+9
-12
lines changed

java/kotlin-extractor/build.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ def compile_to_dir(srcs, classpath, java_classpath, output):
8686
run_process([kotlinc,
8787
# kotlinc can default to 256M, which isn't enough when we are extracting the build
8888
'-J-Xmx2G',
89-
'-Xopt-in=kotlin.RequiresOptIn',
89+
'-Werror',
90+
'-opt-in=kotlin.RequiresOptIn',
9091
'-d', output,
9192
'-module-name', 'codeql-kotlin-extractor',
9293
'-no-reflect', '-no-stdlib',

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2582,8 +2582,8 @@ open class KotlinFileExtractor(
25822582
indexVarDecl.initializer?.let { indexVarInitializer ->
25832583
(e.statements[2] as? IrCall)?.let { arraySetCall ->
25842584
if (isFunction(arraySetCall.symbol.owner, "kotlin", "(some array type)", { isArrayType(it) }, "set")) {
2585-
val updateRhs = arraySetCall.getValueArgument(1)
2586-
if (updateRhs == null) {
2585+
val updateRhs0 = arraySetCall.getValueArgument(1)
2586+
if (updateRhs0 == null) {
25872587
logger.errorElement("Update RHS not found", e)
25882588
return false
25892589
}
@@ -2596,7 +2596,7 @@ open class KotlinFileExtractor(
25962596
receiverVal -> receiverVal.symbol.owner == arrayVarDecl.symbol.owner
25972597
} ?: false
25982598
},
2599-
updateRhs
2599+
updateRhs0
26002600
)?.let { updateRhs ->
26012601
val origin = e.origin
26022602
if (origin == null) {
@@ -3421,15 +3421,11 @@ open class KotlinFileExtractor(
34213421

34223422
data class ReceiverInfo(val receiver: IrExpression, val type: IrType, val field: Label<DbField>, val indexOffset: Int)
34233423

3424-
private fun makeReceiverInfo(callableReferenceExpr: IrCallableReference<out IrSymbol>, receiver: IrExpression?, indexOffset: Int): ReceiverInfo? {
3424+
private fun makeReceiverInfo(receiver: IrExpression?, indexOffset: Int): ReceiverInfo? {
34253425
if (receiver == null) {
34263426
return null
34273427
}
34283428
val type = receiver.type
3429-
if (type == null) {
3430-
logger.warnElement("Receiver has no type", callableReferenceExpr)
3431-
return null
3432-
}
34333429
val field: Label<DbField> = tw.getFreshIdLabel()
34343430
return ReceiverInfo(receiver, type, field, indexOffset)
34353431
}
@@ -3442,8 +3438,8 @@ open class KotlinFileExtractor(
34423438
: GeneratedClassHelper(locId, ids) {
34433439

34443440
// Only one of the receivers can be non-null, but we defensively handle the case when both are null anyway
3445-
private val dispatchReceiverInfo = makeReceiverInfo(callableReferenceExpr, callableReferenceExpr.dispatchReceiver, 0)
3446-
private val extensionReceiverInfo = makeReceiverInfo(callableReferenceExpr, callableReferenceExpr.extensionReceiver, if (dispatchReceiverInfo == null) 0 else 1)
3441+
private val dispatchReceiverInfo = makeReceiverInfo(callableReferenceExpr.dispatchReceiver, 0)
3442+
private val extensionReceiverInfo = makeReceiverInfo(callableReferenceExpr.extensionReceiver, if (dispatchReceiverInfo == null) 0 else 1)
34473443

34483444
fun extractReceiverField() {
34493445
val firstAssignmentStmtIdx = 1

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ open class KotlinUsesExtractor(
327327
return f
328328
return globalExtensionState.syntheticToRealFunctionMap.getOrPut(f) {
329329
val result = replacementClass.declarations.findSubType<IrSimpleFunction> { replacementDecl ->
330-
replacementDecl is IrSimpleFunction && replacementDecl.name == f.name && replacementDecl.valueParameters.size == f.valueParameters.size && replacementDecl.valueParameters.zip(f.valueParameters).all {
330+
replacementDecl.name == f.name && replacementDecl.valueParameters.size == f.valueParameters.size && replacementDecl.valueParameters.zip(f.valueParameters).all {
331331
erase(it.first.type) == erase(it.second.type)
332332
}
333333
}

0 commit comments

Comments
 (0)