Do not generate underlying classes for enum entries without member declarations.
This commit is contained in:
committed by
Dmitry Petrov
parent
759f0168c2
commit
c3c758c7cc
@@ -198,8 +198,7 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context:
|
||||
}
|
||||
|
||||
fun generateEnumEntryInitializer(ktEnumEntry: KtEnumEntry, enumEntryDescriptor: ClassDescriptor): IrExpression {
|
||||
// Enum entry with body has a corresponding underlying class
|
||||
if (ktEnumEntry.getBody() != null) {
|
||||
if (ktEnumEntry.declarations.isNotEmpty()) {
|
||||
val enumEntryConstructor = enumEntryDescriptor.unsubstitutedPrimaryConstructor!!
|
||||
return IrEnumConstructorCallImpl(ktEnumEntry.startOffset, ktEnumEntry.endOffset,
|
||||
enumEntryConstructor, enumEntryDescriptor)
|
||||
|
||||
@@ -124,7 +124,7 @@ class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator
|
||||
BodyGenerator(enumEntryDescriptor.containingDeclaration, context)
|
||||
.generateEnumEntryInitializer(ktEnumEntry, enumEntryDescriptor)
|
||||
|
||||
if (ktEnumEntry.getBody() != null) {
|
||||
if (ktEnumEntry.declarations.isNotEmpty()) {
|
||||
irEnumEntry.correspondingClass = generateClass(ktEnumEntry)
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.ir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.ir.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
@@ -75,6 +74,6 @@ class IrDelegateImpl(
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
initializer?.accept(visitor, data)
|
||||
initializer.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -5,7 +5,7 @@ enum class TestEnum1 {
|
||||
enum class TestEnum2(val x: Int) {
|
||||
TEST1(1),
|
||||
TEST2(2),
|
||||
TEST3(3)
|
||||
TEST3(3) {}
|
||||
}
|
||||
|
||||
enum class TestEnum3 {
|
||||
|
||||
Reference in New Issue
Block a user