From e7e7188da10d08630fe5d6fe8764b2012d3563ea Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 15 Aug 2012 13:34:51 +0400 Subject: [PATCH] LR: values() and valueOf() created properly for enums' class objects --- .../resolve/lazy/LazyClassMemberScope.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassMemberScope.java index aa63232f33a..22ac9394235 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyClassMemberScope.java @@ -17,7 +17,6 @@ package org.jetbrains.jet.lang.resolve.lazy; import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -139,26 +138,26 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope result, @NotNull Name name) { DeclarationDescriptor containingDeclaration = thisDescriptor.getContainingDeclaration(); - if(containingDeclaration instanceof ClassDescriptor) { - ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration; - if(classDescriptor.getKind() == ClassKind.ENUM_CLASS) { - if(classDescriptor.getClassObjectDescriptor() == thisDescriptor) { - SimpleFunctionDescriptor valuesMethod = DescriptorResolver - .createEnumClassObjectValuesMethod(classDescriptor, thisDescriptor, resolveSession.getTrace()); - functionDescriptors.put(valuesMethod.getName(), Collections.singleton(valuesMethod)); - allDescriptors.add(valuesMethod); - SimpleFunctionDescriptor valueOfMethod = DescriptorResolver.createEnumClassObjectValueOfMethod(classDescriptor, - thisDescriptor, - resolveSession.getTrace()); - functionDescriptors.put(valueOfMethod.getName(), Collections.singleton(valueOfMethod)); - allDescriptors.add(valueOfMethod); - } - } + if (!(containingDeclaration instanceof ClassDescriptor)) return; + ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration; + if (classDescriptor.getClassObjectDescriptor() != thisDescriptor) return; + if (classDescriptor.getKind() != ClassKind.ENUM_CLASS) return; + + if (name.equals(DescriptorResolver.VALUES_METHOD_NAME)) { + SimpleFunctionDescriptor valuesMethod = DescriptorResolver + .createEnumClassObjectValuesMethod(classDescriptor, resolveSession.getTrace()); + result.add(valuesMethod); + } + else if (name.equals(DescriptorResolver.VALUE_OF_METHOD_NAME)) { + SimpleFunctionDescriptor valueOfMethod = DescriptorResolver.createEnumClassObjectValueOfMethod(classDescriptor, + resolveSession.getTrace()); + result.add(valueOfMethod); } } @@ -248,7 +247,8 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope