[SLC] SymbolLightAbstractAnnotationParameterList: introduce more flexible symbolLightAnnotationParameterList api

^KT-56046
This commit is contained in:
Dmitrii Gridin
2023-02-02 16:51:38 +01:00
committed by Space Team
parent d7535c303d
commit 197160fbd7
3 changed files with 15 additions and 5 deletions
@@ -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<KtNamedAnnotationValue> = emptyList(),
arguments: List<KtNamedAnnotationValue>,
): SymbolLightAbstractAnnotationParameterList = if (arguments.isNotEmpty()) {
SymbolLightLazyAnnotationParameterList(this, lazyOf(arguments))
} else {
SymbolLightEmptyAnnotationParameterList(this)
symbolLightAnnotationParameterList()
}
internal inline fun SymbolLightAbstractAnnotation.symbolLightAnnotationParameterList(
crossinline argumentsComputer: () -> List<KtNamedAnnotationValue>,
): SymbolLightAbstractAnnotationParameterList = SymbolLightLazyAnnotationParameterList(this, lazyPub { argumentsComputer() })
@@ -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
@@ -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()
}
}