FIR IDE/LC: rename origin of constant values
This commit is contained in:
committed by
Ilya Kirillov
parent
d3d3aeacb4
commit
d9424fa092
+4
-4
@@ -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()
|
||||
}
|
||||
|
||||
+5
-5
@@ -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 {
|
||||
|
||||
+4
-4
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user