Drop some of explicit ClassKind.CLASS_OBJECT and OBJECT usages
This commit is contained in:
@@ -344,11 +344,10 @@ public class AsmUtil {
|
||||
}
|
||||
// the following code is only for PRIVATE visibility of member
|
||||
if (memberDescriptor instanceof ConstructorDescriptor) {
|
||||
ClassKind kind = ((ClassDescriptor) containingDeclaration).getKind();
|
||||
if (kind == ClassKind.OBJECT || kind == ClassKind.ENUM_ENTRY) {
|
||||
if (isNonDefaultObject(containingDeclaration) || isEnumEntry(containingDeclaration)) {
|
||||
return NO_FLAG_PACKAGE_PRIVATE;
|
||||
}
|
||||
if (kind == ClassKind.ENUM_CLASS) {
|
||||
if (isEnumClass(containingDeclaration)) {
|
||||
//TODO: should be ACC_PRIVATE
|
||||
// see http://youtrack.jetbrains.com/issue/KT-2680
|
||||
return ACC_PROTECTED;
|
||||
|
||||
@@ -88,6 +88,8 @@ import static org.jetbrains.kotlin.psi.PsiPackage.JetPsiFactory;
|
||||
import static org.jetbrains.kotlin.resolve.BindingContext.*;
|
||||
import static org.jetbrains.kotlin.resolve.BindingContextUtils.getNotNull;
|
||||
import static org.jetbrains.kotlin.resolve.BindingContextUtils.isVarCapturedInClosure;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isObject;
|
||||
import static org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilPackage.getResolvedCall;
|
||||
import static org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilPackage.getResolvedCallWithAssert;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.*;
|
||||
@@ -1913,10 +1915,10 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
||||
|
||||
if (descriptor instanceof ClassDescriptor) {
|
||||
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
|
||||
if (classDescriptor.getKind() == ClassKind.OBJECT || classDescriptor.getKind() == ClassKind.CLASS_OBJECT) {
|
||||
if (isObject(classDescriptor)) {
|
||||
return StackValue.singleton(classDescriptor, typeMapper);
|
||||
}
|
||||
if (classDescriptor.getKind() == ClassKind.ENUM_ENTRY) {
|
||||
if (isEnumEntry(classDescriptor)) {
|
||||
DeclarationDescriptor enumClass = classDescriptor.getContainingDeclaration();
|
||||
assert DescriptorUtils.isEnumClass(enumClass) : "Enum entry should be declared in enum class: " + descriptor;
|
||||
Type type = typeMapper.mapType((ClassDescriptor) enumClass);
|
||||
|
||||
@@ -20,21 +20,21 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.codegen.intrinsics.IntrinsicObjects;
|
||||
import org.jetbrains.kotlin.codegen.state.JetTypeMapper;
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind;
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||
import org.jetbrains.org.objectweb.asm.Type;
|
||||
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isNonDefaultObject;
|
||||
|
||||
public class FieldInfo {
|
||||
@NotNull
|
||||
public static FieldInfo createForSingleton(@NotNull ClassDescriptor classDescriptor, @NotNull JetTypeMapper typeMapper) {
|
||||
ClassKind kind = classDescriptor.getKind();
|
||||
if (!kind.isSingleton()) {
|
||||
if (!classDescriptor.getKind().isSingleton()) {
|
||||
throw new UnsupportedOperationException("Can't create singleton field for class: " + classDescriptor);
|
||||
}
|
||||
|
||||
if (kind == ClassKind.OBJECT || IntrinsicObjects.INSTANCE$.hasMappingToObject(classDescriptor)) {
|
||||
if (isNonDefaultObject(classDescriptor) || IntrinsicObjects.INSTANCE$.hasMappingToObject(classDescriptor)) {
|
||||
Type type = typeMapper.mapType(classDescriptor);
|
||||
return new FieldInfo(type, type, JvmAbi.INSTANCE_FIELD, true);
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
isEnum = true;
|
||||
}
|
||||
|
||||
if (descriptor.getKind() == ClassKind.OBJECT || descriptor.getKind() == ClassKind.CLASS_OBJECT) {
|
||||
if (isObject(descriptor)) {
|
||||
isFinal = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user