Kotlin: Fix type access expressions in enum constructor calls

This commit is contained in:
Tamas Vajk
2022-09-20 12:41:31 +02:00
parent 9979fa3f36
commit 01a2d16974
6 changed files with 24 additions and 12 deletions

View File

@@ -2482,11 +2482,23 @@ open class KotlinFileExtractor(
if (e is IrConstructorCall) {
extractConstructorTypeAccess(eType, typeAccessType, e.symbol, locId, id, -3, callable, enclosingStmt)
} else {
val typeAccessId =
extractTypeAccess(typeAccessType, locId, id, -3, callable, enclosingStmt)
} else if (e is IrEnumConstructorCall) {
val enumClass = e.symbol.owner.parent as? IrClass
if (enumClass == null) {
logger.warnElement("Couldn't find declaring class of enum constructor call", e)
return
}
extractTypeArguments(e, typeAccessId, callable, enclosingStmt)
val args = (0 until e.typeArgumentsCount).map { e.getTypeArgument(it) }.requireNoNullsOrNull()
if (args == null) {
logger.warnElement("Found null type argument in enum constructor call", e)
return
}
val enumType = enumClass.typeWith(args)
extractConstructorTypeAccess(enumType, useType(enumType), e.symbol, locId, id, -3, callable, enclosingStmt)
} else {
logger.errorElement("Unexpected constructor call type: ${e.javaClass}", e)
}
}