FIR IDE: rename some of constant values for consistency

This commit is contained in:
Jinseong Jeon
2021-09-20 14:17:55 -07:00
committed by Ilya Kirillov
parent ce445700b8
commit 0f16a2cb92
22 changed files with 54 additions and 52 deletions
@@ -39,11 +39,11 @@ internal object KtFirConstantValueConverter {
fun <T> toConstantValue(
firConstExpression: FirConstExpression<T>,
): KtSimpleConstantValue<T> =
): KtLiteralConstantValue<T> =
firConstExpression.convertConstantExpression()
private fun <T> FirConstExpression<T>.convertConstantExpression(): KtSimpleConstantValue<T> =
KtSimpleConstantValue(kind, value, realPsi as? KtElement)
private fun <T> FirConstExpression<T>.convertConstantExpression(): KtLiteralConstantValue<T> =
KtLiteralConstantValue(kind, value, realPsi as? KtElement)
private fun Collection<FirExpression>.convertConstantExpression(
session: FirSession,
@@ -112,7 +112,10 @@ internal object KtFirConstantValueConverter {
val reference = calleeReference as? FirResolvedNamedReference ?: return null
when (val resolvedSymbol = reference.resolvedSymbol) {
is FirEnumEntrySymbol -> {
KtEnumEntryValue(resolvedSymbol.fir.buildSymbol(firSymbolBuilder) as KtEnumEntrySymbol, realPsi as? KtElement)
KtEnumEntryConstantValue(
resolvedSymbol.fir.buildSymbol(firSymbolBuilder) as KtEnumEntrySymbol,
realPsi as? KtElement
)
}
else -> null
}
@@ -31,7 +31,7 @@ abstract class AbstractCompileTimeConstantEvaluatorTest : AbstractHLApiSingleFil
val actual = buildString {
appendLine("expression: ${expression.text}")
appendLine("constant_value: ${analyse(ktFile) { constantValue?.stringRepresentation() }}")
appendLine("constant: ${(constantValue as? KtSimpleConstantValue<*>)?.toConst()}")
appendLine("constant: ${(constantValue as? KtLiteralConstantValue<*>)?.toConst()}")
}
testServices.assertions.assertEqualsToFile(testDataFileSibling(".txt"), actual)
}
@@ -52,12 +52,17 @@ abstract class AbstractCompileTimeConstantEvaluatorTest : AbstractHLApiSingleFil
}
append(")")
}
is KtEnumEntryValue -> buildString {
append("KtEnumEntryValue(")
is KtEnumEntryConstantValue -> buildString {
append("KtEnumEntryConstantValue(")
append(enumEntrySymbol.callableIdIfNonLocal ?: enumEntrySymbol.name)
append(")")
}
is KtSimpleConstantValue<*> -> toString()
is KtLiteralConstantValue<*> -> buildString {
append("KtLiteralConstantValue(")
append("constantValueKind=${constantValueKind}")
append(", ")
append("value=${value})")
}
is KtUnsupportedConstantValue -> "KtUnsupportedConstantValue"
}
}
@@ -95,8 +95,8 @@ public object DebugSymbolRenderer {
}
"${value::class.simpleName!!}($symbolTag)"
}
is KtSimpleConstantValue<*> -> renderValue(value.value)
is KtEnumEntryValue -> "KtEnumEntryValue(${renderValue(value.enumEntrySymbol)})"
is KtLiteralConstantValue<*> -> renderValue(value.value)
is KtEnumEntryConstantValue -> "KtEnumEntryConstantValue(${renderValue(value.enumEntrySymbol)})"
is KtNamedConstantValue -> "${renderValue(value.name)} = ${renderValue(value.expression)}"
is KtAnnotationCall -> buildString {
append(renderValue(value.classId))
@@ -20,8 +20,8 @@ import org.jetbrains.kotlin.types.ConstantValueKind
* * other annotation types, and
* * array of aforementioned types
*
* [KtSimpleConstantValue] covers first two kinds;
* [KtEnumEntryValue] corresponds to enum types;
* [KtLiteralConstantValue] covers first two kinds;
* [KtEnumEntryConstantValue] corresponds to enum types;
* [KtAnnotationConstantValue] represents annotation types (with annotation fq name and arguments); and
* [KtArrayConstantValue] abstracts an array of [KtConstantValue]s.
*/
@@ -41,12 +41,12 @@ public class KtAnnotationConstantValue(
override val kotlinOrigin: KtCallElement?,
) : KtConstantValue()
public class KtEnumEntryValue(
public class KtEnumEntryConstantValue(
public val enumEntrySymbol: KtEnumEntrySymbol,
override val kotlinOrigin: KtElement?,
) : KtConstantValue()
public class KtSimpleConstantValue<T>(
public class KtLiteralConstantValue<T>(
public val constantValueKind: ConstantValueKind<T>,
public val value: T,
override val kotlinOrigin: KtElement?,
@@ -68,8 +68,4 @@ public class KtSimpleConstantValue<T>(
}
} ?: value
}
override fun toString(): String {
return "KtSimpleConstantValue(constantValueKind=${constantValueKind}, value=${value})"
}
}
@@ -1,6 +1,6 @@
expression: Annotation(strings = arrayOf("v1", "v2"))
constant_value: KtAnnotationConstantValue(Annotation, (strings = KtArrayConstantValue [
KtSimpleConstantValue(constantValueKind=String, value=v1)
KtSimpleConstantValue(constantValueKind=String, value=v2)
KtLiteralConstantValue(constantValueKind=String, value=v1)
KtLiteralConstantValue(constantValueKind=String, value=v2)
]))
constant: null
@@ -1,6 +1,6 @@
expression: Annotation(["v1", "v2"])
constant_value: KtAnnotationConstantValue(Annotation, (strings = KtArrayConstantValue [
KtSimpleConstantValue(constantValueKind=String, value=v1)
KtSimpleConstantValue(constantValueKind=String, value=v2)
KtLiteralConstantValue(constantValueKind=String, value=v1)
KtLiteralConstantValue(constantValueKind=String, value=v2)
]))
constant: null
@@ -1,12 +1,12 @@
expression: arrayOf(Annotation("v1", "v2"), Annotation(strings = arrayOf("v3", "v4")))
constant_value: KtArrayConstantValue [
KtAnnotationConstantValue(Annotation, (strings = KtArrayConstantValue [
KtSimpleConstantValue(constantValueKind=String, value=v1)
KtSimpleConstantValue(constantValueKind=String, value=v2)
KtLiteralConstantValue(constantValueKind=String, value=v1)
KtLiteralConstantValue(constantValueKind=String, value=v2)
]))
KtAnnotationConstantValue(Annotation, (strings = KtArrayConstantValue [
KtSimpleConstantValue(constantValueKind=String, value=v3)
KtSimpleConstantValue(constantValueKind=String, value=v4)
KtLiteralConstantValue(constantValueKind=String, value=v3)
KtLiteralConstantValue(constantValueKind=String, value=v4)
]))
]
constant: null
@@ -1,12 +1,12 @@
expression: [Annotation("v1", "v2"), Annotation(["v3", "v4"])]
constant_value: KtArrayConstantValue [
KtAnnotationConstantValue(Annotation, (strings = KtArrayConstantValue [
KtSimpleConstantValue(constantValueKind=String, value=v1)
KtSimpleConstantValue(constantValueKind=String, value=v2)
KtLiteralConstantValue(constantValueKind=String, value=v1)
KtLiteralConstantValue(constantValueKind=String, value=v2)
]))
KtAnnotationConstantValue(Annotation, (strings = KtArrayConstantValue [
KtSimpleConstantValue(constantValueKind=String, value=v3)
KtSimpleConstantValue(constantValueKind=String, value=v4)
KtLiteralConstantValue(constantValueKind=String, value=v3)
KtLiteralConstantValue(constantValueKind=String, value=v4)
]))
]
constant: null
@@ -1,3 +1,3 @@
expression: Color.R
constant_value: KtEnumEntryValue(/Color.R)
constant_value: KtEnumEntryConstantValue(/Color.R)
constant: null
@@ -1,3 +1,3 @@
expression: 42
constant_value: KtSimpleConstantValue(constantValueKind=Byte, value=42)
constant_value: KtLiteralConstantValue(constantValueKind=Byte, value=42)
constant: 42
@@ -1,3 +1,3 @@
expression: 3.14
constant_value: KtSimpleConstantValue(constantValueKind=Double, value=3.14)
constant_value: KtLiteralConstantValue(constantValueKind=Double, value=3.14)
constant: 3.14
@@ -1,3 +1,3 @@
expression: 3.14f
constant_value: KtSimpleConstantValue(constantValueKind=Float, value=3.14)
constant_value: KtLiteralConstantValue(constantValueKind=Float, value=3.14)
constant: 3.14
@@ -1,3 +1,3 @@
expression: 42
constant_value: KtSimpleConstantValue(constantValueKind=Int, value=42)
constant_value: KtLiteralConstantValue(constantValueKind=Int, value=42)
constant: 42
@@ -1,3 +1,3 @@
expression: 42
constant_value: KtSimpleConstantValue(constantValueKind=Long, value=42)
constant_value: KtLiteralConstantValue(constantValueKind=Long, value=42)
constant: 42
@@ -1,3 +1,3 @@
expression: 42u
constant_value: KtSimpleConstantValue(constantValueKind=UInt, value=42)
constant_value: KtLiteralConstantValue(constantValueKind=UInt, value=42)
constant: 42
@@ -1,3 +1,3 @@
expression: "42"
constant_value: KtSimpleConstantValue(constantValueKind=String, value=42)
constant_value: KtLiteralConstantValue(constantValueKind=String, value=42)
constant: 42
@@ -296,7 +296,7 @@ KtFirKotlinPropertySymbol:
kotlin/Deprecated
]
annotations: [
kotlin/Deprecated(level = KtEnumEntryValue(KtFirEnumEntrySymbol(kotlin/DeprecationLevel.ERROR)), message = don't use j)
kotlin/Deprecated(level = KtEnumEntryConstantValue(KtFirEnumEntrySymbol(kotlin/DeprecationLevel.ERROR)), message = don't use j)
psi: KtAnnotationEntry
]
callableIdIfNonLocal: /j
@@ -332,7 +332,7 @@ KtFirKotlinPropertySymbol:
kotlin/Deprecated
]
annotations: [
kotlin/Deprecated(level = KtEnumEntryValue(KtFirEnumEntrySymbol(kotlin/DeprecationLevel.HIDDEN)), message = don't use j2)
kotlin/Deprecated(level = KtEnumEntryConstantValue(KtFirEnumEntrySymbol(kotlin/DeprecationLevel.HIDDEN)), message = don't use j2)
psi: KtAnnotationEntry
]
callableIdIfNonLocal: /j2
@@ -3,7 +3,7 @@ KtFirNamedClassOrObjectSymbol:
kotlin/annotation/Target
]
annotations: [
kotlin/annotation/Target(allowedTargets = KtEnumEntryValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
kotlin/annotation/Target(allowedTargets = KtEnumEntryConstantValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
psi: KtAnnotationEntry
]
classIdIfNonLocal: Anno1
@@ -30,7 +30,7 @@ KtFirNamedClassOrObjectSymbol:
kotlin/annotation/Target
]
annotations: [
kotlin/annotation/Target(allowedTargets = KtEnumEntryValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
kotlin/annotation/Target(allowedTargets = KtEnumEntryConstantValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
psi: KtAnnotationEntry
]
classIdIfNonLocal: Anno2
@@ -57,7 +57,7 @@ KtFirNamedClassOrObjectSymbol:
kotlin/annotation/Target
]
annotations: [
kotlin/annotation/Target(allowedTargets = KtEnumEntryValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
kotlin/annotation/Target(allowedTargets = KtEnumEntryConstantValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
psi: KtAnnotationEntry
]
classIdIfNonLocal: Anno3
@@ -84,7 +84,7 @@ KtFirNamedClassOrObjectSymbol:
kotlin/annotation/Target
]
annotations: [
kotlin/annotation/Target(allowedTargets = KtEnumEntryValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
kotlin/annotation/Target(allowedTargets = KtEnumEntryConstantValue(KtFirEnumEntrySymbol(kotlin/annotation/AnnotationTarget.TYPE)))
psi: KtAnnotationEntry
]
classIdIfNonLocal: Anno4
@@ -10,9 +10,7 @@ import com.intellij.psi.impl.light.LightIdentifier
import org.jetbrains.kotlin.asJava.classes.cannotModify
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotationCall
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSimpleConstantValue
import org.jetbrains.kotlin.psi.KtElement
internal class FirAnnotationParameterList(
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSimpleConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtLiteralConstantValue
internal fun KtAnnotatedSymbol.hasJvmSyntheticAnnotation(annotationUseSiteTarget: AnnotationUseSiteTarget? = null): Boolean =
hasAnnotation("kotlin/jvm/JvmSynthetic", annotationUseSiteTarget)
@@ -30,7 +30,7 @@ internal fun KtAnnotatedSymbol.getJvmNameFromAnnotation(annotationUseSiteTarget:
}
return annotation?.let {
(it.arguments.firstOrNull()?.expression as? KtSimpleConstantValue<*>)?.value as? String
(it.arguments.firstOrNull()?.expression as? KtLiteralConstantValue<*>)?.value as? String
}
}
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.analysis.api.isValid
import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSimpleConstantValue
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtLiteralConstantValue
import org.jetbrains.kotlin.psi.KtDeclaration
internal class FirLightFieldForPropertySymbol(
@@ -101,7 +101,7 @@ internal class FirLightFieldForPropertySymbol(
if (propertySymbol !is KtKotlinPropertySymbol) return@lazyPub null
if (!propertySymbol.isConst) return@lazyPub null
if (!propertySymbol.isVal) return@lazyPub null
(propertySymbol.initializer as? KtSimpleConstantValue<*>)?.createPsiLiteral(this)
(propertySymbol.initializer as? KtLiteralConstantValue<*>)?.createPsiLiteral(this)
}
override fun getInitializer(): PsiExpression? = _initializer
@@ -199,9 +199,9 @@ internal fun KtConstantValue.toAnnotationMemberValue(parent: PsiElement): PsiAnn
private fun KtConstantValue.asStringForPsiLiteral(): String? =
when (this) {
is KtEnumEntryValue ->
is KtEnumEntryConstantValue ->
"${enumEntrySymbol.containingEnumClassIdIfNonLocal?.asSingleFqName()?.asString() ?: ""}.${enumEntrySymbol.name}"
is KtSimpleConstantValue<*> -> {
is KtLiteralConstantValue<*> -> {
when (val value = this.value) {
is String -> "\"${escapeString(value)}\""
is Long -> "${value}L"