diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java index 4c04b2d7f15..33a385f3089 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java @@ -234,7 +234,7 @@ public class ModifiersChecker { public static Visibility getDefaultClassVisibility(@NotNull ClassDescriptor descriptor) { ClassKind kind = descriptor.getKind(); if (kind == ClassKind.ENUM_ENTRY) { - return Visibilities.PRIVATE; + return Visibilities.PUBLIC; } if (kind == ClassKind.CLASS_OBJECT) { return ((ClassDescriptor) descriptor.getContainingDeclaration()).getVisibility(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java index e9e6749a3ee..8e5a44cb6a0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java @@ -198,23 +198,6 @@ public abstract class AbstractLazyMemberScope classOrObjectDeclarations = declarationProvider.getClassOrObjectDeclarations(name); - for (JetClassOrObject classOrObjectDeclaration : classOrObjectDeclarations) { - if (classOrObjectDeclaration instanceof JetEnumEntry) { - ClassDescriptor classifier = getObjectDescriptor(name); - if (classifier == null) { - throw new IllegalStateException("Object declaration " + name + " found in the DeclarationProvider " + declarationProvider + " but not in the scope " + this); - } - - JetScope scope = getScopeForMemberDeclarationResolution(classOrObjectDeclaration); - - VariableDescriptor propertyDescriptor = resolveSession.getInjector().getDescriptorResolver() - .resolveObjectDeclaration(scope, thisDescriptor, classOrObjectDeclaration, classifier, resolveSession.getTrace()); - result.add(propertyDescriptor); - } - } - getNonDeclaredProperties(name, result); return result; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index 3293b7c078e..353bd45957b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -271,7 +271,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc return JetClassInfoUtil.createClassLikeInfo(objectDeclaration); } } - else if (getKind() == ClassKind.OBJECT) { + else if (getKind() == ClassKind.OBJECT || getKind() == ClassKind.ENUM_ENTRY) { return new SyntheticClassObjectInfo(originalClassInfo, this); } else if (getKind() == ClassKind.ENUM_CLASS) { diff --git a/compiler/testData/lazyResolve/namespaceComparator/enum.txt b/compiler/testData/lazyResolve/namespaceComparator/enum.txt index 5b1516c9d40..34c924cac9f 100644 --- a/compiler/testData/lazyResolve/namespaceComparator/enum.txt +++ b/compiler/testData/lazyResolve/namespaceComparator/enum.txt @@ -7,21 +7,31 @@ internal final enum class Test : jet.Enum { public class object { /*primary*/ private constructor () - public final val A: test.Test - public final val B: test.Test public final /*synthesized*/ fun valueOf(/*0*/ value: jet.String): test.Test public final /*synthesized*/ fun values(): jet.Array - private enum entry A : test.Test { + public enum entry A : test.Test { /*primary*/ private constructor A() public final override /*1*/ /*fake_override*/ fun name(): jet.String public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int + + public class object : test.Test.A { + /*primary*/ private constructor () + public final override /*1*/ /*fake_override*/ fun name(): jet.String + public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int + } } - private enum entry B : test.Test { + public enum entry B : test.Test { /*primary*/ private constructor B() public final override /*1*/ /*fake_override*/ fun name(): jet.String public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int + + public class object : test.Test.B { + /*primary*/ private constructor () + public final override /*1*/ /*fake_override*/ fun name(): jet.String + public final override /*1*/ /*fake_override*/ fun ordinal(): jet.Int + } } } }