Fix broken isEnumClassObject methods
Out of three methods, two were incorrect
This commit is contained in:
@@ -19,7 +19,9 @@ package org.jetbrains.jet.codegen.intrinsics;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
@@ -35,7 +37,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jetbrains.asm4.Opcodes.*;
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassObjectName;
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.*;
|
||||
|
||||
public class IntrinsicMethods {
|
||||
private static final IntrinsicMethod UNARY_MINUS = new UnaryMinus();
|
||||
@@ -229,10 +231,11 @@ public class IntrinsicMethods {
|
||||
SimpleFunctionDescriptor functionDescriptor = (SimpleFunctionDescriptor) descriptor;
|
||||
|
||||
if (isEnumClassObject(functionDescriptor.getContainingDeclaration())) {
|
||||
if ("values".equals(functionDescriptor.getName().getName())) {
|
||||
if (isEnumValuesMethod(functionDescriptor)) {
|
||||
return ENUM_VALUES;
|
||||
}
|
||||
if ("valueOf".equals(functionDescriptor.getName().getName())) {
|
||||
|
||||
if (isEnumValueOfMethod(functionDescriptor)) {
|
||||
return ENUM_VALUE_OF;
|
||||
}
|
||||
}
|
||||
@@ -254,20 +257,4 @@ public class IntrinsicMethods {
|
||||
}
|
||||
return intrinsicMethod;
|
||||
}
|
||||
|
||||
private static boolean isEnumClassObject(DeclarationDescriptor declaration) {
|
||||
if (declaration instanceof ClassDescriptor) {
|
||||
ClassDescriptor descriptor = (ClassDescriptor) declaration;
|
||||
if (descriptor.getContainingDeclaration() instanceof ClassDescriptor) {
|
||||
ClassDescriptor containingDeclaration = (ClassDescriptor) descriptor.getContainingDeclaration();
|
||||
//noinspection ConstantConditions
|
||||
if (containingDeclaration != null &&
|
||||
containingDeclaration.getClassObjectDescriptor() != null &&
|
||||
containingDeclaration.getClassObjectDescriptor().equals(descriptor)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user