asserts in JetScopeImpl, add enum entry to proper scope
This commit is contained in:
@@ -260,4 +260,15 @@ public class DescriptorUtils {
|
||||
}
|
||||
return expectedType != null ? expectedType : TypeUtils.NO_EXPECTED_TYPE;
|
||||
}
|
||||
|
||||
public static boolean isObject(@NotNull ClassifierDescriptor classifier) {
|
||||
if (classifier instanceof ClassDescriptor) {
|
||||
ClassDescriptor clazz = (ClassDescriptor) classifier;
|
||||
return clazz.getKind() == ClassKind.OBJECT || clazz.getKind() == ClassKind.ENUM_ENTRY;
|
||||
} else if (classifier instanceof TypeParameterDescriptor) {
|
||||
return false;
|
||||
} else {
|
||||
throw new IllegalStateException("unknown classifier: " + classifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ public class TypeHierarchyResolver {
|
||||
(Map) context.getClasses(),
|
||||
mutableClassDescriptor
|
||||
);
|
||||
classObjectDescriptor.addClassifierDescriptor(mutableClassDescriptor);
|
||||
classObjectDescriptor.addObjectDescriptor(mutableClassDescriptor);
|
||||
}
|
||||
|
||||
private MutableClassDescriptor createClassDescriptorForObject(@NotNull JetClassOrObject declaration, @NotNull NamespaceLike owner, JetScope scope, ClassKind classKind) {
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.google.common.collect.Sets;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
||||
import org.jetbrains.jet.util.CommonSuppliers;
|
||||
@@ -308,12 +309,20 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
||||
public void addClassifierDescriptor(@NotNull ClassifierDescriptor classDescriptor) {
|
||||
checkMayWrite();
|
||||
|
||||
if (DescriptorUtils.isObject(classDescriptor)) {
|
||||
throw new IllegalStateException("must not be object: " + classDescriptor);
|
||||
}
|
||||
|
||||
addClassifierAlias(classDescriptor.getName(), classDescriptor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addObjectDescriptor(@NotNull ClassDescriptor objectDescriptor) {
|
||||
checkMayWrite();
|
||||
|
||||
if (!DescriptorUtils.isObject(objectDescriptor)) {
|
||||
throw new IllegalStateException("must be object: " + objectDescriptor);
|
||||
}
|
||||
|
||||
getObjectDescriptorsMap().put(objectDescriptor.getName(), objectDescriptor);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user