Change object deserialization strategy
Objects now have synthetic class objects in deserialization as well. "Class" proto message now can have a synthetic class object proto within, if it's not contained in any external class file, which is the case with objects. Drop "class_object_present" field from binary format, since its value is equivalent to the presence of "class_object" field
This commit is contained in:
+1
-5
@@ -55,11 +55,7 @@ public final class JavaPackageScope extends JavaBaseScope {
|
||||
|
||||
@Override
|
||||
public ClassifierDescriptor getClassifier(@NotNull Name name) {
|
||||
ClassDescriptor classDescriptor = memberResolver.resolveClass(packageFQN.child(name), IGNORE_KOTLIN_SOURCES);
|
||||
if (classDescriptor == null || classDescriptor.getKind().isSingleton()) {
|
||||
return null;
|
||||
}
|
||||
return classDescriptor;
|
||||
return memberResolver.resolveClass(packageFQN.child(name), IGNORE_KOTLIN_SOURCES);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+12
-4
@@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.resolve.kotlin;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassData;
|
||||
import org.jetbrains.jet.descriptors.serialization.ClassId;
|
||||
import org.jetbrains.jet.descriptors.serialization.DescriptorFinder;
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
||||
@@ -97,15 +98,22 @@ public final class DeserializedDescriptorResolver {
|
||||
@Nullable
|
||||
public ClassDescriptor resolveClass(@NotNull KotlinJvmBinaryClass kotlinClass) {
|
||||
String[] data = readData(kotlinClass);
|
||||
return data == null ? null : new DeserializedClassDescriptor(storageManager, annotationDeserializer, javaDescriptorFinder,
|
||||
JavaProtoBufUtil.readClassDataFrom(data));
|
||||
if (data != null) {
|
||||
ClassData classData = JavaProtoBufUtil.readClassDataFrom(data);
|
||||
return new DeserializedClassDescriptor(storageManager, annotationDeserializer, javaDescriptorFinder,
|
||||
classData.getNameResolver(), classData.getClassProto());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JetScope createKotlinPackageScope(@NotNull NamespaceDescriptor descriptor, @NotNull KotlinJvmBinaryClass kotlinClass) {
|
||||
String[] data = readData(kotlinClass);
|
||||
return data == null ? null : new DeserializedPackageMemberScope(storageManager, descriptor, annotationDeserializer,
|
||||
javaDescriptorFinder, JavaProtoBufUtil.readPackageDataFrom(data));
|
||||
if (data != null) {
|
||||
return new DeserializedPackageMemberScope(storageManager, descriptor, annotationDeserializer, javaDescriptorFinder,
|
||||
JavaProtoBufUtil.readPackageDataFrom(data));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user