Skip to content

Commit

Permalink
KSP2: Include all subdirectories in content scope.
Browse files Browse the repository at this point in the history
  • Loading branch information
ting-yuan committed Sep 12, 2024
1 parent 5eea483 commit e01e431
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ import org.jetbrains.kotlin.analysis.project.structure.builder.KtModuleBuilder
import org.jetbrains.kotlin.analysis.project.structure.builder.KtModuleBuilderDsl
import org.jetbrains.kotlin.analysis.project.structure.builder.KtModuleProviderBuilder
import org.jetbrains.kotlin.analysis.project.structure.impl.KaSourceModuleImpl
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
Expand All @@ -39,7 +37,6 @@ import java.nio.file.Path
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract
import kotlin.io.path.isDirectory

@KtModuleBuilderDsl
class KspModuleBuilder(
Expand Down Expand Up @@ -77,17 +74,17 @@ class KspModuleBuilder(
)
}

val analyzableExtensions = setOf("kt", "java", "kts")

private fun collectVirtualFilesByRoots(): Set<VirtualFile> {
val localFileSystem = kotlinCoreProjectEnvironment.environment.localFileSystem
return buildSet {
for (root in sourceRoots) {
val files = when {
root.isDirectory() -> listOf(root) + collectSourceFilePaths(root)
root.hasSuitableExtensionToAnalyse() -> listOf(root)
else -> emptyList()
val files = root.toFile().walk().filter {
it.isDirectory || it.extension.lowercase() in analyzableExtensions
}
for (file in files) {
val virtualFile = localFileSystem.findFileByIoFile(file.toFile()) ?: continue
val virtualFile = localFileSystem.findFileByIoFile(file) ?: continue
add(virtualFile)
}
}
Expand Down
11 changes: 11 additions & 0 deletions kotlin-analysis-api/testData/getPackage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
// test.TestJava JAVA
// symbols from package testlib
// testlib.TestJavaLib JAVA_LIB
// symbols from package main.nested
// main.nested.MainAnotherJavaClass JAVA
// END

// MODULE: lib1
Expand Down Expand Up @@ -114,3 +116,12 @@ public class L {
// FILE: test/Test.java
package test;
class TestJava {}

// FILE: main/nested/MainAnotherJavaClass.java
package main.nested;
public class MainAnotherJavaClass {
public MainNestedJavaClass() {}
private String javaFieldInMain;
private void javaMethodInMain() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class GetPackageProcessor : AbstractTestProcessor() {
addPackage("non.exist", resolver)
addPackage("test", resolver)
addPackage("testlib", resolver)
addPackage("main.nested", resolver)
return emptyList()
}

Expand Down
11 changes: 11 additions & 0 deletions test-utils/testData/api/getPackage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
// test.TestJava JAVA
// symbols from package testlib
// testlib.TestJavaLib JAVA_LIB
// symbols from package main.nested
// main.nested.MainAnotherJavaClass JAVA
// END

// MODULE: lib1
Expand Down Expand Up @@ -113,3 +115,12 @@ public class L {
// FILE: test/Test.java
package test;
class TestJava {}

// FILE: main/nested/MainAnotherJavaClass.java
package main.nested;
public class MainAnotherJavaClass {
public MainNestedJavaClass() {}
private String javaFieldInMain;
private void javaMethodInMain() {
}
}

0 comments on commit e01e431

Please sign in to comment.