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 { dependencies {
compile(project(":compiler:util")) compile(project(":compiler:util"))
compile(project(":core:deserialization")) compile(project(":core:descriptors"))
compileOnly(intellijDep()) { includeJars("trove4j") } compileOnly(intellijDep()) { includeJars("trove4j") }
} }
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.contracts.description package org.jetbrains.kotlin.contracts.description
import org.jetbrains.kotlin.descriptors.CallableDescriptor 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 import org.jetbrains.kotlin.storage.StorageManager
abstract class AbstractContractProvider : ContractProvider { 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.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered 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.KotlinType
import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.TypeConstructor
import org.jetbrains.kotlin.types.TypeConstructorSubstitution import org.jetbrains.kotlin.types.TypeConstructorSubstitution
import org.jetbrains.kotlin.types.TypeSubstitutor 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.ClassicTypeCheckerContext
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker
import org.jetbrains.kotlin.types.typeUtil.asTypeProjection import org.jetbrains.kotlin.types.typeUtil.asTypeProjection
import org.jetbrains.kotlin.utils.SmartList import org.jetbrains.kotlin.utils.SmartList
import org.jetbrains.kotlin.utils.keysToMap 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. // TODO: Klibs still need to better handle source in deserialized descriptors.
val DeclarationDescriptorWithSource.couldHaveASource: Boolean get() = val DeclarationDescriptorWithSource.couldHaveASource: Boolean get() =
this.source.containingFile != SourceFile.NO_SOURCE_FILE || this.source.containingFile != SourceFile.NO_SOURCE_FILE ||
this is DeserializedMemberDescriptor || this is DeserializedDescriptor
this is DeserializedClassDescriptor
+1
View File
@@ -5,6 +5,7 @@ plugins {
dependencies { dependencies {
compile(project(":compiler:resolution")) compile(project(":compiler:resolution"))
compile(project(":core:deserialization"))
} }
sourceSets { 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 package org.jetbrains.kotlin.serialization.deserialization
import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.ContractProvider
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.TypeTable import org.jetbrains.kotlin.metadata.deserialization.TypeTable
@@ -40,5 +41,3 @@ interface ContractDeserializer {
} }
} }
} }
interface ContractProvider
@@ -41,7 +41,7 @@ class DeserializedClassDescriptor(
) : AbstractClassDescriptor( ) : AbstractClassDescriptor(
outerContext.storageManager, outerContext.storageManager,
nameResolver.getClassId(classProto.fqName).shortClassName nameResolver.getClassId(classProto.fqName).shortClassName
) { ), DeserializedDescriptor {
private val classId = nameResolver.getClassId(classProto.fqName) private val classId = nameResolver.getClassId(classProto.fqName)
private val modality = ProtoEnumFlags.modality(Flags.MODALITY.get(classProto.flags)) private val modality = ProtoEnumFlags.modality(Flags.MODALITY.get(classProto.flags))
@@ -20,7 +20,7 @@ interface DescriptorWithContainerSource : MemberDescriptor {
val containerSource: DeserializedContainerSource? val containerSource: DeserializedContainerSource?
} }
interface DeserializedMemberDescriptor : MemberDescriptor, DescriptorWithContainerSource { interface DeserializedMemberDescriptor : DeserializedDescriptor, MemberDescriptor, DescriptorWithContainerSource {
val proto: MessageLite val proto: MessageLite
val nameResolver: NameResolver val nameResolver: NameResolver