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 4697ec71d1a..e53c9031ffb 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 @@ -734,13 +734,25 @@ public class JavaDescriptorResolver { return jetSignatureTypeParametersVisitor.r; } - private ClassOrNamespaceDescriptor resolveParentDescriptor(PsiClass psiClass) { + @NotNull + private ClassOrNamespaceDescriptor resolveParentDescriptor(@NotNull PsiClass psiClass) { + FqName fqName = new FqName(psiClass.getQualifiedName()); + PsiClass containingClass = psiClass.getContainingClass(); if (containingClass != null) { - return resolveClass(new FqName(containingClass.getQualifiedName()), DescriptorSearchRule.INCLUDE_KOTLIN); + FqName containerFqName = new FqName(containingClass.getQualifiedName()); + 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); + } + return clazz; } - return resolveNamespace(new FqName(psiClass.getQualifiedName()).parent(), DescriptorSearchRule.INCLUDE_KOTLIN); + NamespaceDescriptor ns = 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; } private List makeUninitializedTypeParameters(@NotNull DeclarationDescriptor containingDeclaration, @NotNull PsiTypeParameter[] typeParameters) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java index c755b35b754..100305afe9e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java @@ -60,7 +60,7 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp private ClassReceiver implicitReceiver; - public MutableClassDescriptorLite(DeclarationDescriptor containingDeclaration, ClassKind kind) { + public MutableClassDescriptorLite(@NotNull DeclarationDescriptor containingDeclaration, ClassKind kind) { super(containingDeclaration); this.kind = kind; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableDeclarationDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableDeclarationDescriptor.java index 53170720883..ed4945cc602 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableDeclarationDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableDeclarationDescriptor.java @@ -25,7 +25,7 @@ public abstract class MutableDeclarationDescriptor implements DeclarationDescrip private String name; private final DeclarationDescriptor containingDeclaration; - public MutableDeclarationDescriptor(DeclarationDescriptor containingDeclaration) { + public MutableDeclarationDescriptor(@NotNull DeclarationDescriptor containingDeclaration) { this.containingDeclaration = containingDeclaration; }