diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 8c8e35393e8..ea2032c96bb 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -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 public NamespaceDescriptor resolveNamespace(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) { return namespaceResolver.resolveNamespace(qualifiedName, searchRule); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java index aaa805a6cae..4038b22b7fd 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/ClassResolver.java @@ -147,7 +147,7 @@ public class ClassResolver { Name name = Name.identifier(psiClass.getName()); JetClassAnnotation jetClassAnnotation = JetClassAnnotation.get(psiClass); ClassKind kind = getClassKind(psiClass, jetClassAnnotation); - ClassOrNamespaceDescriptor containingDeclaration = javaDescriptorResolver.resolveParentDescriptor(psiClass); + ClassOrNamespaceDescriptor containingDeclaration = resolveParentDescriptor(psiClass); // class may be resolved during resolution of parent 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) { if (psiClass.isInterface()) { return (psiClass.isAnnotationType() ? ClassKind.ANNOTATION_CLASS : ClassKind.TRAIT);