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:
@@ -775,7 +775,7 @@
|
||||
|
||||
<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"/>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
import com.intellij.facet.FacetConfiguration
|
||||
import com.intellij.facet.ui.FacetEditorContext
|
||||
import com.intellij.facet.ui.FacetEditorTab
|
||||
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.serializeFacetSettings
|
||||
|
||||
class KotlinFacetConfiguration : FacetConfiguration {
|
||||
var settings = KotlinFacetSettings()
|
||||
class KotlinFacetConfigurationImpl : KotlinFacetConfiguration {
|
||||
override var settings = KotlinFacetSettings()
|
||||
private set
|
||||
|
||||
@Suppress("OverridingDeprecatedMember")
|
||||
+2
-13
@@ -17,9 +17,6 @@
|
||||
package org.jetbrains.kotlin.idea.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.openapi.module.JavaModuleType
|
||||
import com.intellij.openapi.module.Module
|
||||
@@ -28,21 +25,13 @@ import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||
import javax.swing.Icon
|
||||
|
||||
class KotlinFacetType : FacetType<KotlinFacet, KotlinFacetConfiguration>(TYPE_ID, ID, NAME) {
|
||||
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
|
||||
}
|
||||
class KotlinFacetTypeImpl : KotlinFacetType<KotlinFacetConfiguration>() {
|
||||
|
||||
override fun isSuitableModuleType(moduleType: ModuleType<*>) = moduleType is JavaModuleType
|
||||
|
||||
override fun getIcon(): Icon = KotlinIcons.SMALL_LOGO
|
||||
|
||||
override fun createDefaultConfiguration() = KotlinFacetConfiguration()
|
||||
override fun createDefaultConfiguration() = KotlinFacetConfigurationImpl()
|
||||
|
||||
override fun createFacet(
|
||||
module: Module,
|
||||
@@ -123,12 +123,6 @@ val mavenLibraryIdToPlatform: Map<String, TargetPlatformKind<*>> by lazy {
|
||||
.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> {
|
||||
return modelsProvider.modules.filter { module ->
|
||||
module.findImplementedModuleName(modelsProvider) == name
|
||||
@@ -144,11 +138,11 @@ val Module.implementingModules: List<Module>
|
||||
})
|
||||
|
||||
private fun Module.getModuleInfo(baseModuleSourceInfo: ModuleSourceInfo): ModuleSourceInfo? =
|
||||
when (baseModuleSourceInfo) {
|
||||
is ModuleProductionSourceInfo -> productionSourceInfo()
|
||||
is ModuleTestSourceInfo -> testSourceInfo()
|
||||
else -> null
|
||||
}
|
||||
when (baseModuleSourceInfo) {
|
||||
is ModuleProductionSourceInfo -> productionSourceInfo()
|
||||
is ModuleTestSourceInfo -> testSourceInfo()
|
||||
else -> null
|
||||
}
|
||||
|
||||
private fun Module.findImplementingModuleInfos(moduleSourceInfo: ModuleSourceInfo): List<ModuleSourceInfo> {
|
||||
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
||||
@@ -176,14 +170,11 @@ val ModuleDescriptor.implementingDescriptors: List<ModuleDescriptor>
|
||||
val ModuleDescriptor.implementedDescriptor: ModuleDescriptor?
|
||||
get() {
|
||||
val moduleSourceInfo = getCapability(ModuleInfo.Capability) as? ModuleSourceInfo ?: return null
|
||||
val module = moduleSourceInfo.module
|
||||
|
||||
val modelsProvider = IdeModifiableModelsProviderImpl(module.project)
|
||||
val implementedModuleName = module.findImplementedModuleName(modelsProvider)
|
||||
val implementedModule = implementedModuleName?.let { modelsProvider.findIdeModule(it) }
|
||||
val implementedModuleInfo = implementedModule?.getModuleInfo(moduleSourceInfo)
|
||||
val implementedModuleInfo = moduleSourceInfo.expectedBy
|
||||
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