Don't test DescriptorFinder logic in KotlinClass test
LoadCompiledKotlin and DescriptorSerialization tests should cover this. KotlinClassAnnotationTest should only test that the correct annotation is written
This commit is contained in:
@@ -17,25 +17,16 @@
|
|||||||
package org.jetbrains.jet.codegen;
|
package org.jetbrains.jet.codegen;
|
||||||
|
|
||||||
import jet.KotlinClass;
|
import jet.KotlinClass;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.jet.ConfigurationKind;
|
import org.jetbrains.jet.ConfigurationKind;
|
||||||
import org.jetbrains.jet.JetTestUtils;
|
|
||||||
import org.jetbrains.jet.descriptors.serialization.AbstractDescriptorFinder;
|
|
||||||
import org.jetbrains.jet.descriptors.serialization.ClassData;
|
import org.jetbrains.jet.descriptors.serialization.ClassData;
|
||||||
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
|
||||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
||||||
import org.jetbrains.jet.descriptors.serialization.descriptors.AnnotationDeserializer;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.jetbrains.jet.codegen.KotlinPackageAnnotationTest.collectCallableNames;
|
||||||
|
|
||||||
public class KotlinClassAnnotationTest extends CodegenTestCase {
|
public class KotlinClassAnnotationTest extends CodegenTestCase {
|
||||||
public static final FqName NAMESPACE_NAME = new FqName("test");
|
public static final FqName NAMESPACE_NAME = new FqName("test");
|
||||||
@@ -59,43 +50,9 @@ public class KotlinClassAnnotationTest extends CodegenTestCase {
|
|||||||
assertTrue(aClass.isAnnotationPresent(KotlinClass.class));
|
assertTrue(aClass.isAnnotationPresent(KotlinClass.class));
|
||||||
KotlinClass kotlinClass = (KotlinClass) aClass.getAnnotation(KotlinClass.class);
|
KotlinClass kotlinClass = (KotlinClass) aClass.getAnnotation(KotlinClass.class);
|
||||||
|
|
||||||
AbstractDescriptorFinder descriptorFinder = new KotlinInfoBasedDescriptorFinder(kotlinClass);
|
ClassData data = JavaProtoBufUtil.readClassDataFrom(kotlinClass.data());
|
||||||
|
|
||||||
ClassDescriptor descriptor = descriptorFinder.findClass(new ClassId(NAMESPACE_NAME, CLASS_NAME));
|
Set<String> callableNames = collectCallableNames(data.getClassProto().getMemberList(), data.getNameResolver());
|
||||||
assertNotNull(descriptor);
|
assertSameElements(Arrays.asList("foo", "bar"), callableNames);
|
||||||
assertEquals(CLASS_NAME.asString(), descriptor.getName().asString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class KotlinInfoBasedDescriptorFinder extends AbstractDescriptorFinder {
|
|
||||||
private final ClassData classData;
|
|
||||||
private final NamespaceDescriptorImpl namespace;
|
|
||||||
|
|
||||||
public KotlinInfoBasedDescriptorFinder(@NotNull KotlinClass kotlinClass) throws IOException {
|
|
||||||
super(new LockBasedStorageManager(), AnnotationDeserializer.UNSUPPORTED);
|
|
||||||
|
|
||||||
this.classData = JavaProtoBufUtil.readClassDataFrom(kotlinClass.data());
|
|
||||||
this.namespace = JetTestUtils.createTestNamespace(NAMESPACE_NAME.shortName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
protected ClassData getClassData(@NotNull ClassId classId) {
|
|
||||||
assert classId.getPackageFqName().equals(NAMESPACE_NAME) &&
|
|
||||||
classId.getRelativeClassName().equals(CLASS_NAME) : "Unsupported classId: " + classId;
|
|
||||||
return classData;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public NamespaceDescriptor findPackage(@NotNull FqName fqName) {
|
|
||||||
assert fqName.equals(NAMESPACE_NAME) : "Unsupported namespace: " + fqName;
|
|
||||||
return namespace;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public Collection<Name> getClassNames(@NotNull FqName packageName) {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import jet.KotlinPackage;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.ConfigurationKind;
|
import org.jetbrains.jet.ConfigurationKind;
|
||||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
||||||
|
import org.jetbrains.jet.descriptors.serialization.NameResolver;
|
||||||
import org.jetbrains.jet.descriptors.serialization.PackageData;
|
import org.jetbrains.jet.descriptors.serialization.PackageData;
|
||||||
import org.jetbrains.jet.descriptors.serialization.ProtoBuf;
|
import org.jetbrains.jet.descriptors.serialization.ProtoBuf;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
@@ -55,16 +56,15 @@ public class KotlinPackageAnnotationTest extends CodegenTestCase {
|
|||||||
|
|
||||||
PackageData data = JavaProtoBufUtil.readPackageDataFrom(kotlinPackage.data());
|
PackageData data = JavaProtoBufUtil.readPackageDataFrom(kotlinPackage.data());
|
||||||
|
|
||||||
Set<String> callableNames = collectCallableNames(data);
|
Set<String> callableNames = collectCallableNames(data.getPackageProto().getMemberList(), data.getNameResolver());
|
||||||
assertSameElements(Arrays.asList("foo", "bar", "C"), callableNames);
|
assertSameElements(Arrays.asList("foo", "bar", "C"), callableNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static Set<String> collectCallableNames(@NotNull PackageData data) {
|
public static Set<String> collectCallableNames(@NotNull List<ProtoBuf.Callable> members, @NotNull NameResolver nameResolver) {
|
||||||
Set<String> callableNames = new HashSet<String>();
|
Set<String> callableNames = new HashSet<String>();
|
||||||
List<ProtoBuf.Callable> list = data.getPackageProto().getMemberList();
|
for (ProtoBuf.Callable callable : members) {
|
||||||
for (ProtoBuf.Callable callable : list) {
|
callableNames.add(nameResolver.getName(callable.getName()).asString());
|
||||||
callableNames.add(data.getNameResolver().getName(callable.getName()).asString());
|
|
||||||
}
|
}
|
||||||
return callableNames;
|
return callableNames;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user