FIR IDE/LC: rename origin of constant values

This commit is contained in:
Jinseong Jeon
2021-09-21 11:38:21 -07:00
committed by Ilya Kirillov
parent d3d3aeacb4
commit d9424fa092
3 changed files with 13 additions and 13 deletions
@@ -61,12 +61,12 @@ internal object KtFirConstantValueConverter {
}
}
private fun Collection<KtConstantValue>.toArrayConstantValueIfNecessary(kotlinOrigin: KtElement?): KtConstantValue? {
val valueArgument = if (kotlinOrigin is ValueArgument) kotlinOrigin else
(kotlinOrigin?.parents?.firstOrNull { it is ValueArgument } as? ValueArgument)
private fun Collection<KtConstantValue>.toArrayConstantValueIfNecessary(sourcePsi: KtElement?): KtConstantValue? {
val valueArgument = if (sourcePsi is ValueArgument) sourcePsi else
(sourcePsi?.parents?.firstOrNull { it is ValueArgument } as? ValueArgument)
val wrap = valueArgument?.arrayConversionExpected() ?: false
return if (wrap) {
KtArrayConstantValue(this, kotlinOrigin)
KtArrayConstantValue(this, sourcePsi)
} else {
singleOrNull()
}
@@ -27,30 +27,30 @@ import org.jetbrains.kotlin.types.ConstantValueKind
* [KtArrayConstantValue] abstracts an array of [KtConstantValue]s.
*/
public sealed class KtConstantValue(
public open val kotlinOrigin: KtElement? = null
public open val sourcePsi: KtElement? = null
)
public object KtUnsupportedConstantValue : KtConstantValue()
public class KtArrayConstantValue(
public val values: Collection<KtConstantValue>,
override val kotlinOrigin: KtElement?,
override val sourcePsi: KtElement?,
) : KtConstantValue()
public class KtAnnotationConstantValue(
public val classId: ClassId?,
public val arguments: List<KtNamedConstantValue>,
override val kotlinOrigin: KtCallElement?,
override val sourcePsi: KtCallElement?,
) : KtConstantValue()
public class KtEnumEntryConstantValue(
public val callableId: CallableId?,
override val kotlinOrigin: KtElement?,
override val sourcePsi: KtElement?,
) : KtConstantValue()
public class KtLiteralConstantValue<T>(
public val constantValueKind: ConstantValueKind<T>,
public val value: T,
override val kotlinOrigin: KtElement?,
override val sourcePsi: KtElement?,
) : KtConstantValue() {
public fun toConst(): Any? {
return (value as? Long)?.let {
@@ -182,16 +182,16 @@ private fun escapeString(str: String): String = buildString {
internal fun KtConstantValue.toAnnotationMemberValue(parent: PsiElement): PsiAnnotationMemberValue? {
return when (this) {
is KtArrayConstantValue ->
FirPsiArrayInitializerMemberValue(kotlinOrigin, parent) { arrayLiteralParent ->
FirPsiArrayInitializerMemberValue(sourcePsi, parent) { arrayLiteralParent ->
values.mapNotNull { element -> element.toAnnotationMemberValue(arrayLiteralParent) }
}
is KtAnnotationConstantValue ->
FirLightSimpleAnnotation(classId?.relativeClassName?.asString(), parent, arguments, kotlinOrigin)
FirLightSimpleAnnotation(classId?.relativeClassName?.asString(), parent, arguments, sourcePsi)
else ->
createPsiLiteral(parent)?.let {
when (it) {
is PsiLiteral -> FirPsiLiteral(kotlinOrigin, parent, it)
else -> FirPsiExpression(kotlinOrigin, parent, it)
is PsiLiteral -> FirPsiLiteral(sourcePsi, parent, it)
else -> FirPsiExpression(sourcePsi, parent, it)
}
}
}