From 92534eadaa0487ea24be4422f6f3809df0f8c428 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Sun, 15 Mar 2020 18:30:18 +0100 Subject: [PATCH] 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. --- compiler/resolution/build.gradle.kts | 2 +- .../kotlin/contracts/description/LazyContractProvider.kt | 2 +- .../resolve/multiplatform/ExpectedActualResolver.kt | 7 ++----- compiler/serialization/build.gradle.kts | 1 + .../org/jetbrains/kotlin/descriptors/ContractProvider.kt | 8 ++++++++ .../kotlin/descriptors/DeserializedDescriptor.kt | 8 ++++++++ .../serialization/deserialization/ContractDeserializer.kt | 3 +-- .../descriptors/DeserializedClassDescriptor.kt | 2 +- .../descriptors/DeserializedMemberDescriptor.kt | 2 +- 9 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 core/descriptors/src/org/jetbrains/kotlin/descriptors/ContractProvider.kt create mode 100644 core/descriptors/src/org/jetbrains/kotlin/descriptors/DeserializedDescriptor.kt diff --git a/compiler/resolution/build.gradle.kts b/compiler/resolution/build.gradle.kts index 18b5a685ac4..9be7664bdbb 100644 --- a/compiler/resolution/build.gradle.kts +++ b/compiler/resolution/build.gradle.kts @@ -5,7 +5,7 @@ plugins { dependencies { compile(project(":compiler:util")) - compile(project(":core:deserialization")) + compile(project(":core:descriptors")) compileOnly(intellijDep()) { includeJars("trove4j") } } diff --git a/compiler/resolution/src/org/jetbrains/kotlin/contracts/description/LazyContractProvider.kt b/compiler/resolution/src/org/jetbrains/kotlin/contracts/description/LazyContractProvider.kt index 95b81226c0e..873d0a7bf95 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/contracts/description/LazyContractProvider.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/contracts/description/LazyContractProvider.kt @@ -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 { diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt index 3367db01c67..c1f027bc7ac 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/ExpectedActualResolver.kt @@ -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 \ No newline at end of file + this is DeserializedDescriptor diff --git a/compiler/serialization/build.gradle.kts b/compiler/serialization/build.gradle.kts index f3abf619e15..6fdbea9e069 100644 --- a/compiler/serialization/build.gradle.kts +++ b/compiler/serialization/build.gradle.kts @@ -5,6 +5,7 @@ plugins { dependencies { compile(project(":compiler:resolution")) + compile(project(":core:deserialization")) } sourceSets { diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ContractProvider.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ContractProvider.kt new file mode 100644 index 00000000000..8a891f9e6dc --- /dev/null +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ContractProvider.kt @@ -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 diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/DeserializedDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/DeserializedDescriptor.kt new file mode 100644 index 00000000000..cfff301fe0a --- /dev/null +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/DeserializedDescriptor.kt @@ -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 diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ContractDeserializer.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ContractDeserializer.kt index b293c54e81b..3af04148217 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ContractDeserializer.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/ContractDeserializer.kt @@ -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 diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt index 8ba55196805..2ffdbee5e11 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt @@ -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)) diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt index dffde946018..f8b918ec68e 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt @@ -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