[SLC] introduce EmptyAnnotationsBox

^KT-56046
This commit is contained in:
Dmitrii Gridin
2023-01-25 12:31:00 +01:00
committed by Space Team
parent ad4f6b25ca
commit 8c2cb4f621
5 changed files with 41 additions and 21 deletions
@@ -0,0 +1,14 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.light.classes.symbol.annotations
import com.intellij.psi.PsiAnnotation
import com.intellij.psi.PsiModifierList
object EmptyAnnotationsBox : AnnotationsBox {
override fun annotations(owner: PsiModifierList): Array<PsiAnnotation> = PsiAnnotation.EMPTY_ARRAY
override fun findAnnotation(owner: PsiModifierList, qualifiedName: String): PsiAnnotation? = null
}
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.light.classes.symbol.*
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
@@ -145,23 +146,23 @@ internal class SymbolLightFieldForProperty private constructor(
SymbolLightMemberModifierList(
containingDeclaration = this,
initialValue = initializerValue,
lazyModifiersComputer = ::computeModifiers,
) { modifierList ->
withPropertySymbol { propertySymbol ->
val nullability = if (!(propertySymbol is KtKotlinPropertySymbol && propertySymbol.isLateInit)) {
getTypeNullability(propertySymbol.returnType)
} else {
NullabilityType.Unknown
}
modifiersBox = LazyModifiersBox(initializerValue, ::computeModifiers),
annotationsBox = SimpleAnnotationsBox { modifierList ->
withPropertySymbol { propertySymbol ->
val nullability = if (!(propertySymbol is KtKotlinPropertySymbol && propertySymbol.isLateInit)) {
getTypeNullability(propertySymbol.returnType)
} else {
NullabilityType.Unknown
}
propertySymbol.computeAnnotations(
modifierList = modifierList,
nullability = nullability,
annotationUseSiteTarget = AnnotationUseSiteTarget.FIELD,
)
}
}
propertySymbol.computeAnnotations(
modifierList = modifierList,
nullability = nullability,
annotationUseSiteTarget = AnnotationUseSiteTarget.FIELD,
)
}
},
)
}
override fun getModifierList(): PsiModifierList = _modifierList
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SimpleModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
@@ -36,7 +37,10 @@ internal class SymbolLightNoArgConstructor(
override fun isDeprecated(): Boolean = false
private val _modifierList: PsiModifierList by lazyPub {
SymbolLightMemberModifierList(containingDeclaration = this, staticModifiers = setOf(visibility), annotationsComputer = null)
SymbolLightMemberModifierList(
containingDeclaration = this,
modifiersBox = SimpleModifiersBox(visibility),
)
}
override fun getModifierList(): PsiModifierList = _modifierList
@@ -9,6 +9,7 @@ import com.intellij.psi.*
import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_BASE
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SimpleModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
@@ -31,8 +32,7 @@ internal class SymbolLightRepeatableAnnotationContainerMethod(
private val _modifierList by lazyPub {
SymbolLightMemberModifierList(
containingDeclaration = this,
staticModifiers = setOf(PsiModifier.PUBLIC, PsiModifier.ABSTRACT),
annotationsComputer = null,
modifiersBox = SimpleModifiersBox(PsiModifier.PUBLIC, PsiModifier.ABSTRACT),
)
}
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.light.classes.symbol.*
import org.jetbrains.kotlin.light.classes.symbol.annotations.SimpleAnnotationsBox
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasInlineOnlyAnnotation
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmStaticAnnotation
@@ -158,8 +159,8 @@ internal class SymbolLightSimpleMethod(
private val _modifierList: PsiModifierList by lazyPub {
SymbolLightMemberModifierList(
containingDeclaration = this,
lazyModifiersComputer = ::computeModifiers,
annotationsComputer = ::computeAnnotations,
modifiersBox = LazyModifiersBox(computer = ::computeModifiers),
annotationsBox = SimpleAnnotationsBox(::computeAnnotations),
)
}