Skip to content

Report java sources to KSP #103

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ksp/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
buildscript {
ext.ksp_version='1.4.20-dev-experimental-20210107'
ext.ksp_version='1.4.20-dev-experimental-20210111'
}

dependencies {
Expand Down
8 changes: 8 additions & 0 deletions ksp/src/main/kotlin/com/tschuchort/compiletesting/Ksp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ import com.google.devtools.ksp.KspOptions
import com.google.devtools.ksp.processing.KSPLogger
import com.google.devtools.ksp.processing.SymbolProcessor
import com.google.devtools.ksp.processing.impl.MessageCollectorBasedKSPLogger
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot
import org.jetbrains.kotlin.com.intellij.mock.MockProject
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
import org.jetbrains.kotlin.config.CompilerConfiguration
Expand Down Expand Up @@ -159,6 +161,12 @@ private class KspCompileTestingComponentRegistrar(
it.deleteRecursively()
it.mkdirs()
}
configuration[CLIConfigurationKeys.CONTENT_ROOTS]
?.filterIsInstance<JavaSourceRoot>()
?.forEach {
this.javaSourceRoots.add(it.file)
}

}.build()

// Temporary until friend-paths is fully supported https://youtrack.jetbrains.com/issue/KT-34102
Expand Down
37 changes: 37 additions & 0 deletions ksp/src/test/kotlin/com/tschuchort/compiletesting/KspTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,43 @@ class KspTest {
)
}

@Test
fun findSymbols() {
val javaSource = SourceFile.java(
"JavaSubject.java",
"""
@${SuppressWarnings::class.qualifiedName}("")
class JavaSubject {}
""".trimIndent()
)
val kotlinSource = SourceFile.kotlin(
"KotlinSubject.kt",
"""
@${SuppressWarnings::class.qualifiedName}("")
class KotlinSubject {}
""".trimIndent()
)
val result = mutableListOf<String>()
val processor = object : AbstractTestSymbolProcessor() {
override fun process(resolver: Resolver) {
resolver.getSymbolsWithAnnotation(
SuppressWarnings::class.java.canonicalName
).filterIsInstance<KSClassDeclaration>()
.forEach {
result.add(it.qualifiedName!!.asString())
}
}
}
val compilation = KotlinCompilation().apply {
sources = listOf(javaSource, kotlinSource)
symbolProcessors += processor
}
compilation.compile()
assertThat(result).containsExactlyInAnyOrder(
"JavaSubject", "KotlinSubject"
)
}

internal open class ClassGeneratingProcessor(
private val packageName: String,
private val className: String
Expand Down