https://kotlinlang.org logo
Title
z

Zac Sweers

01/06/2022, 7:59 PM
Does KSP effectively block other analysishandlerextension plugins from running in its KspTask?
> Task :lib.bookmarks:kspReleaseKotlin FAILED
e: java.lang.RuntimeException: Duplicate registration for EP 'org.jetbrains.kotlin.com.intellij.psi.treeChangeListener': first in FakeIdForTests, second in FakeIdForTests
        at org.jetbrains.kotlin.com.intellij.openapi.components.ComponentManager.createError(ComponentManager.java:167)
        at org.jetbrains.kotlin.com.intellij.openapi.extensions.impl.ExtensionsAreaImpl.checkThatPointNotDuplicated(ExtensionsAreaImpl.java:235)
        at org.jetbrains.kotlin.com.intellij.openapi.extensions.impl.ExtensionsAreaImpl.registerExtensionPoint(ExtensionsAreaImpl.java:240)
        at org.jetbrains.kotlin.com.intellij.openapi.extensions.impl.ExtensionsAreaImpl.doRegisterExtensionPoint(ExtensionsAreaImpl.java:210)
        at org.jetbrains.kotlin.com.intellij.openapi.extensions.impl.ExtensionsAreaImpl.doRegisterExtensionPoint(ExtensionsAreaImpl.java:189)
        at org.jetbrains.kotlin.com.intellij.openapi.extensions.impl.ExtensionsAreaImpl.doRegisterExtensionPoint(ExtensionsAreaImpl.java:183)
        at org.jetbrains.kotlin.com.intellij.openapi.extensions.impl.ExtensionsAreaImpl.registerExtensionPoint(ExtensionsAreaImpl.java:160)
        at dev.zacsweers.moshix.ir.compiler.proguardgen.ProguardRuleGenerationExtension.doAnalysis(ProguardRuleGenerationExtension.kt:59)
t

Ting-Yuan Huang

01/06/2022, 9:05 PM
Kind of. The compiler only allows one (first) analysis handler to return non-null AnalysisResult. KSP use it to request early return, i.e., skip compiler backend in this task.