diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java index b984ffefc59..031b6525e29 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java @@ -30,6 +30,15 @@ public final class ClassId { return new ClassId(getPackageFqName(), relativeClassName.child(name)); } + @NotNull + public ClassId getOuterClassId() { + return new ClassId(getPackageFqName(), relativeClassName.parent()); + } + + public boolean isTopLevelClass() { + return relativeClassName.parent().isRoot(); + } + public FqNameUnsafe asSingleFqName() { if (packageFqName.isRoot()) return relativeClassName; return new FqNameUnsafe(packageFqName.asString() + "." + relativeClassName.asString()); diff --git a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java index 1c1a17e4d16..feb93d19af5 100644 --- a/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java +++ b/compiler/tests/org/jetbrains/jet/descriptors/serialization/AbstractDescriptorSerializationTest.java @@ -324,7 +324,10 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith @Nullable @Override protected ClassDescriptor doCompute(@NotNull ClassId classId) { - return resolveClass(ClassResolverImpl.this.parentForClasses, classId); + DeclarationDescriptor containingDeclaration = + classId.isTopLevelClass() ? ClassResolverImpl.this.parentForClasses : findClass(classId.getOuterClassId()); + assert containingDeclaration != null : "Containing declaration not found: " + classId.getOuterClassId(); + return resolveClass(containingDeclaration, classId); } }; }