diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java index ac38ba856e8..2c9b9954649 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/CodegenUtil.java @@ -21,6 +21,9 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.Stack; +import jet.runtime.typeinfo.JetValueParameter; +import kotlin.Function1; +import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.codegen.binding.CalculatedClosure; @@ -182,16 +185,15 @@ public class CodegenUtil { } public static boolean hasAbstractMembers(@NotNull ClassDescriptor classDescriptor) { - return ContainerUtil.exists(classDescriptor.getDefaultType().getMemberScope().getAllDescriptors(), - new Condition() { - @Override - public boolean value(DeclarationDescriptor declaration) { - if (!(declaration instanceof MemberDescriptor)) { - return false; - } - return ((MemberDescriptor) declaration).getModality() == ABSTRACT; - } - }); + return KotlinPackage.any(classDescriptor.getDefaultType().getMemberScope().getAllDescriptors(), + new Function1() { + @Override + public Boolean invoke(DeclarationDescriptor descriptor) { + return descriptor instanceof CallableMemberDescriptor && + ((CallableMemberDescriptor) descriptor).getModality() == ABSTRACT; + } + } + ); } /** diff --git a/compiler/testData/codegen/box/enum/abstractNestedClass.kt b/compiler/testData/codegen/box/enum/abstractNestedClass.kt new file mode 100644 index 00000000000..31328c77d5c --- /dev/null +++ b/compiler/testData/codegen/box/enum/abstractNestedClass.kt @@ -0,0 +1,10 @@ +enum class E { + abstract class Nested + + ENTRY +} + +fun box(): String { + E.ENTRY + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index a240c59f47a..1b7c1bd6eb5 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -2366,6 +2366,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest("compiler/testData/codegen/box/enum/abstractMethodInEnum.kt"); } + @TestMetadata("abstractNestedClass.kt") + public void testAbstractNestedClass() throws Exception { + doTest("compiler/testData/codegen/box/enum/abstractNestedClass.kt"); + } + @TestMetadata("abstractmethod.kt") public void testAbstractmethod() throws Exception { doTest("compiler/testData/codegen/box/enum/abstractmethod.kt");