From 9ec1c5dc35203cf65c54e98771a5b2daabe3053b Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 9 Dec 2016 18:18:23 +0300 Subject: [PATCH] Infrastructure change: each header module now knows implementing modules list --- .../jetbrains/kotlin/descriptors/ModuleDescriptor.kt | 2 ++ .../kotlin/descriptors/impl/ModuleDescriptorImpl.kt | 8 ++++++++ .../src/org/jetbrains/kotlin/types/ErrorUtils.java | 11 +++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt index 3353fefc978..c5257d74fd5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt @@ -49,6 +49,8 @@ interface ModuleDescriptor : DeclarationDescriptor { */ val allDependentModules: List + val allImplementingModules: Set + fun getCapability(capability: Capability): T? class Capability(val name: String) { diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt index 71c49b802ea..6055ff92b63 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt @@ -52,6 +52,8 @@ class ModuleDescriptorImpl @JvmOverloads constructor( override val allDependentModules: List get() = this.dependencies.sure { "Dependencies of module $id were not set" }.allDependencies.filter { it != this } + override val allImplementingModules: MutableSet = mutableSetOf() + override fun getPackage(fqName: FqName): PackageViewDescriptor = packages(fqName) override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection { @@ -79,6 +81,12 @@ class ModuleDescriptorImpl @JvmOverloads constructor( fun setDependencies(dependencies: ModuleDependencies) { assert(this.dependencies == null) { "Dependencies of $id were already set" } this.dependencies = dependencies + if (platformKind == PlatformKind.DEFAULT) return + for (dependentModule in allDependentModules) { + if (dependentModule.platformKind != PlatformKind.DEFAULT) continue + if (dependentModule.sourceKind != sourceKind) continue + (dependentModule as? ModuleDescriptorImpl)?.allImplementingModules?.add(this) + } } fun setDependencies(vararg descriptors: ModuleDescriptorImpl) { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java index e086a4a7d13..ae9c35fb548 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java @@ -41,6 +41,7 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import static java.util.Collections.emptySet; import static kotlin.collections.CollectionsKt.emptyList; import static kotlin.collections.CollectionsKt.joinToString; @@ -97,6 +98,12 @@ public class ErrorUtils { return emptyList(); } + @NotNull + @Override + public Set getAllImplementingModules() { + return emptySet(); + } + @Override public R accept(@NotNull DeclarationDescriptorVisitor visitor, D data) { return null; @@ -205,13 +212,13 @@ public class ErrorUtils { @NotNull @Override public Set getFunctionNames() { - return Collections.emptySet(); + return emptySet(); } @NotNull @Override public Set getVariableNames() { - return Collections.emptySet(); + return emptySet(); } @NotNull