[SLC] rename from LazyModifiersBox to GranularModifiersBox

^KT-56046
This commit is contained in:
Dmitrii Gridin
2023-02-02 15:07:16 +01:00
committed by Space Team
parent c05a47355e
commit a2c0a88592
10 changed files with 44 additions and 41 deletions
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolAnnotationsPr
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.methods.SymbolLightSimpleMethod
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.name.Name
@@ -84,7 +84,7 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC
private val _modifierList: PsiModifierList by lazyPub {
SymbolLightClassModifierList(
containingDeclaration = this,
modifiersBox = LazyModifiersBox(computer = ::computeModifiers),
modifiersBox = GranularModifiersBox(computer = ::computeModifiers),
annotationsBox = LazyAnnotationsBox(
annotationsProvider = SymbolAnnotationsProvider(ktModule, classOrObjectSymbolPointer)
),
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.light.classes.symbol.annotations.AbstractClassAdditionalAnnotationsProvider
import org.jetbrains.kotlin.light.classes.symbol.annotations.LazyAnnotationsBox
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolAnnotationsProvider
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
import org.jetbrains.kotlin.psi.KtClass
@@ -68,8 +68,8 @@ internal abstract class SymbolLightClassForInterfaceOrAnnotationClass : SymbolLi
protected open fun computeModifierList(): PsiModifierList? = SymbolLightClassModifierList(
containingDeclaration = this,
modifiersBox = LazyModifiersBox(
initialValue = LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(PsiModifier.ABSTRACT),
modifiersBox = GranularModifiersBox(
initialValue = GranularModifiersBox.MODALITY_MODIFIERS_MAP.with(PsiModifier.ABSTRACT),
computer = ::computeModifiers
),
annotationsBox = LazyAnnotationsBox(
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObjec
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForProperty
import org.jetbrains.kotlin.light.classes.symbol.isConstOrJvmField
import org.jetbrains.kotlin.light.classes.symbol.isLateInit
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
import org.jetbrains.kotlin.light.classes.symbol.toPsiVisibilityForClass
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -143,12 +143,12 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike<
}
internal fun computeModifiers(modifier: String): Map<String, Boolean>? = when (modifier) {
in LazyModifiersBox.VISIBILITY_MODIFIERS -> {
in GranularModifiersBox.VISIBILITY_MODIFIERS -> {
val visibility = withClassOrObjectSymbol { it.toPsiVisibilityForClass(isNested = !isTopLevel) }
LazyModifiersBox.VISIBILITY_MODIFIERS_MAP.with(visibility)
GranularModifiersBox.VISIBILITY_MODIFIERS_MAP.with(visibility)
}
in LazyModifiersBox.MODALITY_MODIFIERS -> LazyModifiersBox.computeSimpleModality(ktModule, classOrObjectSymbolPointer)
in GranularModifiersBox.MODALITY_MODIFIERS -> GranularModifiersBox.computeSimpleModality(ktModule, classOrObjectSymbolPointer)
PsiModifier.STATIC -> {
val isStatic = !isTopLevel && !isInner
mapOf(modifier to isStatic)
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnota
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForClassLike
import org.jetbrains.kotlin.light.classes.symbol.compareSymbolPointers
import org.jetbrains.kotlin.light.classes.symbol.isValid
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
import org.jetbrains.kotlin.light.classes.symbol.withSymbol
@@ -58,8 +58,8 @@ internal class SymbolLightFieldForObject private constructor(
private val _modifierList: PsiModifierList by lazyPub {
SymbolLightMemberModifierList(
containingDeclaration = this,
modifiersBox = LazyModifiersBox(
initialValue = LazyModifiersBox.MODALITY_MODIFIERS_MAP.mutate {
modifiersBox = GranularModifiersBox(
initialValue = GranularModifiersBox.MODALITY_MODIFIERS_MAP.mutate {
it[PsiModifier.FINAL] = true
it[PsiModifier.STATIC] = true
},
@@ -72,8 +72,8 @@ internal class SymbolLightFieldForObject private constructor(
}
private fun computeModifiers(modifier: String): Map<String, Boolean>? {
if (modifier !in LazyModifiersBox.VISIBILITY_MODIFIERS) return null
return LazyModifiersBox.computeVisibilityForMember(ktModule, objectSymbolPointer)
if (modifier !in GranularModifiersBox.VISIBILITY_MODIFIERS) return null
return GranularModifiersBox.computeVisibilityForMember(ktModule, objectSymbolPointer)
}
private val _isDeprecated: Boolean by lazyPub {
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.light.classes.symbol.*
import org.jetbrains.kotlin.light.classes.symbol.annotations.*
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
import org.jetbrains.kotlin.name.JvmNames.TRANSIENT_ANNOTATION_CLASS_ID
@@ -102,8 +102,8 @@ internal class SymbolLightFieldForProperty private constructor(
override fun getName(): String = fieldName
private fun computeModifiers(modifier: String): Map<String, Boolean>? = when (modifier) {
in LazyModifiersBox.VISIBILITY_MODIFIERS -> LazyModifiersBox.computeVisibilityForMember(ktModule, propertySymbolPointer)
in LazyModifiersBox.MODALITY_MODIFIERS -> {
in GranularModifiersBox.VISIBILITY_MODIFIERS -> GranularModifiersBox.computeVisibilityForMember(ktModule, propertySymbolPointer)
in GranularModifiersBox.MODALITY_MODIFIERS -> {
val modality = withPropertySymbol { propertySymbol ->
if (propertySymbol.isVal) {
PsiModifier.FINAL
@@ -114,7 +114,7 @@ internal class SymbolLightFieldForProperty private constructor(
}
}
LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
GranularModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
}
PsiModifier.STATIC -> {
@@ -147,12 +147,12 @@ internal class SymbolLightFieldForProperty private constructor(
val initializerValue = if (takePropertyVisibility) {
emptyMap()
} else {
LazyModifiersBox.VISIBILITY_MODIFIERS_MAP.with(PsiModifier.PRIVATE)
GranularModifiersBox.VISIBILITY_MODIFIERS_MAP.with(PsiModifier.PRIVATE)
}
SymbolLightMemberModifierList(
containingDeclaration = this,
modifiersBox = LazyModifiersBox(initializerValue, ::computeModifiers),
modifiersBox = GranularModifiersBox(initializerValue, ::computeModifiers),
annotationsBox = LazyAnnotationsBox(
annotationsProvider = SymbolAnnotationsProvider(
ktModule = ktModule,
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.light.classes.symbol.*
import org.jetbrains.kotlin.light.classes.symbol.annotations.*
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
@@ -142,9 +142,12 @@ internal class SymbolLightAccessorMethod private constructor(
}
private fun computeModifiers(modifier: String): Map<String, Boolean>? = when (modifier) {
in LazyModifiersBox.VISIBILITY_MODIFIERS -> LazyModifiersBox.computeVisibilityForMember(ktModule, propertyAccessorSymbolPointer)
in GranularModifiersBox.VISIBILITY_MODIFIERS -> GranularModifiersBox.computeVisibilityForMember(
ktModule,
propertyAccessorSymbolPointer,
)
in LazyModifiersBox.MODALITY_MODIFIERS -> {
in GranularModifiersBox.MODALITY_MODIFIERS -> {
val modality = if (containingClass.isInterface) {
PsiModifier.ABSTRACT
} else {
@@ -153,7 +156,7 @@ internal class SymbolLightAccessorMethod private constructor(
}
}
LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
GranularModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
}
PsiModifier.STATIC -> {
@@ -182,7 +185,7 @@ internal class SymbolLightAccessorMethod private constructor(
private val _modifierList: PsiModifierList by lazyPub {
SymbolLightMemberModifierList(
containingDeclaration = this,
modifiersBox = LazyModifiersBox(computer = ::computeModifiers),
modifiersBox = GranularModifiersBox(computer = ::computeModifiers),
annotationsBox = LazyAnnotationsBox(
annotationsProvider = CompositeAnnotationsProvider(
SymbolAnnotationsProvider(
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.light.classes.symbol.annotations.LazyAnnotationsBox
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolAnnotationsProvider
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForEnumEntry
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
import java.util.*
@@ -45,14 +45,14 @@ internal class SymbolLightConstructor(
private val _modifierList: PsiModifierList by lazyPub {
val initialValue = if (this.containingClass is SymbolLightClassForEnumEntry) {
LazyModifiersBox.VISIBILITY_MODIFIERS_MAP.with(PsiModifier.PACKAGE_LOCAL)
GranularModifiersBox.VISIBILITY_MODIFIERS_MAP.with(PsiModifier.PACKAGE_LOCAL)
} else {
emptyMap()
}
SymbolLightMemberModifierList(
containingDeclaration = this,
modifiersBox = LazyModifiersBox(
modifiersBox = GranularModifiersBox(
initialValue = initialValue,
computer = ::computeModifiers,
),
@@ -66,8 +66,8 @@ internal class SymbolLightConstructor(
}
private fun computeModifiers(modifier: String): Map<String, Boolean>? {
if (modifier !in LazyModifiersBox.VISIBILITY_MODIFIERS) return null
return LazyModifiersBox.computeVisibilityForMember(ktModule, functionSymbolPointer)
if (modifier !in GranularModifiersBox.VISIBILITY_MODIFIERS) return null
return GranularModifiersBox.computeVisibilityForMember(ktModule, functionSymbolPointer)
}
override fun getModifierList(): PsiModifierList = _modifierList
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.light.classes.symbol.*
import org.jetbrains.kotlin.light.classes.symbol.annotations.*
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightTypeParameterList
@@ -73,7 +73,7 @@ internal class SymbolLightSimpleMethod(
override fun getTypeParameters(): Array<PsiTypeParameter> = _typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY
private fun computeModifiers(modifier: String): Map<String, Boolean>? = when (modifier) {
in LazyModifiersBox.MODALITY_MODIFIERS -> {
in GranularModifiersBox.MODALITY_MODIFIERS -> {
ifInlineOnly { return modifiersForInlineOnlyCase() }
val modality = if (isTopLevel) {
PsiModifier.FINAL
@@ -83,12 +83,12 @@ internal class SymbolLightSimpleMethod(
}
}
LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
GranularModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
}
in LazyModifiersBox.VISIBILITY_MODIFIERS -> {
in GranularModifiersBox.VISIBILITY_MODIFIERS -> {
ifInlineOnly { return modifiersForInlineOnlyCase() }
LazyModifiersBox.computeVisibilityForMember(ktModule, functionSymbolPointer)
GranularModifiersBox.computeVisibilityForMember(ktModule, functionSymbolPointer)
}
PsiModifier.STATIC -> {
@@ -129,8 +129,8 @@ internal class SymbolLightSimpleMethod(
}
}
private fun modifiersForInlineOnlyCase(): PersistentMap<String, Boolean> = LazyModifiersBox.MODALITY_MODIFIERS_MAP.mutate {
it.putAll(LazyModifiersBox.VISIBILITY_MODIFIERS_MAP)
private fun modifiersForInlineOnlyCase(): PersistentMap<String, Boolean> = GranularModifiersBox.MODALITY_MODIFIERS_MAP.mutate {
it.putAll(GranularModifiersBox.VISIBILITY_MODIFIERS_MAP)
it[PsiModifier.FINAL] = true
it[PsiModifier.PRIVATE] = true
}
@@ -140,7 +140,7 @@ internal class SymbolLightSimpleMethod(
private val _modifierList: PsiModifierList by lazyPub {
SymbolLightMemberModifierList(
containingDeclaration = this,
modifiersBox = LazyModifiersBox(computer = ::computeModifiers),
modifiersBox = GranularModifiersBox(computer = ::computeModifiers),
annotationsBox = LazyAnnotationsBox(
annotationsProvider = SymbolAnnotationsProvider(
ktModule = ktModule,
@@ -20,7 +20,7 @@ import java.util.concurrent.atomic.AtomicReferenceFieldUpdater
internal typealias LazyModifiersComputer = (modifier: String) -> Map<String, Boolean>?
internal class LazyModifiersBox(
internal class GranularModifiersBox(
initialValue: Map<String, Boolean> = emptyMap(),
private val computer: LazyModifiersComputer,
) : ModifiersBox {
@@ -43,7 +43,7 @@ internal class LazyModifiersBox(
companion object {
private val fieldUpdater = AtomicReferenceFieldUpdater.newUpdater(
/* tclass = */ LazyModifiersBox::class.java,
/* tclass = */ GranularModifiersBox::class.java,
/* vclass = */ PersistentMap::class.java,
/* fieldName = */ "modifiersMapReference",
)
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.light.classes.symbol.modifierLists
/**
* This class is used as a proxy for [com.intellij.psi.PsiModifierList.hasModifierProperty].
*
* [LazyModifiersBox] provides an ability to compute each modifier separately to avoid heavy computation.
* [GranularModifiersBox] provides an ability to compute each modifier separately to avoid heavy computation.
* [InitializedModifiersBox] is a collection of possible modifiers.
* [EmptyModifiersBox] just a box without modifiers.
*