[SLC] migrate some SimpleAnnotationsBox to LazyAnnotationsBox
^KT-56046
This commit is contained in:
committed by
Space Team
parent
2c7fb49a80
commit
5f6c1afa1f
+2
@@ -9,6 +9,8 @@ import com.intellij.psi.PsiAnnotation
|
|||||||
import com.intellij.psi.PsiModifierList
|
import com.intellij.psi.PsiModifierList
|
||||||
|
|
||||||
internal class CompositeAdditionalAnnotationsProvider(val providers: List<AdditionalAnnotationsProvider>) : AdditionalAnnotationsProvider {
|
internal class CompositeAdditionalAnnotationsProvider(val providers: List<AdditionalAnnotationsProvider>) : AdditionalAnnotationsProvider {
|
||||||
|
constructor(vararg providers: AdditionalAnnotationsProvider) : this(providers.toList())
|
||||||
|
|
||||||
override fun addAllAnnotations(
|
override fun addAllAnnotations(
|
||||||
currentRawAnnotations: MutableList<in PsiAnnotation>,
|
currentRawAnnotations: MutableList<in PsiAnnotation>,
|
||||||
foundQualifiers: MutableSet<String>,
|
foundQualifiers: MutableSet<String>,
|
||||||
|
|||||||
+3
@@ -7,10 +7,13 @@ package org.jetbrains.kotlin.light.classes.symbol.annotations
|
|||||||
|
|
||||||
import com.intellij.psi.PsiAnnotation
|
import com.intellij.psi.PsiAnnotation
|
||||||
import com.intellij.psi.PsiModifierList
|
import com.intellij.psi.PsiModifierList
|
||||||
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
||||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||||
|
|
||||||
internal class NullabilityAnnotationsProvider(private val lazyNullabilityType: Lazy<NullabilityType>) : AdditionalAnnotationsProvider {
|
internal class NullabilityAnnotationsProvider(private val lazyNullabilityType: Lazy<NullabilityType>) : AdditionalAnnotationsProvider {
|
||||||
|
constructor(initializer: () -> NullabilityType) : this(lazyPub(initializer))
|
||||||
|
|
||||||
override fun addAllAnnotations(
|
override fun addAllAnnotations(
|
||||||
currentRawAnnotations: MutableList<in PsiAnnotation>,
|
currentRawAnnotations: MutableList<in PsiAnnotation>,
|
||||||
foundQualifiers: MutableSet<String>,
|
foundQualifiers: MutableSet<String>,
|
||||||
|
|||||||
+5
-12
@@ -25,9 +25,8 @@ import org.jetbrains.kotlin.builtins.StandardNames
|
|||||||
import org.jetbrains.kotlin.builtins.StandardNames.HASHCODE_NAME
|
import org.jetbrains.kotlin.builtins.StandardNames.HASHCODE_NAME
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.LazyAnnotationsBox
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolAnnotationsProvider
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForEnumEntry
|
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForEnumEntry
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject
|
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightSimpleMethod
|
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightSimpleMethod
|
||||||
@@ -89,15 +88,9 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC
|
|||||||
SymbolLightClassModifierList(
|
SymbolLightClassModifierList(
|
||||||
containingDeclaration = this,
|
containingDeclaration = this,
|
||||||
modifiersBox = LazyModifiersBox(computer = ::computeModifiers),
|
modifiersBox = LazyModifiersBox(computer = ::computeModifiers),
|
||||||
annotationsBox = SimpleAnnotationsBox { modifierList ->
|
annotationsBox = LazyAnnotationsBox(
|
||||||
withClassOrObjectSymbol { classOrObjectSymbol ->
|
annotationsProvider = SymbolAnnotationsProvider(ktModule, classOrObjectSymbolPointer)
|
||||||
classOrObjectSymbol.computeAnnotations(
|
),
|
||||||
modifierList = modifierList,
|
|
||||||
nullability = NullabilityType.Unknown,
|
|
||||||
annotationUseSiteTarget = null,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-12
@@ -17,9 +17,8 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.symbolPointerOfType
|
|||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.LazyAnnotationsBox
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolAnnotationsProvider
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
|
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
|
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
|
||||||
@@ -72,15 +71,9 @@ internal abstract class SymbolLightClassForInterfaceOrAnnotationClass : SymbolLi
|
|||||||
initialValue = LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(PsiModifier.ABSTRACT),
|
initialValue = LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(PsiModifier.ABSTRACT),
|
||||||
computer = ::computeModifiers
|
computer = ::computeModifiers
|
||||||
),
|
),
|
||||||
annotationsBox = SimpleAnnotationsBox { modifierList ->
|
annotationsBox = LazyAnnotationsBox(
|
||||||
withClassOrObjectSymbol { classOrObjectSymbol ->
|
annotationsProvider = SymbolAnnotationsProvider(ktModule, classOrObjectSymbolPointer)
|
||||||
classOrObjectSymbol.computeAnnotations(
|
),
|
||||||
modifierList = modifierList,
|
|
||||||
nullability = NullabilityType.Unknown,
|
|
||||||
annotationUseSiteTarget = null,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
private val _modifierList: PsiModifierList? by lazyPub {
|
private val _modifierList: PsiModifierList? by lazyPub {
|
||||||
|
|||||||
+11
-13
@@ -9,7 +9,6 @@ import com.intellij.psi.PsiIdentifier
|
|||||||
import com.intellij.psi.PsiModifierList
|
import com.intellij.psi.PsiModifierList
|
||||||
import com.intellij.psi.PsiType
|
import com.intellij.psi.PsiType
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.annotations
|
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtReceiverParameterSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedSymbol
|
||||||
@@ -17,9 +16,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
|||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.*
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightAnnotationForAnnotationCall
|
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeNullabilityAnnotation
|
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||||
import org.jetbrains.kotlin.psi.KtParameter
|
import org.jetbrains.kotlin.psi.KtParameter
|
||||||
@@ -71,16 +68,17 @@ internal class SymbolLightParameterForReceiver private constructor(
|
|||||||
private val _modifierList: PsiModifierList by lazyPub {
|
private val _modifierList: PsiModifierList by lazyPub {
|
||||||
SymbolLightClassModifierList(
|
SymbolLightClassModifierList(
|
||||||
containingDeclaration = this,
|
containingDeclaration = this,
|
||||||
annotationsBox = SimpleAnnotationsBox { modifierList ->
|
annotationsBox = LazyAnnotationsBox(
|
||||||
withReceiverSymbol { receiver ->
|
annotationsProvider = SymbolAnnotationsProvider(ktModule, receiverPointer),
|
||||||
buildList {
|
additionalAnnotationsProvider = CompositeAdditionalAnnotationsProvider(
|
||||||
receiver.type.nullabilityType.computeNullabilityAnnotation(modifierList)?.let(::add)
|
DefaultAnnotationsProvider,
|
||||||
receiver.annotations.mapTo(this) {
|
NullabilityAnnotationsProvider {
|
||||||
SymbolLightAnnotationForAnnotationCall(it, modifierList)
|
withReceiverSymbol { receiver ->
|
||||||
|
receiver.type.nullabilityType
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
)
|
||||||
},
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+13
-9
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.light.classes.symbol.parameters
|
|||||||
import com.intellij.psi.PsiIdentifier
|
import com.intellij.psi.PsiIdentifier
|
||||||
import com.intellij.psi.PsiModifierList
|
import com.intellij.psi.PsiModifierList
|
||||||
import com.intellij.psi.PsiType
|
import com.intellij.psi.PsiType
|
||||||
import org.jetbrains.annotations.NotNull
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.analysis.api.components.buildClassType
|
import org.jetbrains.kotlin.analysis.api.components.buildClassType
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
|
||||||
@@ -16,8 +15,10 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.isPrivateOrPrivateToThi
|
|||||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME
|
import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
|
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightSimpleAnnotation
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.EmptyAnnotationsProvider
|
||||||
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.LazyAnnotationsBox
|
||||||
|
import org.jetbrains.kotlin.light.classes.symbol.annotations.NullabilityAnnotationsProvider
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.isValid
|
import org.jetbrains.kotlin.light.classes.symbol.isValid
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||||
@@ -55,12 +56,15 @@ internal class SymbolLightSuspendContinuationParameter(
|
|||||||
private val _modifierList: PsiModifierList by lazyPub {
|
private val _modifierList: PsiModifierList by lazyPub {
|
||||||
SymbolLightClassModifierList(
|
SymbolLightClassModifierList(
|
||||||
containingDeclaration = this,
|
containingDeclaration = this,
|
||||||
annotationsBox = SimpleAnnotationsBox { modifierList ->
|
annotationsBox = LazyAnnotationsBox(
|
||||||
if (withFunctionSymbol { it.visibility.isPrivateOrPrivateToThis() })
|
annotationsProvider = EmptyAnnotationsProvider,
|
||||||
emptyList()
|
additionalAnnotationsProvider = NullabilityAnnotationsProvider {
|
||||||
else
|
if (withFunctionSymbol { it.visibility.isPrivateOrPrivateToThis() })
|
||||||
listOf(SymbolLightSimpleAnnotation(NotNull::class.java.name, modifierList))
|
NullabilityType.Unknown
|
||||||
},
|
else
|
||||||
|
NullabilityType.NotNull
|
||||||
|
},
|
||||||
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user