Skip to content

Commit 70cabf1

Browse files
authored
Merge pull request #10246 from igfoo/igfoo/extractConstructorCall
Kotlin: Refactor extractConstructorCall
2 parents c30f39d + c8deb72 commit 70cabf1

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
@@ -2372,18 +2372,23 @@ open class KotlinFileExtractor(
23722372
callable: Label<out DbCallable>,
23732373
enclosingStmt: Label<out DbStmt>
23742374
) {
2375-
val isAnonymous = e.type.isAnonymous
2375+
val eType = e.type
2376+
if (eType !is IrSimpleType) {
2377+
logger.errorElement("Constructor call has non-simple type ${eType.javaClass}", e)
2378+
return
2379+
}
2380+
val isAnonymous = eType.isAnonymous
23762381
val type: TypeResults = if (isAnonymous) {
23772382
if (e.typeArgumentsCount > 0) {
2378-
logger.warn("Unexpected type arguments for anonymous class constructor call")
2383+
logger.warnElement("Unexpected type arguments (${e.typeArgumentsCount}) for anonymous class constructor call", e)
23792384
}
2380-
val c = (e.type as IrSimpleType).classifier.owner as IrClass
2385+
val c = eType.classifier.owner as IrClass
23812386
useAnonymousClass(c)
23822387
} else {
2383-
useType(e.type)
2388+
useType(eType)
23842389
}
23852390
val locId = tw.getLocation(e)
2386-
val id = extractNewExpr(e.symbol.owner, (e.type as? IrSimpleType)?.arguments, type, locId, parent, idx, callable, enclosingStmt)
2391+
val id = extractNewExpr(e.symbol.owner, eType.arguments, type, locId, parent, idx, callable, enclosingStmt)
23872392

23882393
if (isAnonymous) {
23892394
tw.writeIsAnonymClass(type.javaResult.id.cast<DbClass>(), id)
@@ -2397,7 +2402,7 @@ open class KotlinFileExtractor(
23972402
}
23982403

23992404
val typeAccessType = if (isAnonymous) {
2400-
val c = (e.type as IrSimpleType).classifier.owner as IrClass
2405+
val c = eType.classifier.owner as IrClass
24012406
if (c.superTypes.size == 1) {
24022407
useType(c.superTypes.first())
24032408
} else {
@@ -2408,7 +2413,7 @@ open class KotlinFileExtractor(
24082413
}
24092414

24102415
if (e is IrConstructorCall) {
2411-
extractConstructorTypeAccess(e.type, typeAccessType, e.symbol, locId, id, -3, callable, enclosingStmt)
2416+
extractConstructorTypeAccess(eType, typeAccessType, e.symbol, locId, id, -3, callable, enclosingStmt)
24122417
} else {
24132418
val typeAccessId =
24142419
extractTypeAccess(typeAccessType, locId, id, -3, callable, enclosingStmt)

0 commit comments

Comments
 (0)