[Analysis API] KtPsiTypeProvider: drop asPsiTypeElement method
This was an implementation detail of SLC. In the case, if we want to have proper parents for type annotations in light classes, we have to properly implement `PsiTypeElement` for required declarations. ^KT-66603 ^KT-56870
This commit is contained in:
committed by
Space Team
parent
2fbde7a85c
commit
e1bf85f790
+4
-5
@@ -167,14 +167,13 @@ fun annotateByKtType(
|
||||
psiType: PsiType,
|
||||
ktType: KtType,
|
||||
psiContext: PsiTypeElement,
|
||||
modifierListAsParent: PsiModifierList?,
|
||||
): PsiType {
|
||||
fun KtType.getAnnotationsSequence(modifierList: PsiModifierList?): Sequence<List<PsiAnnotation>> = sequence {
|
||||
fun KtType.getAnnotationsSequence(): Sequence<List<PsiAnnotation>> = sequence {
|
||||
yield(
|
||||
annotations.map { annoApp ->
|
||||
SymbolLightSimpleAnnotation(
|
||||
annoApp.classId?.asFqNameString(),
|
||||
modifierList ?: psiContext,
|
||||
psiContext,
|
||||
annoApp.arguments,
|
||||
annoApp.psi,
|
||||
)
|
||||
@@ -183,10 +182,10 @@ fun annotateByKtType(
|
||||
|
||||
(this@getAnnotationsSequence as? KtNonErrorClassType)?.ownTypeArguments?.forEach { typeProjection ->
|
||||
typeProjection.type?.let {
|
||||
yieldAll(it.getAnnotationsSequence(modifierList = null))
|
||||
yieldAll(it.getAnnotationsSequence())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return psiType.annotateByTypeAnnotationProvider(ktType.getAnnotationsSequence(modifierListAsParent))
|
||||
return psiType.annotateByTypeAnnotationProvider(ktType.getAnnotationsSequence())
|
||||
}
|
||||
|
||||
+2
-6
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.light.classes.symbol.methods
|
||||
import com.intellij.psi.*
|
||||
import kotlinx.collections.immutable.PersistentMap
|
||||
import kotlinx.collections.immutable.mutate
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisNonPublicApi
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.hasAnnotation
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
|
||||
@@ -230,16 +229,13 @@ internal class SymbolLightSimpleMethod(
|
||||
else
|
||||
KtTypeMappingMode.RETURN_TYPE
|
||||
|
||||
ktType.asPsiTypeElement(
|
||||
ktType.asPsiType(
|
||||
this@SymbolLightSimpleMethod,
|
||||
allowErrorTypes = true,
|
||||
typeMappingMode,
|
||||
this@SymbolLightSimpleMethod.containingClass.isAnnotationType,
|
||||
suppressWildcards = suppressWildcards(),
|
||||
)?.let {
|
||||
@OptIn(KtAnalysisNonPublicApi::class)
|
||||
annotateByKtType(it.type, ktType, it, modifierList)
|
||||
}
|
||||
)
|
||||
} ?: nonExistentType()
|
||||
}
|
||||
|
||||
|
||||
+2
-7
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.light.classes.symbol.parameters
|
||||
|
||||
import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisNonPublicApi
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
@@ -15,7 +14,6 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.annotateByKtType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.suppressWildcardMode
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
@@ -79,15 +77,12 @@ internal abstract class SymbolLightParameterCommon(
|
||||
val convertedType = run {
|
||||
val ktType = parameterSymbol.returnType
|
||||
|
||||
ktType.asPsiTypeElement(
|
||||
ktType.asPsiType(
|
||||
this@SymbolLightParameterCommon,
|
||||
allowErrorTypes = true,
|
||||
ktType.typeMappingMode(),
|
||||
suppressWildcards = parameterSymbol.suppressWildcardMode(),
|
||||
)?.let {
|
||||
@OptIn(KtAnalysisNonPublicApi::class)
|
||||
annotateByKtType(it.type, ktType, it, modifierList)
|
||||
}
|
||||
)
|
||||
} ?: nonExistentType()
|
||||
|
||||
if (isDeclaredAsVararg()) {
|
||||
|
||||
+2
-6
@@ -9,7 +9,6 @@ import com.intellij.psi.PsiIdentifier
|
||||
import com.intellij.psi.PsiModifierList
|
||||
import com.intellij.psi.PsiType
|
||||
import com.intellij.psi.util.TypeConversionUtil
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisNonPublicApi
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
|
||||
@@ -88,15 +87,12 @@ internal class SymbolLightParameterForReceiver private constructor(
|
||||
private val _type: PsiType by lazyPub {
|
||||
withReceiverSymbol { receiver ->
|
||||
val ktType = receiver.type
|
||||
val psiType = ktType.asPsiTypeElement(
|
||||
val psiType = ktType.asPsiType(
|
||||
this,
|
||||
allowErrorTypes = true,
|
||||
ktType.typeMappingMode(),
|
||||
suppressWildcards = receiver.suppressWildcard() ?: method.suppressWildcards(),
|
||||
)?.let {
|
||||
@OptIn(KtAnalysisNonPublicApi::class)
|
||||
annotateByKtType(it.type, ktType, it, modifierList)
|
||||
}
|
||||
)
|
||||
|
||||
if (method is SymbolLightAnnotationsMethod) {
|
||||
val erased = TypeConversionUtil.erasure(psiType)
|
||||
|
||||
Reference in New Issue
Block a user