Outer classes are properly computed

This commit is contained in:
Andrey Breslav
2013-05-22 20:44:09 +04:00
committed by Alexander Udalov
parent b536b3961e
commit b38c5b9d08
2 changed files with 13 additions and 1 deletions
@@ -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());
@@ -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);
}
};
}