[Analysis API Standalone] do not add non-supported file types to KtSourceModule

^KT-60884
This commit is contained in:
Ilya Kirillov
2023-09-04 12:47:53 +02:00
committed by Space Team
parent c76f365efb
commit f7352585f4
2 changed files with 15 additions and 10 deletions
@@ -11,6 +11,7 @@ import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
import org.jetbrains.kotlin.analysis.project.structure.impl.KtSourceModuleImpl
import org.jetbrains.kotlin.analysis.project.structure.impl.collectSourceFilePaths
import org.jetbrains.kotlin.analysis.project.structure.impl.hasSuitableExtensionToAnalyse
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
import org.jetbrains.kotlin.config.ApiVersion
import org.jetbrains.kotlin.config.LanguageVersion
@@ -62,10 +63,10 @@ public class KtSourceModuleBuilder(
val localFileSystem = kotlinCoreProjectEnvironment.environment.localFileSystem
return buildList {
for (root in sourceRoots) {
val files = if (root.isDirectory()) {
collectSourceFilePaths(root)
} else {
listOf(root)
val files = when {
root.isDirectory() -> collectSourceFilePaths(root)
root.hasSuitableExtensionToAnalyse() -> listOf(root)
else -> emptyList()
}
for (file in files) {
val virtualFile = localFileSystem.findFileByIoFile(file.toFile()) ?: continue
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.analysis.project.structure.impl
import com.google.common.io.Files.getFileExtension
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.psi.PsiFileSystemItem
import com.intellij.psi.PsiManager
@@ -37,6 +36,7 @@ import org.jetbrains.kotlin.wasm.resolve.WasmJsPlatformAnalyzerServices
import java.io.IOException
import java.nio.file.*
import java.nio.file.attribute.BasicFileAttributes
import kotlin.io.path.extension
internal fun TargetPlatform.getAnalyzerServices(): PlatformDependentAnalyzerServices {
return when {
@@ -101,11 +101,7 @@ internal fun collectSourceFilePaths(root: Path): List<Path> {
override fun visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult {
if (!Files.isRegularFile(file) || !Files.isReadable(file))
return FileVisitResult.CONTINUE
val ext = getFileExtension(file.fileName.toString())
if (ext == KotlinFileType.EXTENSION ||
ext == KotlinParserDefinition.STD_SCRIPT_SUFFIX ||
ext == JavaFileType.DEFAULT_EXTENSION
) {
if (file.hasSuitableExtensionToAnalyse()) {
result.add(file)
}
return FileVisitResult.CONTINUE
@@ -123,6 +119,14 @@ internal fun collectSourceFilePaths(root: Path): List<Path> {
return result
}
internal fun Path.hasSuitableExtensionToAnalyse(): Boolean {
val extension = extension
return extension == KotlinFileType.EXTENSION ||
extension == KotlinParserDefinition.STD_SCRIPT_SUFFIX ||
extension == JavaFileType.DEFAULT_EXTENSION
}
internal inline fun <reified T : PsiFileSystemItem> getPsiFilesFromPaths(
kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment,
paths: Collection<Path>,