From 9bed2e974b7c6bc8c4b57f594a1bf4f92a839520 Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Wed, 28 Feb 2024 21:07:57 +0100 Subject: [PATCH] [AA] Add `KotlinModuleDependentsProvider.getRefinementDependents` - When calculating sealed inheritors for expect classes, we need to expand the search scope to modules with a depends-on/refinement dependency on the module containing the expect class, as these modules may contain additional sealed inheritors. `getRefinementDependents` allows us to get these refinement dependents to build the proper search scope. ^KT-66013 --- .../project/structure/KotlinModuleDependentsProvider.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KotlinModuleDependentsProvider.kt b/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KotlinModuleDependentsProvider.kt index b3f44717463..abdc934127d 100644 --- a/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KotlinModuleDependentsProvider.kt +++ b/analysis/project-structure/src/org/jetbrains/kotlin/analysis/project/structure/KotlinModuleDependentsProvider.kt @@ -32,6 +32,12 @@ public abstract class KotlinModuleDependentsProvider { */ public abstract fun getTransitiveDependents(module: KtModule): Set + /** + * Returns all refinement/depends-on dependents of [module], excluding [module] itself. The result is transitive because refinement + * dependencies are implicitly transitive. + */ + public abstract fun getRefinementDependents(module: KtModule): Set + public companion object { public fun getInstance(project: Project): KotlinModuleDependentsProvider = project.getService(KotlinModuleDependentsProvider::class.java)