Skip to content

Commit c8deb72

Browse files
committed
Kotlin: Refactor extractConstructorCall
Avoids some casts.
1 parent b5f9fbe commit c8deb72

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

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

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2397,18 +2397,23 @@ open class KotlinFileExtractor(
23972397
callable: Label<out DbCallable>,
23982398
enclosingStmt: Label<out DbStmt>
23992399
) {
2400-
val isAnonymous = e.type.isAnonymous
2400+
val eType = e.type
2401+
if (eType !is IrSimpleType) {
2402+
logger.errorElement("Constructor call has non-simple type ${eType.javaClass}", e)
2403+
return
2404+
}
2405+
val isAnonymous = eType.isAnonymous
24012406
val type: TypeResults = if (isAnonymous) {
24022407
if (e.typeArgumentsCount > 0) {
2403-
logger.warn("Unexpected type arguments for anonymous class constructor call")
2408+
logger.warnElement("Unexpected type arguments (${e.typeArgumentsCount}) for anonymous class constructor call", e)
24042409
}
2405-
val c = (e.type as IrSimpleType).classifier.owner as IrClass
2410+
val c = eType.classifier.owner as IrClass
24062411
useAnonymousClass(c)
24072412
} else {
2408-
useType(e.type)
2413+
useType(eType)
24092414
}
24102415
val locId = tw.getLocation(e)
2411-
val id = extractNewExpr(e.symbol.owner, (e.type as? IrSimpleType)?.arguments, type, locId, parent, idx, callable, enclosingStmt)
2416+
val id = extractNewExpr(e.symbol.owner, eType.arguments, type, locId, parent, idx, callable, enclosingStmt)
24122417

24132418
if (isAnonymous) {
24142419
tw.writeIsAnonymClass(type.javaResult.id.cast<DbClass>(), id)
@@ -2422,7 +2427,7 @@ open class KotlinFileExtractor(
24222427
}
24232428

24242429
val typeAccessType = if (isAnonymous) {
2425-
val c = (e.type as IrSimpleType).classifier.owner as IrClass
2430+
val c = eType.classifier.owner as IrClass
24262431
if (c.superTypes.size == 1) {
24272432
useType(c.superTypes.first())
24282433
} else {
@@ -2433,7 +2438,7 @@ open class KotlinFileExtractor(
24332438
}
24342439

24352440
if (e is IrConstructorCall) {
2436-
extractConstructorTypeAccess(e.type, typeAccessType, e.symbol, locId, id, -3, callable, enclosingStmt)
2441+
extractConstructorTypeAccess(eType, typeAccessType, e.symbol, locId, id, -3, callable, enclosingStmt)
24372442
} else {
24382443
val typeAccessId =
24392444
extractTypeAccess(typeAccessType, locId, id, -3, callable, enclosingStmt)

0 commit comments

Comments
 (0)