IDE facet refactoring, ModuleInfo.expectedBy introduced.
Part of facet classes was extracted to idea-analysis module Related to KT-21771
This commit is contained in:
@@ -236,6 +236,7 @@ interface ModuleInfo {
|
|||||||
val name: Name
|
val name: Name
|
||||||
val displayedName: String get() = name.asString()
|
val displayedName: String get() = name.asString()
|
||||||
fun dependencies(): List<ModuleInfo>
|
fun dependencies(): List<ModuleInfo>
|
||||||
|
val expectedBy: ModuleInfo? get() = null
|
||||||
val platform: TargetPlatform? get() = null
|
val platform: TargetPlatform? get() = null
|
||||||
fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = listOf()
|
fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = listOf()
|
||||||
val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>
|
val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>
|
||||||
|
|||||||
+44
-14
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.caches.resolve
|
package org.jetbrains.kotlin.idea.caches.resolve
|
||||||
|
|
||||||
|
import com.intellij.facet.*
|
||||||
|
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
|
||||||
|
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.module.impl.scopes.LibraryScopeBase
|
import com.intellij.openapi.module.impl.scopes.LibraryScopeBase
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
@@ -27,6 +30,8 @@ import org.jetbrains.kotlin.caches.resolve.LibraryModuleInfo
|
|||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.idea.configuration.BuildSystemType
|
import org.jetbrains.kotlin.idea.configuration.BuildSystemType
|
||||||
import org.jetbrains.kotlin.idea.configuration.getBuildSystemType
|
import org.jetbrains.kotlin.idea.configuration.getBuildSystemType
|
||||||
|
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
||||||
|
import org.jetbrains.kotlin.idea.facet.KotlinFacetType.Companion.ID
|
||||||
import org.jetbrains.kotlin.idea.framework.getLibraryPlatform
|
import org.jetbrains.kotlin.idea.framework.getLibraryPlatform
|
||||||
import org.jetbrains.kotlin.idea.project.KotlinModuleModificationTracker
|
import org.jetbrains.kotlin.idea.project.KotlinModuleModificationTracker
|
||||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||||
@@ -110,9 +115,25 @@ private fun ideaModelDependencies(module: Module, forProduction: Boolean): List<
|
|||||||
return result.toList()
|
return result.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Module.findImplementedModuleName(modelsProvider: IdeModifiableModelsProvider): String? {
|
||||||
|
val facetModel = modelsProvider.getModifiableFacetModel(this)
|
||||||
|
val facet = facetModel.findFacet(
|
||||||
|
KotlinFacetType.TYPE_ID,
|
||||||
|
FacetTypeRegistry.getInstance().findFacetType(ID)!!.defaultFacetName
|
||||||
|
)
|
||||||
|
return facet?.configuration?.settings?.implementedModuleName
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Module.findImplementedModule(modelsProvider: IdeModifiableModelsProvider): Module? {
|
||||||
|
val implementedModuleName = findImplementedModuleName(modelsProvider)
|
||||||
|
return implementedModuleName?.let { modelsProvider.findIdeModule(it) }
|
||||||
|
}
|
||||||
|
|
||||||
interface ModuleSourceInfo : IdeaModuleInfo, TrackableModuleInfo {
|
interface ModuleSourceInfo : IdeaModuleInfo, TrackableModuleInfo {
|
||||||
val module: Module
|
val module: Module
|
||||||
|
|
||||||
|
override val expectedBy: ModuleSourceInfo?
|
||||||
|
|
||||||
override val displayedName get() = module.name
|
override val displayedName get() = module.name
|
||||||
|
|
||||||
override val moduleOrigin: ModuleOrigin
|
override val moduleOrigin: ModuleOrigin
|
||||||
@@ -125,32 +146,41 @@ interface ModuleSourceInfo : IdeaModuleInfo, TrackableModuleInfo {
|
|||||||
KotlinModuleModificationTracker(module)
|
KotlinModuleModificationTracker(module)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ModuleProductionSourceInfo internal constructor(override val module: Module) : ModuleSourceInfo {
|
sealed class ModuleSourceInfoWithExpectedBy(private val forProduction: Boolean) : ModuleSourceInfo {
|
||||||
override val name = Name.special("<production sources for module ${module.name}>")
|
override val expectedBy: ModuleSourceInfo?
|
||||||
|
get() {
|
||||||
|
val modelsProvider = IdeModifiableModelsProviderImpl(module.project)
|
||||||
|
val expectedByModule = module.findImplementedModule(modelsProvider)
|
||||||
|
return if (forProduction) expectedByModule?.productionSourceInfo() else expectedByModule?.testSourceInfo()
|
||||||
|
}
|
||||||
|
|
||||||
override fun contentScope(): GlobalSearchScope = ModuleProductionSourceScope(module)
|
override fun dependencies(): List<IdeaModuleInfo> = module.cached(CachedValueProvider {
|
||||||
|
|
||||||
override fun dependencies() = module.cached(CachedValueProvider {
|
|
||||||
CachedValueProvider.Result(
|
CachedValueProvider.Result(
|
||||||
ideaModelDependencies(module, forProduction = true),
|
ideaModelDependencies(module, forProduction),
|
||||||
ProjectRootModificationTracker.getInstance(module.project))
|
ProjectRootModificationTracker.getInstance(module.project))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class ModuleProductionSourceInfo internal constructor(
|
||||||
|
override val module: Module
|
||||||
|
) : ModuleSourceInfoWithExpectedBy(forProduction = true) {
|
||||||
|
|
||||||
|
override val name = Name.special("<production sources for module ${module.name}>")
|
||||||
|
|
||||||
|
override fun contentScope(): GlobalSearchScope = ModuleProductionSourceScope(module)
|
||||||
|
}
|
||||||
|
|
||||||
//TODO: (module refactoring) do not create ModuleTestSourceInfo when there are no test roots for module
|
//TODO: (module refactoring) do not create ModuleTestSourceInfo when there are no test roots for module
|
||||||
data class ModuleTestSourceInfo internal constructor(override val module: Module) : ModuleSourceInfo {
|
data class ModuleTestSourceInfo internal constructor(
|
||||||
|
override val module: Module
|
||||||
|
) : ModuleSourceInfoWithExpectedBy(forProduction = false) {
|
||||||
|
|
||||||
override val name = Name.special("<test sources for module ${module.name}>")
|
override val name = Name.special("<test sources for module ${module.name}>")
|
||||||
|
|
||||||
override val displayedName get() = module.name + " (test)"
|
override val displayedName get() = module.name + " (test)"
|
||||||
|
|
||||||
override fun contentScope(): GlobalSearchScope = ModuleTestSourceScope(module)
|
override fun contentScope(): GlobalSearchScope = ModuleTestSourceScope(module)
|
||||||
|
|
||||||
override fun dependencies() = module.cached(CachedValueProvider {
|
|
||||||
CachedValueProvider.Result(
|
|
||||||
ideaModelDependencies(module, forProduction = false),
|
|
||||||
ProjectRootModificationTracker.getInstance(module.project))
|
|
||||||
})
|
|
||||||
|
|
||||||
override fun modulesWhoseInternalsAreVisible() = module.cached(CachedValueProvider {
|
override fun modulesWhoseInternalsAreVisible() = module.cached(CachedValueProvider {
|
||||||
val list = SmartList<ModuleInfo>()
|
val list = SmartList<ModuleInfo>()
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2000-2018 JetBrains s.r.o. 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.idea.facet
|
||||||
|
|
||||||
|
import com.intellij.facet.Facet
|
||||||
|
import com.intellij.facet.FacetManager
|
||||||
|
import com.intellij.facet.FacetTypeRegistry
|
||||||
|
import com.intellij.openapi.module.Module
|
||||||
|
|
||||||
|
class KotlinFacet(
|
||||||
|
module: Module,
|
||||||
|
name: String,
|
||||||
|
configuration: KotlinFacetConfiguration
|
||||||
|
) : Facet<KotlinFacetConfiguration>(KotlinFacetType.INSTANCE, module, name, configuration, null) {
|
||||||
|
companion object {
|
||||||
|
fun get(module: Module): KotlinFacet? {
|
||||||
|
if (module.isDisposed) return null
|
||||||
|
return FacetManager.getInstance(module).getFacetByType<KotlinFacet>(KotlinFacetType.TYPE_ID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2000-2018 JetBrains s.r.o. 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.idea.facet
|
||||||
|
|
||||||
|
import com.intellij.facet.FacetConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.KotlinFacetSettings
|
||||||
|
|
||||||
|
interface KotlinFacetConfiguration : FacetConfiguration {
|
||||||
|
val settings: KotlinFacetSettings
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2000-2018 JetBrains s.r.o. 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.idea.facet
|
||||||
|
|
||||||
|
import com.intellij.facet.FacetType
|
||||||
|
import com.intellij.facet.FacetTypeId
|
||||||
|
import com.intellij.facet.FacetTypeRegistry
|
||||||
|
import com.intellij.openapi.module.JavaModuleType
|
||||||
|
import com.intellij.openapi.module.ModuleType
|
||||||
|
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||||
|
import javax.swing.Icon
|
||||||
|
|
||||||
|
abstract class KotlinFacetType<C : KotlinFacetConfiguration> :
|
||||||
|
FacetType<KotlinFacet, C>(TYPE_ID, ID, NAME) {
|
||||||
|
companion object {
|
||||||
|
const val ID = "kotlin-language"
|
||||||
|
val TYPE_ID = FacetTypeId<KotlinFacet>(ID)
|
||||||
|
const val NAME = "Kotlin"
|
||||||
|
|
||||||
|
val INSTANCE
|
||||||
|
get() = FacetTypeRegistry.getInstance().findFacetType(TYPE_ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun isSuitableModuleType(moduleType: ModuleType<*>) = moduleType is JavaModuleType
|
||||||
|
|
||||||
|
override fun getIcon(): Icon = KotlinIcons.SMALL_LOGO
|
||||||
|
}
|
||||||
+4
-7
@@ -22,16 +22,13 @@ import com.intellij.openapi.roots.ContentEntry
|
|||||||
import com.intellij.openapi.roots.ModifiableRootModel
|
import com.intellij.openapi.roots.ModifiableRootModel
|
||||||
import org.jetbrains.kotlin.config.CompilerSettings
|
import org.jetbrains.kotlin.config.CompilerSettings
|
||||||
import org.jetbrains.kotlin.config.LanguageVersion
|
import org.jetbrains.kotlin.config.LanguageVersion
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
import org.jetbrains.kotlin.idea.facet.*
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetConfiguration
|
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
|
||||||
import org.jetbrains.kotlin.idea.facet.initializeIfNeeded
|
|
||||||
import org.jetbrains.kotlin.test.testFramework.runInEdtAndWait
|
import org.jetbrains.kotlin.test.testFramework.runInEdtAndWait
|
||||||
import org.jetbrains.kotlin.test.testFramework.runWriteAction
|
import org.jetbrains.kotlin.test.testFramework.runWriteAction
|
||||||
|
|
||||||
class KotlinProjectDescriptorWithFacet(
|
class KotlinProjectDescriptorWithFacet(
|
||||||
private val languageVersion: LanguageVersion,
|
private val languageVersion: LanguageVersion,
|
||||||
private val multiPlatform: Boolean = false
|
private val multiPlatform: Boolean = false
|
||||||
) : KotlinLightProjectDescriptor() {
|
) : KotlinLightProjectDescriptor() {
|
||||||
override fun configureModule(module: Module, model: ModifiableRootModel, contentEntry: ContentEntry) {
|
override fun configureModule(module: Module, model: ModifiableRootModel, contentEntry: ContentEntry) {
|
||||||
configureKotlinFacet(module) {
|
configureKotlinFacet(module) {
|
||||||
@@ -54,7 +51,7 @@ class KotlinProjectDescriptorWithFacet(
|
|||||||
fun configureKotlinFacet(module: Module, configureCallback: KotlinFacetConfiguration.() -> Unit = {}): KotlinFacet {
|
fun configureKotlinFacet(module: Module, configureCallback: KotlinFacetConfiguration.() -> Unit = {}): KotlinFacet {
|
||||||
val facetManager = FacetManager.getInstance(module)
|
val facetManager = FacetManager.getInstance(module)
|
||||||
val facetModel = facetManager.createModifiableModel()
|
val facetModel = facetManager.createModifiableModel()
|
||||||
val configuration = KotlinFacetConfiguration()
|
val configuration = KotlinFacetConfigurationImpl()
|
||||||
configuration.settings.initializeIfNeeded(module, null)
|
configuration.settings.initializeIfNeeded(module, null)
|
||||||
configuration.settings.useProjectSettings = false
|
configuration.settings.useProjectSettings = false
|
||||||
configuration.configureCallback()
|
configuration.configureCallback()
|
||||||
|
|||||||
@@ -775,7 +775,7 @@
|
|||||||
|
|
||||||
<usageToPsiElementProvider implementation="org.jetbrains.kotlin.idea.codeInsight.KotlinUsageToPsiElementProvider"/>
|
<usageToPsiElementProvider implementation="org.jetbrains.kotlin.idea.codeInsight.KotlinUsageToPsiElementProvider"/>
|
||||||
|
|
||||||
<facetType implementation="org.jetbrains.kotlin.idea.facet.KotlinFacetType"/>
|
<facetType implementation="org.jetbrains.kotlin.idea.facet.KotlinFacetTypeImpl"/>
|
||||||
|
|
||||||
<lang.sliceProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.slicer.KotlinSliceProvider"/>
|
<lang.sliceProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.slicer.KotlinSliceProvider"/>
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.facet
|
|
||||||
|
|
||||||
import com.intellij.facet.Facet
|
|
||||||
import com.intellij.facet.FacetManager.getInstance
|
|
||||||
import com.intellij.openapi.module.Module
|
|
||||||
|
|
||||||
class KotlinFacet(
|
|
||||||
module: Module,
|
|
||||||
name: String,
|
|
||||||
configuration: KotlinFacetConfiguration
|
|
||||||
) : Facet<KotlinFacetConfiguration>(KotlinFacetType.INSTANCE, module, name, configuration, null) {
|
|
||||||
companion object {
|
|
||||||
fun get(module: Module): KotlinFacet? {
|
|
||||||
if (module.isDisposed) return null
|
|
||||||
return getInstance(module).getFacetByType<KotlinFacet>(KotlinFacetType.TYPE_ID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+2
-3
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.facet
|
package org.jetbrains.kotlin.idea.facet
|
||||||
|
|
||||||
import com.intellij.facet.FacetConfiguration
|
|
||||||
import com.intellij.facet.ui.FacetEditorContext
|
import com.intellij.facet.ui.FacetEditorContext
|
||||||
import com.intellij.facet.ui.FacetEditorTab
|
import com.intellij.facet.ui.FacetEditorTab
|
||||||
import com.intellij.facet.ui.FacetValidatorsManager
|
import com.intellij.facet.ui.FacetValidatorsManager
|
||||||
@@ -25,8 +24,8 @@ import org.jetbrains.kotlin.config.KotlinFacetSettings
|
|||||||
import org.jetbrains.kotlin.config.deserializeFacetSettings
|
import org.jetbrains.kotlin.config.deserializeFacetSettings
|
||||||
import org.jetbrains.kotlin.config.serializeFacetSettings
|
import org.jetbrains.kotlin.config.serializeFacetSettings
|
||||||
|
|
||||||
class KotlinFacetConfiguration : FacetConfiguration {
|
class KotlinFacetConfigurationImpl : KotlinFacetConfiguration {
|
||||||
var settings = KotlinFacetSettings()
|
override var settings = KotlinFacetSettings()
|
||||||
private set
|
private set
|
||||||
|
|
||||||
@Suppress("OverridingDeprecatedMember")
|
@Suppress("OverridingDeprecatedMember")
|
||||||
+2
-13
@@ -17,9 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.idea.facet
|
package org.jetbrains.kotlin.idea.facet
|
||||||
|
|
||||||
import com.intellij.facet.Facet
|
import com.intellij.facet.Facet
|
||||||
import com.intellij.facet.FacetType
|
|
||||||
import com.intellij.facet.FacetTypeId
|
|
||||||
import com.intellij.facet.FacetTypeRegistry
|
|
||||||
import com.intellij.facet.ui.FacetEditor
|
import com.intellij.facet.ui.FacetEditor
|
||||||
import com.intellij.openapi.module.JavaModuleType
|
import com.intellij.openapi.module.JavaModuleType
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
@@ -28,21 +25,13 @@ import com.intellij.openapi.project.Project
|
|||||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||||
import javax.swing.Icon
|
import javax.swing.Icon
|
||||||
|
|
||||||
class KotlinFacetType : FacetType<KotlinFacet, KotlinFacetConfiguration>(TYPE_ID, ID, NAME) {
|
class KotlinFacetTypeImpl : KotlinFacetType<KotlinFacetConfiguration>() {
|
||||||
companion object {
|
|
||||||
val TYPE_ID = FacetTypeId<KotlinFacet>("kotlin-language")
|
|
||||||
val ID = "kotlin-language"
|
|
||||||
val NAME = "Kotlin"
|
|
||||||
|
|
||||||
val INSTANCE: KotlinFacetType
|
|
||||||
get() = FacetTypeRegistry.getInstance().findFacetType(TYPE_ID) as KotlinFacetType
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isSuitableModuleType(moduleType: ModuleType<*>) = moduleType is JavaModuleType
|
override fun isSuitableModuleType(moduleType: ModuleType<*>) = moduleType is JavaModuleType
|
||||||
|
|
||||||
override fun getIcon(): Icon = KotlinIcons.SMALL_LOGO
|
override fun getIcon(): Icon = KotlinIcons.SMALL_LOGO
|
||||||
|
|
||||||
override fun createDefaultConfiguration() = KotlinFacetConfiguration()
|
override fun createDefaultConfiguration() = KotlinFacetConfigurationImpl()
|
||||||
|
|
||||||
override fun createFacet(
|
override fun createFacet(
|
||||||
module: Module,
|
module: Module,
|
||||||
@@ -123,12 +123,6 @@ val mavenLibraryIdToPlatform: Map<String, TargetPlatformKind<*>> by lazy {
|
|||||||
.toMap()
|
.toMap()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Module.findImplementedModuleName(modelsProvider: IdeModifiableModelsProvider): String? {
|
|
||||||
val facetModel = modelsProvider.getModifiableFacetModel(this)
|
|
||||||
val facet = facetModel.findFacet(KotlinFacetType.TYPE_ID, KotlinFacetType.INSTANCE.defaultFacetName)
|
|
||||||
return facet?.configuration?.settings?.implementedModuleName
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun Module.findImplementingModules(modelsProvider: IdeModifiableModelsProvider): List<Module> {
|
private fun Module.findImplementingModules(modelsProvider: IdeModifiableModelsProvider): List<Module> {
|
||||||
return modelsProvider.modules.filter { module ->
|
return modelsProvider.modules.filter { module ->
|
||||||
module.findImplementedModuleName(modelsProvider) == name
|
module.findImplementedModuleName(modelsProvider) == name
|
||||||
@@ -144,11 +138,11 @@ val Module.implementingModules: List<Module>
|
|||||||
})
|
})
|
||||||
|
|
||||||
private fun Module.getModuleInfo(baseModuleSourceInfo: ModuleSourceInfo): ModuleSourceInfo? =
|
private fun Module.getModuleInfo(baseModuleSourceInfo: ModuleSourceInfo): ModuleSourceInfo? =
|
||||||
when (baseModuleSourceInfo) {
|
when (baseModuleSourceInfo) {
|
||||||
is ModuleProductionSourceInfo -> productionSourceInfo()
|
is ModuleProductionSourceInfo -> productionSourceInfo()
|
||||||
is ModuleTestSourceInfo -> testSourceInfo()
|
is ModuleTestSourceInfo -> testSourceInfo()
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Module.findImplementingModuleInfos(moduleSourceInfo: ModuleSourceInfo): List<ModuleSourceInfo> {
|
private fun Module.findImplementingModuleInfos(moduleSourceInfo: ModuleSourceInfo): List<ModuleSourceInfo> {
|
||||||
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
||||||
@@ -176,14 +170,11 @@ val ModuleDescriptor.implementingDescriptors: List<ModuleDescriptor>
|
|||||||
val ModuleDescriptor.implementedDescriptor: ModuleDescriptor?
|
val ModuleDescriptor.implementedDescriptor: ModuleDescriptor?
|
||||||
get() {
|
get() {
|
||||||
val moduleSourceInfo = getCapability(ModuleInfo.Capability) as? ModuleSourceInfo ?: return null
|
val moduleSourceInfo = getCapability(ModuleInfo.Capability) as? ModuleSourceInfo ?: return null
|
||||||
val module = moduleSourceInfo.module
|
|
||||||
|
|
||||||
val modelsProvider = IdeModifiableModelsProviderImpl(module.project)
|
val implementedModuleInfo = moduleSourceInfo.expectedBy
|
||||||
val implementedModuleName = module.findImplementedModuleName(modelsProvider)
|
|
||||||
val implementedModule = implementedModuleName?.let { modelsProvider.findIdeModule(it) }
|
|
||||||
val implementedModuleInfo = implementedModule?.getModuleInfo(moduleSourceInfo)
|
|
||||||
return implementedModuleInfo?.let {
|
return implementedModuleInfo?.let {
|
||||||
KotlinCacheService.getInstance(module.project).getResolutionFacadeByModuleInfo(it, it.platform)?.moduleDescriptor
|
KotlinCacheService.getInstance(moduleSourceInfo.module.project)
|
||||||
|
.getResolutionFacadeByModuleInfo(it, it.platform)?.moduleDescriptor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user