diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java index 799e2bd6198..b7e8e2e22b4 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java @@ -132,7 +132,8 @@ public class DescriptorSerializer { } if (classDescriptor.getKind() == ClassKind.ENUM_CLASS) { - for (DeclarationDescriptor descriptor : getEnumEntriesScope(classDescriptor).getAllDescriptors()) { + // Not calling sort() here, because the order of enum entries matters + for (DeclarationDescriptor descriptor : nestedClasses) { if (isEnumEntry(descriptor)) { builder.addEnumEntry(nameTable.getSimpleNameIndex(descriptor.getName())); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/WhenChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/WhenChecker.java index 359e57b6177..91423f348f8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/WhenChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/WhenChecker.java @@ -27,7 +27,6 @@ import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getEnumEntriesScope; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumEntry; public final class WhenChecker { @@ -54,7 +53,7 @@ public final class WhenChecker { if (classDescriptor.getKind() != ClassKind.ENUM_CLASS || classDescriptor.getModality().isOverridable()) return false; boolean isExhaust = true; boolean notEmpty = false; - for (DeclarationDescriptor descriptor : getEnumEntriesScope(classDescriptor).getAllDescriptors()) { + for (DeclarationDescriptor descriptor : classDescriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors()) { if (isEnumEntry(descriptor)) { notEmpty = true; if (!containsEnumEntryCase(expression, (ClassDescriptor) descriptor, trace)) { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationArgumentResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationArgumentResolver.java index 48150ce27e7..fd49715479f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationArgumentResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaAnnotationArgumentResolver.java @@ -37,7 +37,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getEnumEntriesScope; import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES; import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.INCLUDE_KOTLIN_SOURCES; @@ -140,7 +139,7 @@ public final class JavaAnnotationArgumentResolver { ClassDescriptor enumClass = classResolver.resolveClass(fqName, INCLUDE_KOTLIN_SOURCES, taskList); if (enumClass == null) return null; - ClassifierDescriptor classifier = getEnumEntriesScope(enumClass).getClassifier(field.getName()); + ClassifierDescriptor classifier = enumClass.getUnsubstitutedInnerClassesScope().getClassifier(field.getName()); if (!(classifier instanceof ClassDescriptor)) return null; return new EnumValue((ClassDescriptor) classifier); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java index 488fd6ac93a..6496ba4fb7f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AnnotationDescriptorDeserializer.java @@ -44,7 +44,8 @@ import javax.inject.Inject; import java.io.IOException; import java.util.*; -import static org.jetbrains.jet.lang.resolve.DescriptorUtils.*; +import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isClassObject; +import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isTrait; import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES; import static org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName; import static org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.naiveKotlinFqName; @@ -184,7 +185,7 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer private CompileTimeConstant enumEntryValue(@NotNull JvmClassName enumClassName, @NotNull Name name) { ClassDescriptor enumClass = resolveClass(enumClassName); if (enumClass.getKind() == ClassKind.ENUM_CLASS) { - ClassifierDescriptor classifier = getEnumEntriesScope(enumClass).getClassifier(name); + ClassifierDescriptor classifier = enumClass.getUnsubstitutedInnerClassesScope().getClassifier(name); if (classifier instanceof ClassDescriptor) { return new EnumValue((ClassDescriptor) classifier); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index 267c4c6f3f6..c7384e0ae99 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -487,10 +487,4 @@ public class DescriptorUtils { return isTopLevelDeclaration(descriptor) || containing instanceof ClassDescriptor && isTopLevelOrInnerClass((ClassDescriptor) containing); } - - @NotNull - public static JetScope getEnumEntriesScope(@NotNull ClassDescriptor enumClass) { - assert isEnumClass(enumClass) : "Only enum classes have enum entries: " + enumClass; - return enumClass.getUnsubstitutedInnerClassesScope(); - } }