Cosmetics in JavaInnerClassResolver
This commit is contained in:
+17
-16
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.resolver;
|
package org.jetbrains.jet.lang.resolve.java.resolver;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.intellij.psi.PsiClass;
|
import com.intellij.psi.PsiClass;
|
||||||
import com.intellij.psi.PsiModifier;
|
import com.intellij.psi.PsiModifier;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -29,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public final class JavaInnerClassResolver {
|
public final class JavaInnerClassResolver {
|
||||||
@@ -49,40 +51,39 @@ public final class JavaInnerClassResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PsiClass[] innerPsiClasses = psiClass.getInnerClasses();
|
PsiClass[] innerPsiClasses = psiClass.getInnerClasses();
|
||||||
List<ClassDescriptor> r = new ArrayList<ClassDescriptor>(innerPsiClasses.length);
|
List<ClassDescriptor> result = new ArrayList<ClassDescriptor>(innerPsiClasses.length);
|
||||||
for (PsiClass innerPsiClass : innerPsiClasses) {
|
for (PsiClass innerPsiClass : innerPsiClasses) {
|
||||||
if (innerPsiClass.hasModifierProperty(PsiModifier.PRIVATE)) {
|
if (shouldBeIgnored(owner, innerPsiClass)) {
|
||||||
// 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
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ClassDescriptor classDescriptor = resolveInnerClass(innerPsiClass);
|
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) {
|
private List<ClassDescriptor> resolveInnerClassesOfClassObject(DeclarationDescriptor owner, PsiClass psiClass) {
|
||||||
if (!DescriptorUtils.isClassObject(owner)) {
|
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
|
// If we're a class object, inner enums of our parent need to be put into us
|
||||||
DeclarationDescriptor containingDeclaration = owner.getContainingDeclaration();
|
DeclarationDescriptor containingDeclaration = owner.getContainingDeclaration();
|
||||||
for (PsiClass innerPsiClass : psiClass.getInnerClasses()) {
|
for (PsiClass innerPsiClass : psiClass.getInnerClasses()) {
|
||||||
if (DescriptorResolverUtils.isInnerEnum(innerPsiClass, containingDeclaration)) {
|
if (DescriptorResolverUtils.isInnerEnum(innerPsiClass, containingDeclaration)) {
|
||||||
ClassDescriptor classDescriptor = resolveInnerClass(innerPsiClass);
|
ClassDescriptor classDescriptor = resolveInnerClass(innerPsiClass);
|
||||||
r.add(classDescriptor);
|
result.add(classDescriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ClassDescriptor resolveInnerClass(@NotNull PsiClass innerPsiClass) {
|
private ClassDescriptor resolveInnerClass(@NotNull PsiClass innerPsiClass) {
|
||||||
|
|||||||
Reference in New Issue
Block a user