diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt index 9234300bb58..6c8339e502d 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KtSourceModuleBuilder.kt @@ -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 diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt index 64ea9e46018..48a21aa00c7 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KtModuleUtils.kt @@ -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 { 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 { 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 getPsiFilesFromPaths( kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment, paths: Collection,