Support pureKotlinSourceFolders for MPP projects

#KT-34271 Fixed
#KT-32963 Fixed
This commit is contained in:
Yaroslav Chernyshev
2020-07-03 16:40:25 +03:00
parent fde8a34c32
commit f490085142
6 changed files with 38 additions and 11 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.config.SourceKotlinRootType
import org.jetbrains.kotlin.config.TestSourceKotlinRootType
import org.jetbrains.kotlin.idea.caches.PerModulePackageCacheService
import org.jetbrains.kotlin.idea.core.util.toPsiDirectory
import org.jetbrains.kotlin.idea.facet.KotlinFacet
import org.jetbrains.kotlin.idea.roots.invalidateProjectRoots
import org.jetbrains.kotlin.idea.util.rootManager
import org.jetbrains.kotlin.idea.util.sourceRoot
@@ -95,6 +96,8 @@ private val kotlinSourceRootTypes: Set<JpsModuleSourceRootType<JavaSourceRootPro
private fun Module.getNonGeneratedKotlinSourceRoots(): List<VirtualFile> {
val result = mutableListOf<VirtualFile>()
val facetSettings = KotlinFacet.get(this)?.configuration?.settings
val rootManager = ModuleRootManager.getInstance(this)
for (contentEntry in rootManager.contentEntries) {
val sourceFolders = contentEntry.getSourceFolders(kotlinSourceRootTypes)
@@ -102,7 +105,13 @@ private fun Module.getNonGeneratedKotlinSourceRoots(): List<VirtualFile> {
if (sourceFolder.jpsElement.getProperties(kotlinSourceRootTypes)?.isForGeneratedSources == true) {
continue
}
result.addIfNotNull(sourceFolder.file)
facetSettings?.pureKotlinSourceFolders?.also { pureKotlin ->
sourceFolder.file?.also {
if (it.path in pureKotlin) {
result += it
}
}
} ?: result.addIfNotNull(sourceFolder.file)
}
}
return result