diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt index b9265ceb3ac..7e6e2345359 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt @@ -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) ), diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt index 2545c43d323..d53d43a3870 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt @@ -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( diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt index 51a54e4e414..98f13ae7cd6 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt @@ -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? = 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) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt index 709074968d9..67b72b3d4bf 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt @@ -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? { - 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 { diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt index e704bfe5021..416fe2c2230 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt @@ -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? = 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, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt index 5eaada91741..f6987172dc8 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt @@ -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? = 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( diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt index 66195d6146b..419fa1db086 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt @@ -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? { - 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 diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt index b2116f5d6c0..7ca9a14b24f 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt @@ -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 = _typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY private fun computeModifiers(modifier: String): Map? = 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 = LazyModifiersBox.MODALITY_MODIFIERS_MAP.mutate { - it.putAll(LazyModifiersBox.VISIBILITY_MODIFIERS_MAP) + private fun modifiersForInlineOnlyCase(): PersistentMap = 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, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/LazyModifiersBox.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/GranularModifiersBox.kt similarity index 97% rename from analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/LazyModifiersBox.kt rename to analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/GranularModifiersBox.kt index 75869c5317e..3e121f4f01d 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/LazyModifiersBox.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/GranularModifiersBox.kt @@ -20,7 +20,7 @@ import java.util.concurrent.atomic.AtomicReferenceFieldUpdater internal typealias LazyModifiersComputer = (modifier: String) -> Map? -internal class LazyModifiersBox( +internal class GranularModifiersBox( initialValue: Map = 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", ) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt index 3dba718889d..f053dbb5162 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/ModifiersBox.kt @@ -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. *