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;
|
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(),
|
(Map) context.getClasses(),
|
||||||
mutableClassDescriptor
|
mutableClassDescriptor
|
||||||
);
|
);
|
||||||
classObjectDescriptor.addClassifierDescriptor(mutableClassDescriptor);
|
classObjectDescriptor.addObjectDescriptor(mutableClassDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private MutableClassDescriptor createClassDescriptorForObject(@NotNull JetClassOrObject declaration, @NotNull NamespaceLike owner, JetScope scope, ClassKind classKind) {
|
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.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
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.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
||||||
import org.jetbrains.jet.util.CommonSuppliers;
|
import org.jetbrains.jet.util.CommonSuppliers;
|
||||||
@@ -308,6 +309,10 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
public void addClassifierDescriptor(@NotNull ClassifierDescriptor classDescriptor) {
|
public void addClassifierDescriptor(@NotNull ClassifierDescriptor classDescriptor) {
|
||||||
checkMayWrite();
|
checkMayWrite();
|
||||||
|
|
||||||
|
if (DescriptorUtils.isObject(classDescriptor)) {
|
||||||
|
throw new IllegalStateException("must not be object: " + classDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
addClassifierAlias(classDescriptor.getName(), classDescriptor);
|
addClassifierAlias(classDescriptor.getName(), classDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,6 +320,10 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
public void addObjectDescriptor(@NotNull ClassDescriptor objectDescriptor) {
|
public void addObjectDescriptor(@NotNull ClassDescriptor objectDescriptor) {
|
||||||
checkMayWrite();
|
checkMayWrite();
|
||||||
|
|
||||||
|
if (!DescriptorUtils.isObject(objectDescriptor)) {
|
||||||
|
throw new IllegalStateException("must be object: " + objectDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
getObjectDescriptorsMap().put(objectDescriptor.getName(), objectDescriptor);
|
getObjectDescriptorsMap().put(objectDescriptor.getName(), objectDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user