[AA LC] Fix computation of const initializers of fields

This commit is contained in:
Dmitriy Novozhilov
2022-08-12 14:21:15 +03:00
parent 573b292cbc
commit c5916e1d1f
24 changed files with 199 additions and 42 deletions
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
context(KtAnalysisSession)
internal abstract class SymbolLightClassForClassOrObject(
abstract class SymbolLightClassForClassOrObject(
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
manager: PsiManager
) : SymbolLightClassBase(manager),
@@ -117,8 +117,6 @@ internal class SymbolLightFieldForProperty(
private val _initializer by lazyPub {
if (propertySymbol !is KtKotlinPropertySymbol) return@lazyPub null
if (!propertySymbol.isConst) return@lazyPub null
if (!propertySymbol.isVal) return@lazyPub null
val constInitializer = propertySymbol.initializer as? KtConstantInitializerValue ?: return@lazyPub null
(constInitializer.constant as? KtConstantValue)?.createPsiLiteral(this)
}
@@ -265,6 +265,7 @@ private fun KtKClassAnnotationValue.KtNonLocalKClassAnnotationValue.toAnnotation
private fun KtConstantValue.asStringForPsiLiteral(): String =
when (val value = value) {
is Char -> "'$value'"
is String -> "\"${escapeString(value)}\""
is Long -> "${value}L"
is Float -> "${value}f"