Drop ModuleDescriptor.sourceKind, move this code to IDE modules

This information is only used in IDE and it can easily be computed there
This commit is contained in:
Alexander Udalov
2017-04-11 17:37:22 +03:00
parent aaeb53fb8b
commit f594a4c018
8 changed files with 34 additions and 59 deletions
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.analyzer.ResolverForProject
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.context.GlobalContextImpl
import org.jetbrains.kotlin.context.withProject
import org.jetbrains.kotlin.descriptors.SourceKind
import org.jetbrains.kotlin.idea.project.AnalyzerFacadeProvider
import org.jetbrains.kotlin.idea.project.IdeaEnvironment
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
@@ -87,15 +86,7 @@ fun createModuleResolverProvider(
modulePlatforms = { moduleInfo ->
val module = (moduleInfo as? ModuleSourceInfo)?.module
module?.let { TargetPlatformDetector.getPlatform(module).multiTargetPlatform }
},
moduleSources = { moduleInfo ->
when (moduleInfo) {
is ModuleProductionSourceInfo -> SourceKind.PRODUCTION
is ModuleTestSourceInfo -> SourceKind.TEST
else -> SourceKind.NONE
}
}
)
}
@@ -17,7 +17,10 @@
package org.jetbrains.kotlin.idea.highlighter.markers
import com.intellij.psi.NavigatablePsiElement
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.caches.resolve.ModuleProductionSourceInfo
import org.jetbrains.kotlin.idea.caches.resolve.ModuleTestSourceInfo
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
import org.jetbrains.kotlin.idea.core.toDescriptor
import org.jetbrains.kotlin.psi.KtDeclaration
@@ -26,9 +29,21 @@ import org.jetbrains.kotlin.resolve.MultiTargetPlatform
import org.jetbrains.kotlin.resolve.checkers.HeaderImplDeclarationChecker
import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
fun ModuleDescriptor.commonModuleOrNull() = allDependencyModules.filter {
it.getMultiTargetPlatform() == MultiTargetPlatform.Common && it.sourceKind == sourceKind
}.firstOrNull()
fun ModuleDescriptor.commonModuleOrNull(): ModuleDescriptor? {
val sourceKind = sourceKind
return allDependencyModules.firstOrNull { dependency ->
dependency.getMultiTargetPlatform() == MultiTargetPlatform.Common && dependency.sourceKind == sourceKind
}
}
private val ModuleDescriptor.sourceKind: SourceKind
get() = when (getCapability(ModuleInfo.Capability)) {
is ModuleProductionSourceInfo -> SourceKind.PRODUCTION
is ModuleTestSourceInfo -> SourceKind.TEST
else -> SourceKind.NONE
}
private enum class SourceKind { NONE, PRODUCTION, TEST }
fun ModuleDescriptor.hasDeclarationOf(descriptor: MemberDescriptor) = declarationOf(descriptor) != null