Remove dependency of 'resolution' on 'deserialization'

Replace it with a dependency on 'descriptors'.

Move the existing marker interface ContractProvider to 'descriptors',
and create a new marker interface DeserializedDescriptor.
This commit is contained in:
Alexander Udalov
2020-03-15 18:30:18 +01:00
committed by Alexander Udalov
parent b6fdc96994
commit 92534eadaa
9 changed files with 24 additions and 11 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ plugins {
dependencies {
compile(project(":compiler:util"))
compile(project(":core:deserialization"))
compile(project(":core:descriptors"))
compileOnly(intellijDep()) { includeJars("trove4j") }
}
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.contracts.description
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.serialization.deserialization.ContractProvider
import org.jetbrains.kotlin.descriptors.ContractProvider
import org.jetbrains.kotlin.storage.StorageManager
abstract class AbstractContractProvider : ContractProvider {
@@ -18,14 +18,12 @@ import org.jetbrains.kotlin.resolve.multiplatform.ExpectedActualResolver.Compati
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeConstructor
import org.jetbrains.kotlin.types.TypeConstructorSubstitution
import org.jetbrains.kotlin.types.TypeSubstitutor
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
import org.jetbrains.kotlin.types.checker.ClassicTypeCheckerContext
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
import org.jetbrains.kotlin.types.typeUtil.asTypeProjection
import org.jetbrains.kotlin.utils.SmartList
import org.jetbrains.kotlin.utils.keysToMap
@@ -581,5 +579,4 @@ fun DeclarationDescriptor.findActuals(inModule: ModuleDescriptor = this.module):
// TODO: Klibs still need to better handle source in deserialized descriptors.
val DeclarationDescriptorWithSource.couldHaveASource: Boolean get() =
this.source.containingFile != SourceFile.NO_SOURCE_FILE ||
this is DeserializedMemberDescriptor ||
this is DeserializedClassDescriptor
this is DeserializedDescriptor
+1
View File
@@ -5,6 +5,7 @@ plugins {
dependencies {
compile(project(":compiler:resolution"))
compile(project(":core:deserialization"))
}
sourceSets {
@@ -0,0 +1,8 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.descriptors
interface ContractProvider
@@ -0,0 +1,8 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.descriptors
interface DeserializedDescriptor : DeclarationDescriptor
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.serialization.deserialization
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.ContractProvider
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.TypeTable
@@ -40,5 +41,3 @@ interface ContractDeserializer {
}
}
}
interface ContractProvider
@@ -41,7 +41,7 @@ class DeserializedClassDescriptor(
) : AbstractClassDescriptor(
outerContext.storageManager,
nameResolver.getClassId(classProto.fqName).shortClassName
) {
), DeserializedDescriptor {
private val classId = nameResolver.getClassId(classProto.fqName)
private val modality = ProtoEnumFlags.modality(Flags.MODALITY.get(classProto.flags))
@@ -20,7 +20,7 @@ interface DescriptorWithContainerSource : MemberDescriptor {
val containerSource: DeserializedContainerSource?
}
interface DeserializedMemberDescriptor : MemberDescriptor, DescriptorWithContainerSource {
interface DeserializedMemberDescriptor : DeserializedDescriptor, MemberDescriptor, DescriptorWithContainerSource {
val proto: MessageLite
val nameResolver: NameResolver