Move methods from JavaDescriptorResolver to ClassResolver
This commit is contained in:
-33
@@ -235,39 +235,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public ClassOrNamespaceDescriptor resolveParentDescriptor(@NotNull PsiClass psiClass) {
|
|
||||||
final String qualifiedName = psiClass.getQualifiedName();
|
|
||||||
assert qualifiedName != null;
|
|
||||||
FqName fqName = new FqName(qualifiedName);
|
|
||||||
|
|
||||||
PsiClass containingClass = psiClass.getContainingClass();
|
|
||||||
if (containingClass != null) {
|
|
||||||
final String containingClassQualifiedName = containingClass.getQualifiedName();
|
|
||||||
assert containingClassQualifiedName != null;
|
|
||||||
FqName containerFqName = new FqName(containingClassQualifiedName);
|
|
||||||
ClassDescriptor clazz = classResolver.resolveClass(containerFqName, DescriptorSearchRule.INCLUDE_KOTLIN);
|
|
||||||
if (clazz == null) {
|
|
||||||
throw new IllegalStateException(
|
|
||||||
"PsiClass not found by name " + containerFqName + ", required to be container declaration of " + fqName);
|
|
||||||
}
|
|
||||||
if (isInnerEnum(psiClass, clazz) && isKotlinClass(psiClass)) {
|
|
||||||
ClassDescriptor classObjectDescriptor = clazz.getClassObjectDescriptor();
|
|
||||||
if (classObjectDescriptor == null) {
|
|
||||||
throw new IllegalStateException("Class object for a class with inner enum should've been created earlier: " + clazz);
|
|
||||||
}
|
|
||||||
return classObjectDescriptor;
|
|
||||||
}
|
|
||||||
return clazz;
|
|
||||||
}
|
|
||||||
|
|
||||||
NamespaceDescriptor ns = namespaceResolver.resolveNamespace(fqName.parent(), DescriptorSearchRule.INCLUDE_KOTLIN);
|
|
||||||
if (ns == null) {
|
|
||||||
throw new IllegalStateException("cannot resolve namespace " + fqName.parent() + ", required to be container for " + fqName);
|
|
||||||
}
|
|
||||||
return ns;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public NamespaceDescriptor resolveNamespace(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) {
|
public NamespaceDescriptor resolveNamespace(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) {
|
||||||
return namespaceResolver.resolveNamespace(qualifiedName, searchRule);
|
return namespaceResolver.resolveNamespace(qualifiedName, searchRule);
|
||||||
|
|||||||
+34
-1
@@ -147,7 +147,7 @@ public class ClassResolver {
|
|||||||
Name name = Name.identifier(psiClass.getName());
|
Name name = Name.identifier(psiClass.getName());
|
||||||
JetClassAnnotation jetClassAnnotation = JetClassAnnotation.get(psiClass);
|
JetClassAnnotation jetClassAnnotation = JetClassAnnotation.get(psiClass);
|
||||||
ClassKind kind = getClassKind(psiClass, jetClassAnnotation);
|
ClassKind kind = getClassKind(psiClass, jetClassAnnotation);
|
||||||
ClassOrNamespaceDescriptor containingDeclaration = javaDescriptorResolver.resolveParentDescriptor(psiClass);
|
ClassOrNamespaceDescriptor containingDeclaration = resolveParentDescriptor(psiClass);
|
||||||
|
|
||||||
// class may be resolved during resolution of parent
|
// class may be resolved during resolution of parent
|
||||||
JavaDescriptorResolveData.ResolverClassData classData = javaDescriptorResolver.getClassDescriptorCache().get(fqName);
|
JavaDescriptorResolveData.ResolverClassData classData = javaDescriptorResolver.getClassDescriptorCache().get(fqName);
|
||||||
@@ -399,6 +399,39 @@ public class ClassResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public ClassOrNamespaceDescriptor resolveParentDescriptor(@NotNull PsiClass psiClass) {
|
||||||
|
final String qualifiedName = psiClass.getQualifiedName();
|
||||||
|
assert qualifiedName != null;
|
||||||
|
FqName fqName = new FqName(qualifiedName);
|
||||||
|
|
||||||
|
PsiClass containingClass = psiClass.getContainingClass();
|
||||||
|
if (containingClass != null) {
|
||||||
|
final String containingClassQualifiedName = containingClass.getQualifiedName();
|
||||||
|
assert containingClassQualifiedName != null;
|
||||||
|
FqName containerFqName = new FqName(containingClassQualifiedName);
|
||||||
|
ClassDescriptor clazz = resolveClass(containerFqName, DescriptorSearchRule.INCLUDE_KOTLIN);
|
||||||
|
if (clazz == null) {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
"PsiClass not found by name " + containerFqName + ", required to be container declaration of " + fqName);
|
||||||
|
}
|
||||||
|
if (JavaDescriptorResolver.isInnerEnum(psiClass, clazz) && JavaDescriptorResolver.isKotlinClass(psiClass)) {
|
||||||
|
ClassDescriptor classObjectDescriptor = clazz.getClassObjectDescriptor();
|
||||||
|
if (classObjectDescriptor == null) {
|
||||||
|
throw new IllegalStateException("Class object for a class with inner enum should've been created earlier: " + clazz);
|
||||||
|
}
|
||||||
|
return classObjectDescriptor;
|
||||||
|
}
|
||||||
|
return clazz;
|
||||||
|
}
|
||||||
|
|
||||||
|
NamespaceDescriptor ns = javaDescriptorResolver.resolveNamespace(fqName.parent(), DescriptorSearchRule.INCLUDE_KOTLIN);
|
||||||
|
if (ns == null) {
|
||||||
|
throw new IllegalStateException("cannot resolve namespace " + fqName.parent() + ", required to be container for " + fqName);
|
||||||
|
}
|
||||||
|
return ns;
|
||||||
|
}
|
||||||
|
|
||||||
public static ClassKind getClassKind(@NotNull PsiClass psiClass, @NotNull JetClassAnnotation jetClassAnnotation) {
|
public static ClassKind getClassKind(@NotNull PsiClass psiClass, @NotNull JetClassAnnotation jetClassAnnotation) {
|
||||||
if (psiClass.isInterface()) {
|
if (psiClass.isInterface()) {
|
||||||
return (psiClass.isAnnotationType() ? ClassKind.ANNOTATION_CLASS : ClassKind.TRAIT);
|
return (psiClass.isAnnotationType() ? ClassKind.ANNOTATION_CLASS : ClassKind.TRAIT);
|
||||||
|
|||||||
Reference in New Issue
Block a user