Cosmetics in JavaInnerClassResolver

This commit is contained in:
Pavel V. Talanov
2012-10-10 18:48:08 +04:00
parent 7693d99d1a
commit bdec46ac27
@@ -16,6 +16,7 @@
package org.jetbrains.jet.lang.resolve.java.resolver;
import com.google.common.collect.Lists;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiModifier;
import org.jetbrains.annotations.NotNull;
@@ -29,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public final class JavaInnerClassResolver {
@@ -49,40 +51,39 @@ public final class JavaInnerClassResolver {
}
PsiClass[] innerPsiClasses = psiClass.getInnerClasses();
List<ClassDescriptor> r = new ArrayList<ClassDescriptor>(innerPsiClasses.length);
List<ClassDescriptor> result = new ArrayList<ClassDescriptor>(innerPsiClasses.length);
for (PsiClass innerPsiClass : innerPsiClasses) {
if (innerPsiClass.hasModifierProperty(PsiModifier.PRIVATE)) {
// TODO: hack against inner classes
continue;
}
if (innerPsiClass.getName().equals(JvmAbi.CLASS_OBJECT_CLASS_NAME)) {
continue;
}
if (DescriptorResolverUtils.isInnerEnum(innerPsiClass, owner)) {
// Inner enums will be put later into our class object
if (shouldBeIgnored(owner, innerPsiClass)) {
continue;
}
ClassDescriptor classDescriptor = resolveInnerClass(innerPsiClass);
r.add(classDescriptor);
result.add(classDescriptor);
}
return r;
return result;
}
private static boolean shouldBeIgnored(DeclarationDescriptor owner, PsiClass innerPsiClass) {
// TODO: hack against inner classes
return innerPsiClass.hasModifierProperty(PsiModifier.PRIVATE)
|| innerPsiClass.getName().equals(JvmAbi.CLASS_OBJECT_CLASS_NAME)
|| DescriptorResolverUtils.isInnerEnum(innerPsiClass, owner);
}
private List<ClassDescriptor> resolveInnerClassesOfClassObject(DeclarationDescriptor owner, PsiClass psiClass) {
if (!DescriptorUtils.isClassObject(owner)) {
return new ArrayList<ClassDescriptor>(0);
return Collections.emptyList();
}
List<ClassDescriptor> r = new ArrayList<ClassDescriptor>(0);
List<ClassDescriptor> result = Lists.newArrayList();
// If we're a class object, inner enums of our parent need to be put into us
DeclarationDescriptor containingDeclaration = owner.getContainingDeclaration();
for (PsiClass innerPsiClass : psiClass.getInnerClasses()) {
if (DescriptorResolverUtils.isInnerEnum(innerPsiClass, containingDeclaration)) {
ClassDescriptor classDescriptor = resolveInnerClass(innerPsiClass);
r.add(classDescriptor);
result.add(classDescriptor);
}
}
return r;
return result;
}
private ClassDescriptor resolveInnerClass(@NotNull PsiClass innerPsiClass) {