DescriptorFinder now can find class names in a package
This helps to get rid of "repeated class_name" field in Package protobuf message. DescriptorFinder in resolve.java uses PSI to find all classes in a package, and the finder for built-ins just reads .kotlin_class_names file
This commit is contained in:
@@ -32,8 +32,10 @@ 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.FqNameUnsafe;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
|
||||
public class KotlinClassAnnotationTest extends CodegenTestCase {
|
||||
public static final FqName NAMESPACE_NAME = new FqName("test");
|
||||
@@ -90,6 +92,12 @@ public class KotlinClassAnnotationTest extends CodegenTestCase {
|
||||
return namespace;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Name> getClassNames(@NotNull FqName packageName) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void classDescriptorCreated(@NotNull ClassDescriptor classDescriptor) {
|
||||
}
|
||||
|
||||
@@ -55,9 +55,6 @@ public class KotlinPackageAnnotationTest extends CodegenTestCase {
|
||||
|
||||
PackageData data = JavaProtoBufUtil.readPackageDataFrom(kotlinPackage.data());
|
||||
|
||||
Set<String> classNames = collectClassNames(data);
|
||||
assertSameElements(Arrays.asList("A", "B", "C"), classNames);
|
||||
|
||||
Set<String> callableNames = collectCallableNames(data);
|
||||
assertSameElements(Arrays.asList("foo", "bar", "C"), callableNames);
|
||||
}
|
||||
@@ -71,13 +68,4 @@ public class KotlinPackageAnnotationTest extends CodegenTestCase {
|
||||
}
|
||||
return callableNames;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static Set<String> collectClassNames(@NotNull PackageData data) {
|
||||
Set<String> classNames = new HashSet<String>();
|
||||
for (int name : data.getPackageProto().getClassNameList()) {
|
||||
classNames.add(data.getNameResolver().getName(name).asString());
|
||||
}
|
||||
return classNames;
|
||||
}
|
||||
}
|
||||
|
||||
+12
@@ -295,6 +295,12 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
|
||||
public NamespaceDescriptor findPackage(@NotNull FqName name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Name> getClassNames(@NotNull FqName packageName) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
private static class JavaDescriptorFinder implements DescriptorFinder {
|
||||
@@ -340,5 +346,11 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
|
||||
public NamespaceDescriptor findPackage(@NotNull FqName name) {
|
||||
return javaDescriptorResolver.resolveNamespace(name);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Name> getClassNames(@NotNull FqName packageName) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-2
@@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||
@@ -75,8 +76,7 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
|
||||
|
||||
List<ProtoBuf.Callable> callableProtos = serializeCallables(serializer, allDescriptors);
|
||||
|
||||
final NamespaceDescriptorImpl actualNamespace = JetTestUtils
|
||||
.createTestNamespace(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.shortName());
|
||||
final NamespaceDescriptorImpl actualNamespace = JetTestUtils.createTestNamespace(KotlinBuiltIns.BUILT_INS_PACKAGE_NAME);
|
||||
|
||||
final NameResolver nameResolver = NameSerializationUtil.createNameResolver(serializer.getNameTable());
|
||||
|
||||
@@ -88,6 +88,12 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
|
||||
return actualNamespace;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Name> getClassNames(@NotNull FqName packageName) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected ClassData getClassData(@NotNull ClassId classId) {
|
||||
|
||||
Reference in New Issue
Block a user