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)); 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() { public FqNameUnsafe asSingleFqName() {
if (packageFqName.isRoot()) return relativeClassName; if (packageFqName.isRoot()) return relativeClassName;
return new FqNameUnsafe(packageFqName.asString() + "." + relativeClassName.asString()); return new FqNameUnsafe(packageFqName.asString() + "." + relativeClassName.asString());
@@ -324,7 +324,10 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
@Nullable @Nullable
@Override @Override
protected ClassDescriptor doCompute(@NotNull ClassId classId) { 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);
} }
}; };
} }