[KAPT] KT-65006 fix issues when using Kapt+Serialization
This MR fixes two independent issues causing build failures when using Kapt in combination with the Kotlin serialization plugin (and, very likely, with other plugins as well): Kapt applied compiler plugins twice, causing errors similar to the one described in KT-65006 Kapt failed to generate @Metadata annotations for plugin-generated companion objects because the corresponding SLC missed containingFile needed for generation of method and class signatures Merge-request: KT-MR-13970 Merged-by: Pavel Mikhailovskii <Pavel.Mikhailovskii@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
8e4dc1fc31
commit
85c9c57da4
+14
-2
@@ -17,6 +17,7 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassKind
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.sourcePsiSafe
|
||||
@@ -164,15 +165,26 @@ abstract class SymbolLightClassForClassLike<SType : KtClassOrObjectSymbol> prote
|
||||
override fun getSupers(): Array<PsiClass> = PsiClassImplUtil.getSupers(this)
|
||||
override fun getSuperTypes(): Array<PsiClassType> = PsiClassImplUtil.getSuperTypes(this)
|
||||
|
||||
override fun getContainingClass(): PsiClass? {
|
||||
private val _containingClass: PsiClass? by lazyPub {
|
||||
val containingBody = classOrObjectDeclaration?.parent
|
||||
return when (val parent = containingBody?.parent) {
|
||||
when (val parent = containingBody?.parent) {
|
||||
is KtClassOrObject -> parent.toLightClass()
|
||||
is KtScript -> parent.toLightClass()
|
||||
null -> withClassOrObjectSymbol { s ->
|
||||
(s.getContainingSymbol() as? KtNamedClassOrObjectSymbol)?.let { createLightClassNoCache(it, ktModule, manager) }
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
override fun getContainingClass(): PsiClass? = _containingClass
|
||||
|
||||
private val _containingFile: PsiFile? by lazyPub {
|
||||
super.getContainingFile() ?: containingClass?.containingFile
|
||||
}
|
||||
|
||||
override fun getContainingFile(): PsiFile? = _containingFile
|
||||
|
||||
abstract override fun getParent(): PsiElement?
|
||||
override fun getScope(): PsiElement? = parent
|
||||
|
||||
|
||||
Reference in New Issue
Block a user