Minor, inline DescriptorUtils.getEnumEntriesScope
This commit is contained in:
+2
-1
@@ -132,7 +132,8 @@ public class DescriptorSerializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (classDescriptor.getKind() == ClassKind.ENUM_CLASS) {
|
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)) {
|
if (isEnumEntry(descriptor)) {
|
||||||
builder.addEnumEntry(nameTable.getSimpleNameIndex(descriptor.getName()));
|
builder.addEnumEntry(nameTable.getSimpleNameIndex(descriptor.getName()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
|
|||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
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;
|
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumEntry;
|
||||||
|
|
||||||
public final class WhenChecker {
|
public final class WhenChecker {
|
||||||
@@ -54,7 +53,7 @@ public final class WhenChecker {
|
|||||||
if (classDescriptor.getKind() != ClassKind.ENUM_CLASS || classDescriptor.getModality().isOverridable()) return false;
|
if (classDescriptor.getKind() != ClassKind.ENUM_CLASS || classDescriptor.getModality().isOverridable()) return false;
|
||||||
boolean isExhaust = true;
|
boolean isExhaust = true;
|
||||||
boolean notEmpty = false;
|
boolean notEmpty = false;
|
||||||
for (DeclarationDescriptor descriptor : getEnumEntriesScope(classDescriptor).getAllDescriptors()) {
|
for (DeclarationDescriptor descriptor : classDescriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors()) {
|
||||||
if (isEnumEntry(descriptor)) {
|
if (isEnumEntry(descriptor)) {
|
||||||
notEmpty = true;
|
notEmpty = true;
|
||||||
if (!containsEnumEntryCase(expression, (ClassDescriptor) descriptor, trace)) {
|
if (!containsEnumEntryCase(expression, (ClassDescriptor) descriptor, trace)) {
|
||||||
|
|||||||
+1
-2
@@ -37,7 +37,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
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.IGNORE_KOTLIN_SOURCES;
|
||||||
import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.INCLUDE_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);
|
ClassDescriptor enumClass = classResolver.resolveClass(fqName, INCLUDE_KOTLIN_SOURCES, taskList);
|
||||||
if (enumClass == null) return null;
|
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;
|
if (!(classifier instanceof ClassDescriptor)) return null;
|
||||||
|
|
||||||
return new EnumValue((ClassDescriptor) classifier);
|
return new EnumValue((ClassDescriptor) classifier);
|
||||||
|
|||||||
+3
-2
@@ -44,7 +44,8 @@ import javax.inject.Inject;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
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.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES;
|
||||||
import static org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName;
|
import static org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName;
|
||||||
import static org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.naiveKotlinFqName;
|
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) {
|
private CompileTimeConstant<?> enumEntryValue(@NotNull JvmClassName enumClassName, @NotNull Name name) {
|
||||||
ClassDescriptor enumClass = resolveClass(enumClassName);
|
ClassDescriptor enumClass = resolveClass(enumClassName);
|
||||||
if (enumClass.getKind() == ClassKind.ENUM_CLASS) {
|
if (enumClass.getKind() == ClassKind.ENUM_CLASS) {
|
||||||
ClassifierDescriptor classifier = getEnumEntriesScope(enumClass).getClassifier(name);
|
ClassifierDescriptor classifier = enumClass.getUnsubstitutedInnerClassesScope().getClassifier(name);
|
||||||
if (classifier instanceof ClassDescriptor) {
|
if (classifier instanceof ClassDescriptor) {
|
||||||
return new EnumValue((ClassDescriptor) classifier);
|
return new EnumValue((ClassDescriptor) classifier);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -487,10 +487,4 @@ public class DescriptorUtils {
|
|||||||
return isTopLevelDeclaration(descriptor) ||
|
return isTopLevelDeclaration(descriptor) ||
|
||||||
containing instanceof ClassDescriptor && isTopLevelOrInnerClass((ClassDescriptor) containing);
|
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user