Merge pull request #10732 from smowton/smowton/fix/kotlin-enum-corresponding-classes

Koltin: Extract the corresponding classes of enum entries
This commit is contained in:
Chris Smowton
2022-10-10 15:04:02 +01:00
committed by GitHub
6 changed files with 65 additions and 3 deletions

View File

@@ -155,7 +155,7 @@ open class KotlinFileExtractor(
is IrEnumEntry -> {
val parentId = useDeclarationParent(declaration.parent, false)?.cast<DbReftype>()
if (parentId != null) {
extractEnumEntry(declaration, parentId, extractFunctionBodies)
extractEnumEntry(declaration, parentId, extractPrivateMembers, extractFunctionBodies)
}
Unit
}
@@ -1254,7 +1254,7 @@ open class KotlinFileExtractor(
}
}
private fun extractEnumEntry(ee: IrEnumEntry, parentId: Label<out DbReftype>, extractTypeAccess: Boolean) {
private fun extractEnumEntry(ee: IrEnumEntry, parentId: Label<out DbReftype>, extractPrivateMembers: Boolean, extractFunctionBodies: Boolean) {
with("enum entry", ee) {
DeclarationStackAdjuster(ee).use {
val id = useEnumEntry(ee)
@@ -1265,7 +1265,7 @@ open class KotlinFileExtractor(
tw.writeHasLocation(id, locId)
tw.writeIsEnumConst(id)
if (extractTypeAccess) {
if (extractFunctionBodies) {
val fieldDeclarationId = tw.getFreshIdLabel<DbFielddecl>()
tw.writeFielddecls(fieldDeclarationId, parentId)
tw.writeFieldDeclaredIn(id, fieldDeclarationId, 0)
@@ -1273,6 +1273,10 @@ open class KotlinFileExtractor(
extractTypeAccess(type, locId, fieldDeclarationId, 0)
}
ee.correspondingClass?.let {
extractDeclaration(it, extractPrivateMembers, extractFunctionBodies)
}
}
}
}