Do not generate underlying classes for enum entries without member declarations.

This commit is contained in:
Dmitry Petrov
2016-09-01 17:19:13 +03:00
committed by Dmitry Petrov
parent 759f0168c2
commit c3c758c7cc
4 changed files with 4 additions and 6 deletions
@@ -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
View File
@@ -5,7 +5,7 @@ enum class TestEnum1 {
enum class TestEnum2(val x: Int) {
TEST1(1),
TEST2(2),
TEST3(3)
TEST3(3) {}
}
enum class TestEnum3 {