Drop ClassDataFinder#getClassNames()
This commit is contained in:
+1
-1
@@ -115,7 +115,7 @@ public class IncrementalPackageFragmentProvider(
|
||||
}
|
||||
|
||||
private inner class IncrementalPackageScope(val packageData: PackageData) : DeserializedPackageMemberScope(
|
||||
this@IncrementalPackageFragment, packageData, deserializationContext
|
||||
this@IncrementalPackageFragment, packageData, deserializationContext, { listOf() }
|
||||
) {
|
||||
override fun filteredMemberProtos(allMemberProtos: Collection<ProtoBuf.Callable>): Collection<ProtoBuf.Callable> {
|
||||
return allMemberProtos
|
||||
|
||||
+13
-1
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.kotlin;
|
||||
|
||||
import kotlin.Function0;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassData;
|
||||
@@ -27,10 +28,14 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader.Kind.CLASS;
|
||||
import static org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader.Kind.PACKAGE_FACADE;
|
||||
|
||||
@@ -65,7 +70,14 @@ public final class DeserializedDescriptorResolver {
|
||||
public JetScope createKotlinPackageScope(@NotNull PackageFragmentDescriptor descriptor, @NotNull KotlinJvmBinaryClass kotlinClass) {
|
||||
String[] data = readData(kotlinClass, PACKAGE_FACADE);
|
||||
if (data != null) {
|
||||
return new DeserializedPackageMemberScope(descriptor, JavaProtoBufUtil.readPackageDataFrom(data), context);
|
||||
//all classes are included in java scope
|
||||
return new DeserializedPackageMemberScope(descriptor, JavaProtoBufUtil.readPackageDataFrom(data), context,
|
||||
new Function0<Collection<Name>>() {
|
||||
@Override
|
||||
public Collection<Name> invoke() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
});
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
-4
@@ -45,8 +45,4 @@ public class JavaClassDataFinder(
|
||||
val data = deserializedDescriptorResolver.readData(kotlinJvmBinaryClass, KotlinClassHeader.Kind.CLASS) ?: return null
|
||||
return JavaProtoBufUtil.readClassDataFrom(data)
|
||||
}
|
||||
|
||||
override fun getClassNames(packageName: FqName): Collection<Name> {
|
||||
return Collections.emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
+28
-39
@@ -48,14 +48,40 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
|
||||
|
||||
packageFragmentProvider = new BuiltinsPackageFragmentProvider();
|
||||
|
||||
BuiltInsClassDataFinder builtInsClassDataFinder = new BuiltInsClassDataFinder(storageManager);
|
||||
Function0<Collection<Name>> classNames = new Function0<Collection<Name>>() {
|
||||
@Override
|
||||
@NotNull
|
||||
public Collection<Name> invoke() {
|
||||
InputStream in = getStream(BuiltInsSerializationUtil.getClassNamesFilePath(getFqName()));
|
||||
|
||||
try {
|
||||
DataInputStream data = new DataInputStream(in);
|
||||
try {
|
||||
int size = data.readInt();
|
||||
List<Name> result = new ArrayList<Name>(size);
|
||||
for (int i = 0; i < size; i++) {
|
||||
result.add(nameResolver.getName(data.readInt()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
finally {
|
||||
data.close();
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
BuiltInsClassDataFinder builtInsClassDataFinder = new BuiltInsClassDataFinder();
|
||||
DeserializationContext deserializationContext = new DeserializationContext(
|
||||
storageManager, module, builtInsClassDataFinder,
|
||||
// TODO: support annotations
|
||||
AnnotationLoader.UNSUPPORTED, ConstantLoader.UNSUPPORTED, packageFragmentProvider,
|
||||
new ClassDeserializer(storageManager, builtInsClassDataFinder), nameResolver
|
||||
);
|
||||
members = new DeserializedPackageMemberScope(this, loadPackage(), deserializationContext);
|
||||
members = new DeserializedPackageMemberScope(this, loadPackage(), deserializationContext, classNames);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -116,37 +142,6 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
|
||||
}
|
||||
|
||||
private class BuiltInsClassDataFinder implements ClassDataFinder {
|
||||
private final NotNullLazyValue<Collection<Name>> classNames;
|
||||
|
||||
public BuiltInsClassDataFinder(@NotNull StorageManager storageManager) {
|
||||
// TODO: support annotations
|
||||
classNames = storageManager.createLazyValue(new Function0<Collection<Name>>() {
|
||||
@Override
|
||||
@NotNull
|
||||
public Collection<Name> invoke() {
|
||||
InputStream in = getStream(BuiltInsSerializationUtil.getClassNamesFilePath(getFqName()));
|
||||
|
||||
try {
|
||||
DataInputStream data = new DataInputStream(in);
|
||||
try {
|
||||
int size = data.readInt();
|
||||
List<Name> result = new ArrayList<Name>(size);
|
||||
for (int i = 0; i < size; i++) {
|
||||
result.add(nameResolver.getName(data.readInt()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
finally {
|
||||
data.close();
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ClassData findClassData(@NotNull ClassId classId) {
|
||||
@@ -172,11 +167,5 @@ class BuiltinsPackageFragment extends PackageFragmentDescriptorImpl {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Name> getClassNames(@NotNull FqName packageName) {
|
||||
return packageName.equals(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME) ? classNames.invoke() : Collections.<Name>emptyList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-11
@@ -18,19 +18,8 @@ package org.jetbrains.jet.descriptors.serialization;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.ReadOnly;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public interface ClassDataFinder {
|
||||
@Nullable
|
||||
ClassData findClassData(@NotNull ClassId classId);
|
||||
|
||||
@ReadOnly
|
||||
@NotNull
|
||||
Collection<Name> getClassNames(@NotNull FqName packageName);
|
||||
}
|
||||
|
||||
+10
-4
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.jet.descriptors.serialization.descriptors;
|
||||
|
||||
import kotlin.Function0;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
||||
@@ -31,6 +32,7 @@ import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor;
|
||||
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 org.jetbrains.jet.storage.NotNullLazyValue;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -38,23 +40,27 @@ public class DeserializedPackageMemberScope extends DeserializedMemberScope {
|
||||
|
||||
private final FqName packageFqName;
|
||||
private final DeserializationContext context;
|
||||
private final NotNullLazyValue<Collection<Name>> classNames;
|
||||
|
||||
public DeserializedPackageMemberScope(
|
||||
@NotNull PackageFragmentDescriptor packageDescriptor,
|
||||
@NotNull ProtoBuf.Package proto,
|
||||
@NotNull DeserializationContext context
|
||||
@NotNull DeserializationContext context,
|
||||
@NotNull Function0<Collection<Name>> classNames
|
||||
) {
|
||||
super(context.withTypes(packageDescriptor), proto.getMemberList());
|
||||
this.context = context;
|
||||
this.packageFqName = packageDescriptor.getFqName();
|
||||
this.classNames = context.getStorageManager().createLazyValue(classNames);
|
||||
}
|
||||
|
||||
public DeserializedPackageMemberScope(
|
||||
@NotNull PackageFragmentDescriptor packageDescriptor,
|
||||
@NotNull PackageData packageData,
|
||||
@NotNull DeserializationGlobalContext context
|
||||
@NotNull DeserializationGlobalContext context,
|
||||
@NotNull Function0<Collection<Name>> classNames
|
||||
) {
|
||||
this(packageDescriptor, packageData.getPackageProto(), context.withNameResolver(packageData.getNameResolver()));
|
||||
this(packageDescriptor, packageData.getPackageProto(), context.withNameResolver(packageData.getNameResolver()), classNames);
|
||||
}
|
||||
@Nullable
|
||||
@Override
|
||||
@@ -64,7 +70,7 @@ public class DeserializedPackageMemberScope extends DeserializedMemberScope {
|
||||
|
||||
@Override
|
||||
protected void addAllClassDescriptors(@NotNull Collection<DeclarationDescriptor> result) {
|
||||
for (Name className : context.getClassDataFinder().getClassNames(packageFqName)) {
|
||||
for (Name className : classNames.invoke()) {
|
||||
ClassDescriptor classDescriptor = getClassDescriptor(className);
|
||||
|
||||
if (classDescriptor != null) {
|
||||
|
||||
@@ -72,7 +72,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
|
||||
createDummyPackageFragment(packageFqName),
|
||||
JavaProtoBufUtil.readPackageDataFrom(annotationData),
|
||||
deserializationContext
|
||||
)
|
||||
) { listOf() }
|
||||
return membersScope.getAllDescriptors()
|
||||
}
|
||||
|
||||
@@ -126,10 +126,6 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
|
||||
}
|
||||
return JavaProtoBufUtil.readClassDataFrom(data)
|
||||
}
|
||||
|
||||
override fun getClassNames(packageName: FqName): Collection<Name> {
|
||||
return Collections.emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
private val packageFragmentProvider = object : PackageFragmentProvider {
|
||||
|
||||
Reference in New Issue
Block a user