K2. Minor. Rename FirConstExpression to FirLiteralExpression
FirConstExpression is usually confused with "constant" calculations, while in fact, it just denotes a simple literal expression and `1 + 1` isn't represented by a FirConstExpression. ^KT-64314 Fixed
This commit is contained in:
committed by
Space Team
parent
213967e25c
commit
53e89a9722
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.fir.caches.getValue
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
@@ -132,7 +132,7 @@ class FirJavaElementFinder(
|
||||
private fun FirFile.jvmName(): String {
|
||||
val jvmNameAnnotation = this.findJvmNameAnnotation()
|
||||
val jvmName = jvmNameAnnotation?.findArgumentByName(StandardNames.NAME)
|
||||
val jvmNameValue = (jvmName as? FirConstExpression<*>)?.value as? String
|
||||
val jvmNameValue = (jvmName as? FirLiteralExpression<*>)?.value as? String
|
||||
return jvmNameValue ?: (this.name.removeSuffix(".kt").capitalizeAsciiOnly() + "Kt")
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.expressions.FirArrayLiteral
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildArrayLiteral
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildErrorExpression
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.expectedConeType
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -77,31 +77,31 @@ internal fun Any?.createConstantOrError(session: FirSession, expectedTypeRef: Fi
|
||||
|
||||
internal fun Any?.createConstantIfAny(session: FirSession, unsigned: Boolean = false): FirExpression? {
|
||||
return when (this) {
|
||||
is Byte -> buildConstExpression(
|
||||
is Byte -> buildLiteralExpression(
|
||||
null, if (unsigned) ConstantValueKind.UnsignedByte else ConstantValueKind.Byte, this, setType = true
|
||||
)
|
||||
is Short -> buildConstExpression(
|
||||
is Short -> buildLiteralExpression(
|
||||
null, if (unsigned) ConstantValueKind.UnsignedShort else ConstantValueKind.Short, this, setType = true
|
||||
)
|
||||
is Int -> buildConstExpression(
|
||||
is Int -> buildLiteralExpression(
|
||||
null, if (unsigned) ConstantValueKind.UnsignedInt else ConstantValueKind.Int, this, setType = true
|
||||
)
|
||||
is Long -> buildConstExpression(
|
||||
is Long -> buildLiteralExpression(
|
||||
null, if (unsigned) ConstantValueKind.UnsignedLong else ConstantValueKind.Long, this, setType = true
|
||||
)
|
||||
is Char -> buildConstExpression(
|
||||
is Char -> buildLiteralExpression(
|
||||
null, ConstantValueKind.Char, this, setType = true
|
||||
)
|
||||
is Float -> buildConstExpression(
|
||||
is Float -> buildLiteralExpression(
|
||||
null, ConstantValueKind.Float, this, setType = true
|
||||
)
|
||||
is Double -> buildConstExpression(
|
||||
is Double -> buildLiteralExpression(
|
||||
null, ConstantValueKind.Double, this, setType = true
|
||||
)
|
||||
is Boolean -> buildConstExpression(
|
||||
is Boolean -> buildLiteralExpression(
|
||||
null, ConstantValueKind.Boolean, this, setType = true
|
||||
)
|
||||
is String -> buildConstExpression(
|
||||
is String -> buildLiteralExpression(
|
||||
null, ConstantValueKind.String, this, setType = true
|
||||
)
|
||||
is ByteArray -> toList().createArrayLiteral(session, ConstantValueKind.Byte)
|
||||
@@ -112,7 +112,7 @@ internal fun Any?.createConstantIfAny(session: FirSession, unsigned: Boolean = f
|
||||
is FloatArray -> toList().createArrayLiteral(session, ConstantValueKind.Float)
|
||||
is DoubleArray -> toList().createArrayLiteral(session, ConstantValueKind.Double)
|
||||
is BooleanArray -> toList().createArrayLiteral(session, ConstantValueKind.Boolean)
|
||||
null -> buildConstExpression(
|
||||
null -> buildLiteralExpression(
|
||||
null, ConstantValueKind.Null, null, setType = true
|
||||
)
|
||||
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.deserialization.AbstractAnnotationDeserializer
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation
|
||||
import org.jetbrains.kotlin.fir.java.createConstantIfAny
|
||||
@@ -216,7 +216,7 @@ class JvmBinaryAnnotationDeserializer(
|
||||
): FirExpression? {
|
||||
val signature = getCallableSignature(propertyProto, nameResolver, typeTable, CallableKind.PROPERTY_GETTER) ?: return null
|
||||
val firExpr = annotationInfo.annotationMethodsDefaultValues[signature]
|
||||
return if (firExpr is FirConstExpression<*> && expectedPropertyType.coneType.isUnsignedType && firExpr.kind.isSignedNumber)
|
||||
return if (firExpr is FirLiteralExpression<*> && expectedPropertyType.coneType.isUnsignedType && firExpr.kind.isSignedNumber)
|
||||
firExpr.value.createConstantIfAny(session, unsigned = true)
|
||||
else
|
||||
firExpr
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.unexpandedClassId
|
||||
import org.jetbrains.kotlin.fir.java.FirJavaTypeConversionMode
|
||||
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
|
||||
@@ -533,7 +533,7 @@ class FirSignatureEnhancement(
|
||||
private fun getPurelyImplementedSupertype(session: FirSession): ConeKotlinType? {
|
||||
val purelyImplementedClassIdFromAnnotation = owner.annotations
|
||||
.firstOrNull { it.unexpandedClassId?.asSingleFqName() == JvmAnnotationNames.PURELY_IMPLEMENTS_ANNOTATION }
|
||||
?.let { (it.argumentMapping.mapping.values.firstOrNull() as? FirConstExpression<*>) }
|
||||
?.let { (it.argumentMapping.mapping.values.firstOrNull() as? FirLiteralExpression<*>) }
|
||||
?.let { it.value as? String }
|
||||
?.takeIf { it.isNotBlank() && isValidJavaFqName(it) }
|
||||
?.let { ClassId.topLevel(FqName(it)) }
|
||||
|
||||
Reference in New Issue
Block a user