Skip to content

Commit 4f7eb7b

Browse files
authored
Merge pull request #10262 from igfoo/igfoo/useArrayType
Kotlin: Avoid unsafe casts in useArrayType
2 parents b05d8a6 + ddb7bb1 commit 4f7eb7b

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,12 @@ open class KotlinUsesExtractor(
541541

542542
private fun useArrayType(arrayType: IrSimpleType, componentType: IrType, elementType: IrType, dimensions: Int, isPrimitiveArray: Boolean): TypeResults {
543543

544+
val arrayClass = arrayType.classifier.owner
545+
if (arrayClass !is IrClass) {
546+
error("Unexpected owner type for array type: ${arrayClass.javaClass}")
547+
return extractErrorType()
548+
}
549+
544550
// Ensure we extract Array<Int> as Integer[], not int[], for example:
545551
fun nullableIfNotPrimitive(type: IrType) = if (type.isPrimitiveType() && !isPrimitiveArray) type.makeNullable() else type
546552

@@ -557,7 +563,7 @@ open class KotlinUsesExtractor(
557563
dimensions,
558564
componentTypeResults.javaResult.id)
559565

560-
extractClassSupertypes(arrayType.classifier.owner as IrClass, it, ExtractSupertypesMode.Specialised(arrayType.arguments))
566+
extractClassSupertypes(arrayClass, it, ExtractSupertypesMode.Specialised(arrayType.arguments))
561567

562568
// array.length
563569
val length = tw.getLabelFor<DbField>("@\"field;{$it};length\"")
@@ -582,7 +588,7 @@ open class KotlinUsesExtractor(
582588
componentTypeResults.javaResult.signature + "[]",
583589
javaShortName)
584590

585-
val arrayClassResult = useSimpleTypeClass(arrayType.classifier.owner as IrClass, arrayType.arguments, arrayType.hasQuestionMark)
591+
val arrayClassResult = useSimpleTypeClass(arrayClass, arrayType.arguments, arrayType.hasQuestionMark)
586592
return TypeResults(javaResult, arrayClassResult.kotlinResult)
587593
}
588594

0 commit comments

Comments
 (0)