Minor, change parameter order, reformat

This commit is contained in:
Alexander Udalov
2014-11-25 18:41:10 +03:00
parent eadf9a13b9
commit fc0f83cbdb
4 changed files with 22 additions and 27 deletions
@@ -17,7 +17,7 @@
package org.jetbrains.jet.lang.types.lang
import org.jetbrains.jet.descriptors.serialization.*
import org.jetbrains.jet.descriptors.serialization.context.DeserializationContext
import org.jetbrains.jet.descriptors.serialization.context.DeserializationGlobalContext
import org.jetbrains.jet.descriptors.serialization.descriptors.AnnotationLoader
import org.jetbrains.jet.descriptors.serialization.descriptors.ConstantLoader
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPackageMemberScope
@@ -28,9 +28,7 @@ import org.jetbrains.jet.lang.descriptors.impl.PackageFragmentDescriptorImpl
import org.jetbrains.jet.lang.resolve.name.ClassId
import org.jetbrains.jet.lang.resolve.name.FqName
import org.jetbrains.jet.lang.resolve.name.Name
import org.jetbrains.jet.lang.resolve.scopes.JetScope
import org.jetbrains.jet.storage.StorageManager
import java.io.DataInputStream
import java.io.IOException
import java.io.InputStream
@@ -44,17 +42,11 @@ class BuiltinsPackageFragment(storageManager: StorageManager, module: ModuleDesc
public val provider: PackageFragmentProvider = BuiltinsPackageFragmentProvider()
private val members: DeserializedPackageMemberScope = run {
val builtInsClassDataFinder = BuiltInsClassDataFinder()
val deserializationContext = DeserializationContext(storageManager,
module,
builtInsClassDataFinder,
AnnotationLoader.UNSUPPORTED, // TODO: support annotations
ConstantLoader.UNSUPPORTED,
provider,
FlexibleTypeCapabilitiesDeserializer.ThrowException,
ClassDeserializer(storageManager, builtInsClassDataFinder),
nameResolver)
DeserializedPackageMemberScope(this, loadPackage(), deserializationContext, { readClassNames() })
val deserializationContext = DeserializationGlobalContext(
storageManager, module, BuiltInsClassDataFinder(), AnnotationLoader.UNSUPPORTED, // TODO: support annotations
ConstantLoader.UNSUPPORTED, provider, FlexibleTypeCapabilitiesDeserializer.ThrowException
).withNameResolver(nameResolver)
DeserializedPackageMemberScope(this, loadPackage(), deserializationContext, { readClassNames() })
}
private fun loadPackage(): ProtoBuf.Package {
@@ -23,13 +23,14 @@ import org.jetbrains.jet.descriptors.serialization.context.DeserializationGlobal
import kotlin.properties.Delegates
import org.jetbrains.jet.lang.resolve.name.ClassId
public class ClassDeserializer(val storageManager: StorageManager, val classDataFinder: ClassDataFinder) {
public class ClassDeserializer(storageManager: StorageManager) {
// This should have been a constructor parameter, but this class and the context depend circularly on each other
var globalContext: DeserializationGlobalContext by Delegates.notNull()
private val classes: (ClassKey) -> DeserializedClassDescriptor? = storageManager.createMemoizedFunctionWithNullableValues {
(key: ClassKey) ->
val classId = key.classId
val classData = key.classData ?: classDataFinder.findClassData(classId)
val classData = key.classData ?: globalContext.classDataFinder.findClassData(classId)
if (classData != null) {
val outerClassContext =
if (classId.isTopLevelClass()) null
@@ -40,7 +40,7 @@ public open class DeserializationGlobalContext(
public val constantLoader: ConstantLoader,
public val packageFragmentProvider: PackageFragmentProvider,
public val flexibleTypeCapabilitiesDeserializer: FlexibleTypeCapabilitiesDeserializer,
public val classDeserializer: ClassDeserializer = ClassDeserializer(storageManager, classDataFinder)
public val classDeserializer: ClassDeserializer = ClassDeserializer(storageManager)
) {
{
classDeserializer.globalContext = this
@@ -48,10 +48,15 @@ public open class DeserializationGlobalContext(
public fun withNameResolver(nameResolver: NameResolver): DeserializationContext {
return DeserializationContext(storageManager, moduleDescriptor, classDataFinder, annotationLoader,
constantLoader, packageFragmentProvider, flexibleTypeCapabilitiesDeserializer, classDeserializer, nameResolver)
constantLoader, packageFragmentProvider, flexibleTypeCapabilitiesDeserializer,
classDeserializer, nameResolver)
}
}
fun DeserializationGlobalContext.deserializeClass(classId: ClassId): ClassDescriptor? {
return classDeserializer.deserializeClass(classId)
}
public open class DeserializationContext(
storageManager: StorageManager,
@@ -72,8 +77,8 @@ public open class DeserializationContext(
fun withTypes(containingDeclaration: DeclarationDescriptor, typeDeserializer: TypeDeserializer): DeserializationContextWithTypes {
return DeserializationContextWithTypes(storageManager, moduleDescriptor, classDataFinder, annotationLoader,
constantLoader, packageFragmentProvider, classDeserializer,
nameResolver, flexibleTypeCapabilitiesDeserializer, containingDeclaration, typeDeserializer)
constantLoader, packageFragmentProvider, flexibleTypeCapabilitiesDeserializer,
classDeserializer, nameResolver, containingDeclaration, typeDeserializer)
}
}
@@ -86,16 +91,16 @@ class DeserializationContextWithTypes(
annotationLoader: AnnotationLoader,
constantLoader: ConstantLoader,
packageFragmentProvider: PackageFragmentProvider,
flexibleTypeCapabilitiesDeserializer: FlexibleTypeCapabilitiesDeserializer,
classDeserializer: ClassDeserializer,
nameResolver: NameResolver,
flexibleTypeCapabilitiesDeserializer: FlexibleTypeCapabilitiesDeserializer,
val containingDeclaration: DeclarationDescriptor,
val typeDeserializer: TypeDeserializer
) : DeserializationContext(storageManager, moduleDescriptor, classDataFinder, annotationLoader,
constantLoader, packageFragmentProvider, flexibleTypeCapabilitiesDeserializer, classDeserializer, nameResolver) {
val deserializer: MemberDeserializer = MemberDeserializer(this)
public fun childContext(descriptor: DeclarationDescriptor, typeParameterProtos: List<TypeParameter>): DeserializationContextWithTypes {
fun childContext(descriptor: DeclarationDescriptor, typeParameterProtos: List<TypeParameter>): DeserializationContextWithTypes {
val childTypeDeserializer = TypeDeserializer(this, typeDeserializer, "Child deserializer for ${descriptor.getName()}")
val childContext = withTypes(descriptor, childTypeDeserializer)
@@ -106,7 +111,3 @@ class DeserializationContextWithTypes(
return childContext
}
}
fun DeserializationGlobalContext.deserializeClass(classId: ClassId): ClassDescriptor? {
return classDeserializer.deserializeClass(classId)
}
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import org.jetbrains.jet.descriptors.serialization.ClassData
import org.jetbrains.jet.lang.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.jet.plugin.decompiler.isKotlinWithCompatibleAbiVersion
import org.jetbrains.jet.descriptors.serialization.context.deserializeClass
public fun DeserializerForDecompiler(classFile: VirtualFile): DeserializerForDecompiler {
val kotlinClass = KotlinBinaryClassCache.getKotlinBinaryClass(classFile)
@@ -53,7 +54,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
private fun createDummyModule(name: String) = ModuleDescriptorImpl(Name.special("<$name>"), listOf(), PlatformToKotlinClassMap.EMPTY)
override fun resolveTopLevelClass(classId: ClassId) = deserializationContext.classDeserializer.deserializeClass(classId)
override fun resolveTopLevelClass(classId: ClassId) = deserializationContext.deserializeClass(classId)
override fun resolveDeclarationsInPackage(packageFqName: FqName): Collection<DeclarationDescriptor> {
assert(packageFqName == directoryPackageFqName, "Was called for $packageFqName but only $directoryPackageFqName is expected.")