Merge DeserializationGlobalContext with DeserializationComponents

This commit is contained in:
Alexander Udalov
2014-11-20 19:28:04 +03:00
parent aa1fa7063e
commit cb5c21e831
10 changed files with 46 additions and 61 deletions
@@ -16,12 +16,13 @@
package org.jetbrains.jet.lang.resolve.kotlin
import org.jetbrains.jet.descriptors.serialization.context.DeserializationGlobalContext
import org.jetbrains.jet.storage.StorageManager
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
import org.jetbrains.jet.descriptors.serialization.context.DeserializationComponents
// This class is needed only for easier injection: exact types of needed components are specified in the constructor here.
// Otherwise injector generator is not smart enough to deduce, for example, which package fragment provider DeserializationComponents needs
public class DeserializationGlobalContextForJava(
storageManager: StorageManager,
moduleDescriptor: ModuleDescriptor,
@@ -29,9 +30,9 @@ public class DeserializationGlobalContextForJava(
annotationLoader: AnnotationDescriptorLoader,
constantLoader: ConstantDescriptorLoader,
packageFragmentProvider: LazyJavaPackageFragmentProvider
) : DeserializationGlobalContext(
DeserializationComponents(
) {
val components = DeserializationComponents(
storageManager, moduleDescriptor, classDataFinder, annotationLoader, constantLoader, packageFragmentProvider,
JavaFlexibleTypeCapabilitiesDeserializer
)
)
}
@@ -54,7 +54,9 @@ public final class DeserializedDescriptorResolver {
public ClassDescriptor resolveClass(@NotNull KotlinJvmBinaryClass kotlinClass) {
String[] data = readData(kotlinClass, CLASS);
if (data != null) {
return context.getClassDeserializer().deserializeClass(kotlinClass.getClassId(), JavaProtoBufUtil.readClassDataFrom(data));
return context.getComponents().getClassDeserializer().deserializeClass(
kotlinClass.getClassId(), JavaProtoBufUtil.readClassDataFrom(data)
);
}
return null;
}
@@ -65,7 +67,7 @@ public final class DeserializedDescriptorResolver {
if (data != null) {
//all classes are included in java scope
return DescriptorsPackage.DeserializedPackageMemberScope(
descriptor, JavaProtoBufUtil.readPackageDataFrom(data), context,
descriptor, JavaProtoBufUtil.readPackageDataFrom(data), context.getComponents(),
new Function0<Collection<Name>>() {
@Override
public Collection<Name> invoke() {