diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAbstractAnnotationParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAbstractAnnotationParameterList.kt index d8e9814b0ca..badf80b241a 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAbstractAnnotationParameterList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAbstractAnnotationParameterList.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.light.classes.symbol.annotations import com.intellij.psi.PsiAnnotationParameterList import org.jetbrains.kotlin.analysis.api.annotations.KtNamedAnnotationValue +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightElementBase import org.jetbrains.kotlin.psi.KtElement @@ -16,10 +17,19 @@ internal sealed class SymbolLightAbstractAnnotationParameterList( override val kotlinOrigin: KtElement? get() = (parent as SymbolLightAbstractAnnotation).kotlinOrigin?.valueArgumentList } +@Suppress("NOTHING_TO_INLINE") +internal inline fun SymbolLightAbstractAnnotation.symbolLightAnnotationParameterList(): SymbolLightAbstractAnnotationParameterList { + return SymbolLightEmptyAnnotationParameterList(this) +} + internal fun SymbolLightAbstractAnnotation.symbolLightAnnotationParameterList( - arguments: List = emptyList(), + arguments: List, ): SymbolLightAbstractAnnotationParameterList = if (arguments.isNotEmpty()) { SymbolLightLazyAnnotationParameterList(this, lazyOf(arguments)) } else { - SymbolLightEmptyAnnotationParameterList(this) + symbolLightAnnotationParameterList() } + +internal inline fun SymbolLightAbstractAnnotation.symbolLightAnnotationParameterList( + crossinline argumentsComputer: () -> List, +): SymbolLightAbstractAnnotationParameterList = SymbolLightLazyAnnotationParameterList(this, lazyPub { argumentsComputer() }) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightJavaAnnotation.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightJavaAnnotation.kt index a84c5d425ab..16bed60dd30 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightJavaAnnotation.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightJavaAnnotation.kt @@ -29,7 +29,7 @@ internal open class SymbolLightJavaAnnotation( override fun getQualifiedName(): String = javaQualifier private val _parameterList: PsiAnnotationParameterList by lazyPub { - SymbolLightLazyAnnotationParameterList(this, lazyPub { argumentsComputer() }) + symbolLightAnnotationParameterList { argumentsComputer() } } override fun getParameterList(): PsiAnnotationParameterList = _parameterList diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightLazyAnnotation.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightLazyAnnotation.kt index 5bd39578a62..9aa3e589135 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightLazyAnnotation.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightLazyAnnotation.kt @@ -40,9 +40,9 @@ internal class SymbolLightLazyAnnotation( private val _parameterList: PsiAnnotationParameterList by lazyPub { if (annotationApplication.isCallWithArguments) { - SymbolLightLazyAnnotationParameterList(this, lazyPub { annotationApplicationWithArgumentsInfo.value.arguments }) + symbolLightAnnotationParameterList { annotationApplicationWithArgumentsInfo.value.arguments } } else { - SymbolLightEmptyAnnotationParameterList(this) + symbolLightAnnotationParameterList() } }