From 53e89a9722b4aa551c3cdc7cb2a29864a0f828be Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Fri, 12 Jan 2024 18:44:13 +0100 Subject: [PATCH] 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 --- .../evaluate/FirAnnotationValueConverter.kt | 4 +- .../FirCompileTimeConstantEvaluator.kt | 58 +++++++++---------- .../fir/file/structure/FirElementsRecorder.kt | 26 ++++----- .../lazy/resolve/FirLazyBodiesCalculator.kt | 2 +- .../StubBasedAnnotationDeserializer.kt | 6 +- .../StubBasedFirTypeDeserializer.kt | 4 +- .../annotationApplicationArgument.txt | 2 +- ...notationApplicationArgumentOnStatement.txt | 2 +- .../annotationApplicationArgumentScript.txt | 2 +- .../annotationApplicationVarargArgument.txt | 2 +- ...tationOnConstructorParameterExpression.txt | 2 +- ...OnConstructorParameterExpressionScript.txt | 2 +- .../getOrBuildFir/calls/callArgument.txt | 2 +- .../calls/callArgumentScript.txt | 2 +- ...ndexExpressionWithInc.out_of_src_roots.txt | 2 +- .../arrayIndexExpressionWithInc.txt | 2 +- .../arrayIndexExpressionWithIncScript.txt | 2 +- .../getOrBuildFir/expressions/assignment.txt | 2 +- .../getOrBuildFir/expressions/boolLiteral.txt | 2 +- .../expressions/boolLiteralScript.txt | 2 +- .../getOrBuildFir/expressions/intLiteral.txt | 2 +- .../expressions/intLiteralScript.txt | 2 +- .../intLiteral_minusOne_entire.txt | 2 +- .../intLiteral_minusOne_justOne.txt | 2 +- .../expressions/intLiteral_plusOne_entire.txt | 2 +- .../intLiteral_plusOne_justOne.txt | 2 +- .../expressions/stringLiteral.txt | 2 +- .../expressions/stringLiteralScript.txt | 2 +- .../kotlin/fir/checkers/generator/Main.kt | 2 +- .../FirJsExportDeclarationChecker.kt | 4 +- .../checkers/declaration/FirJvmNameChecker.kt | 4 +- .../checkers/FirNativeObjCNameChecker.kt | 10 +++- .../expression/FirJsQualifierChecker.kt | 4 +- .../expression/ComposedExpressionCheckers.kt | 8 +-- .../checkers/expression/ExpressionCheckers.kt | 4 +- .../expression/FirExpressionCheckerAliases.kt | 4 +- .../analysis/cfa/FirReturnsImpliesAnalyzer.kt | 4 +- .../fir/analysis/checkers/FirConstChecks.kt | 6 +- .../fir/analysis/checkers/FirHelpers.kt | 2 +- .../checkers/FirSinceKotlinHelpers.kt | 4 +- .../FirInlineDeclarationChecker.kt | 2 +- .../FirAnnotationExpressionChecker.kt | 6 +- .../expression/FirDivisionByZeroChecker.kt | 4 +- .../expression/FirOptInUsageBaseChecker.kt | 4 +- .../expression/FirWhenConditionChecker.kt | 2 +- .../checkers/extended/EmptyRangeChecker.kt | 6 +- .../RedundantCallOfConversionMethod.kt | 4 +- .../extended/RedundantExplicitTypeChecker.kt | 2 +- ...icateParameterNameInFunctionTypeChecker.kt | 4 +- .../collectors/AbstractDiagnosticCollector.kt | 4 +- .../ExpressionCheckersDiagnosticComponent.kt | 4 +- .../jetbrains/kotlin/fir/dump/HtmlFirDump.kt | 4 +- .../AbstractAnnotationDeserializer.kt | 4 +- .../deserialization/FirConstDeserializer.kt | 20 +++---- .../fir/serialization/FirElementSerializer.kt | 4 +- .../constant/FirToConstantValueTransformer.kt | 14 ++--- .../kotlin/fir/backend/ConversionUtils.kt | 4 +- .../fir/backend/Fir2IrImplicitCastInserter.kt | 2 +- .../Fir2IrIrGeneratedDeclarationsRegistrar.kt | 22 +++---- .../kotlin/fir/backend/Fir2IrVisitor.kt | 4 +- .../Fir2IrCallableDeclarationsGenerator.kt | 8 +-- .../kotlin/fir/lazy/Fir2IrLazyField.kt | 4 +- .../kotlin/fir/lazy/Fir2IrLazyProperty.kt | 4 +- .../kotlin/fir/java/FirJavaElementFinder.kt | 4 +- .../jetbrains/kotlin/fir/java/JavaUtils.kt | 22 +++---- .../JvmBinaryAnnotationDeserializer.kt | 4 +- .../java/enhancement/SignatureEnhancement.kt | 4 +- .../backend/native/interop/FirObjCInterop.kt | 4 +- .../src/org/jetbrains/kotlin/fir/CopyUtils.kt | 2 +- .../fir/declarations/FirAnnotationUtils.kt | 4 +- .../fir/declarations/deprecationUtils.kt | 4 +- .../kotlin/fir/resolve/LookupTagUtils.kt | 4 +- .../kotlin/fir/types/ConeTypeContext.kt | 2 +- .../fir/builder/AbstractRawFirBuilder.kt | 12 ++-- .../kotlin/fir/builder/ConversionUtils.kt | 2 +- .../jetbrains/kotlin/fir/FirCallResolver.kt | 2 +- .../kotlin/fir/resolve/ResolveUtils.kt | 2 +- .../fir/resolve/dfa/FirDataFlowAnalyzer.kt | 10 ++-- .../dfa/cfg/ControlFlowGraphBuilder.kt | 12 ++-- .../dfa/cfg/ControlFlowGraphNodeBuilder.kt | 2 +- ...rCallCompletionResultsWriterTransformer.kt | 12 ++-- .../FirWhenExhaustivenessTransformer.kt | 2 +- ...eralAndOperatorApproximationTransformer.kt | 15 +++-- ...bstractBodyResolveTransformerDispatcher.kt | 8 +-- .../FirExpressionsResolveTransformer.kt | 28 ++++----- .../contracts/ConeEffectExtractor.kt | 10 ++-- .../mpp/FirExpectActualMatchingContextImpl.kt | 2 +- .../kotlin/fir/resolve/dfa/cfg/CFGNode.kt | 2 +- .../resolve/diagnostics/ConeDiagnostics.kt | 4 +- ...tExpression.kt => FirLiteralExpression.kt} | 10 ++-- ...ionImpl.kt => FirLiteralExpressionImpl.kt} | 10 ++-- .../kotlin/fir/visitors/FirDefaultVisitor.kt | 4 +- .../fir/visitors/FirDefaultVisitorVoid.kt | 2 +- .../kotlin/fir/visitors/FirTransformer.kt | 8 +-- .../kotlin/fir/visitors/FirVisitor.kt | 4 +- .../kotlin/fir/visitors/FirVisitorVoid.kt | 8 +-- .../fir/expressions/FirExpressionUtil.kt | 4 +- .../builder/FirConstExpressionBuilder.kt | 10 ++-- .../kotlin/fir/renderer/FirRenderer.kt | 8 +-- .../kotlin/fir/types/FirTypeUtils.kt | 2 +- .../fir/tree/generator/BuilderConfigurator.kt | 2 +- .../fir/tree/generator/FirTreeBuilder.kt | 2 +- .../fir/tree/generator/NodeConfigurator.kt | 2 +- .../FirSerializationPluginClassChecker.kt | 2 +- .../lombok/k2/config/annotationUtils.kt | 2 +- 105 files changed, 300 insertions(+), 295 deletions(-) rename compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/{FirConstExpression.kt => FirLiteralExpression.kt} (85%) rename compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/{FirConstExpressionImpl.kt => FirLiteralExpressionImpl.kt} (89%) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt index cf58ea2e620..77d58701d78 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt @@ -42,7 +42,7 @@ internal object FirAnnotationValueConverter { ) } - private fun FirConstExpression.convertConstantExpression(): KtConstantAnnotationValue? { + private fun FirLiteralExpression.convertConstantExpression(): KtConstantAnnotationValue? { val expression = psi as? KtElement @OptIn(UnresolvedExpressionTypeAccess::class) @@ -98,7 +98,7 @@ internal object FirAnnotationValueConverter { private fun FirExpression.convertConstantExpression(builder: KtSymbolByFirBuilder): KtAnnotationValue? { val sourcePsi = psi as? KtElement return when (this) { - is FirConstExpression<*> -> convertConstantExpression() + is FirLiteralExpression<*> -> convertConstantExpression() is FirNamedArgumentExpression -> { expression.convertConstantExpression(builder) } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt index ee80dfd3aba..8f2d0d476af 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirCompileTimeConstantEvaluator.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isConst import org.jetbrains.kotlin.fir.declarations.utils.isFinal import org.jetbrains.kotlin.fir.declarations.utils.isStatic import org.jetbrains.kotlin.fir.expressions.* -import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression +import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.references.FirNamedReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference @@ -45,7 +45,7 @@ internal object FirCompileTimeConstantEvaluator { fun evaluate( fir: FirElement?, mode: KtConstantEvaluationMode, - ): FirConstExpression<*>? = + ): FirLiteralExpression<*>? = when (fir) { is FirPropertyAccessExpression -> { when (val referredVariable = fir.calleeReference.toResolvedVariableSymbol()) { @@ -53,14 +53,14 @@ internal object FirCompileTimeConstantEvaluator { if (referredVariable.callableId.isStringLength) { evaluate(fir.explicitReceiver, mode)?.evaluateStringLength() } else { - referredVariable.toConstExpression(mode) + referredVariable.toLiteralExpression(mode) } } - is FirFieldSymbol -> referredVariable.toConstExpression(mode) + is FirFieldSymbol -> referredVariable.toLiteralExpression(mode) else -> null } } - is FirConstExpression<*> -> { + is FirLiteralExpression<*> -> { fir.adaptToConstKind() } is FirFunctionCall -> { @@ -70,7 +70,7 @@ internal object FirCompileTimeConstantEvaluator { evaluateStringConcatenationCall(fir, mode) } is FirNamedReference -> { - fir.toResolvedPropertySymbol()?.toConstExpression(mode) + fir.toResolvedPropertySymbol()?.toLiteralExpression(mode) } else -> null } @@ -78,9 +78,9 @@ internal object FirCompileTimeConstantEvaluator { private val CallableId.isStringLength: Boolean get() = classId == StandardClassIds.String && callableName.identifierOrNullIfSpecial == "length" - private fun FirPropertySymbol.toConstExpression( + private fun FirPropertySymbol.toLiteralExpression( mode: KtConstantEvaluationMode, - ): FirConstExpression<*>? { + ): FirLiteralExpression<*>? { return when { mode == KtConstantEvaluationMode.CONSTANT_EXPRESSION_EVALUATION && !isConst -> null isVal && hasInitializer -> { @@ -92,9 +92,9 @@ internal object FirCompileTimeConstantEvaluator { } } - private fun FirFieldSymbol.toConstExpression( + private fun FirFieldSymbol.toLiteralExpression( mode: KtConstantEvaluationMode, - ): FirConstExpression<*>? { + ): FirLiteralExpression<*>? { return when { mode == KtConstantEvaluationMode.CONSTANT_EXPRESSION_EVALUATION && !(isStatic && isFinal) -> null isVal && hasInitializer -> { @@ -148,8 +148,8 @@ internal object FirCompileTimeConstantEvaluator { } } - private fun FirConstExpression<*>.adaptToConstKind(): FirConstExpression<*> { - return kind.toConstExpression( + private fun FirLiteralExpression<*>.adaptToConstKind(): FirLiteralExpression<*> { + return kind.toLiteralExpression( source, kind.convertToNumber(value as? Number) ?: value ) @@ -158,7 +158,7 @@ internal object FirCompileTimeConstantEvaluator { private fun evaluateStringConcatenationCall( stringConcatenationCall: FirStringConcatenationCall, mode: KtConstantEvaluationMode, - ): FirConstExpression? { + ): FirLiteralExpression? { val concatenated = buildString { for (arg in stringConcatenationCall.arguments) { val evaluated = evaluate(arg, mode) ?: return null @@ -166,13 +166,13 @@ internal object FirCompileTimeConstantEvaluator { } } - return ConstantValueKind.String.toConstExpression(stringConcatenationCall.source, concatenated) + return ConstantValueKind.String.toLiteralExpression(stringConcatenationCall.source, concatenated) } private fun evaluateFunctionCall( functionCall: FirFunctionCall, mode: KtConstantEvaluationMode, - ): FirConstExpression<*>? { + ): FirLiteralExpression<*>? { val function = functionCall.getOriginalFunction() as? FirSimpleFunction ?: return null val opr1 = evaluate(functionCall.explicitReceiver, mode) ?: return null @@ -188,7 +188,7 @@ internal object FirCompileTimeConstantEvaluator { return null } - private fun FirConstExpression<*>.adjustType(expectedType: ConeKotlinType): FirConstExpression<*> { + private fun FirLiteralExpression<*>.adjustType(expectedType: ConeKotlinType): FirLiteralExpression<*> { val expectedKind = expectedType.toConstantValueKind() // Note that the resolved type for the const expression is not always matched with the const kind. For example, // fun foo(x: Int) { @@ -200,7 +200,7 @@ internal object FirCompileTimeConstantEvaluator { val expression = if (expectedKind != null && expectedKind != kind && value is Number) { val typeAdjustedValue = expectedKind.convertToNumber(value as Number)!! - expectedKind.toConstExpression(source, typeAdjustedValue) + expectedKind.toLiteralExpression(source, typeAdjustedValue) } else { this } @@ -227,7 +227,7 @@ internal object FirCompileTimeConstantEvaluator { } // Unary operators - private fun FirConstExpression<*>.evaluate(function: FirSimpleFunction): FirConstExpression<*>? { + private fun FirLiteralExpression<*>.evaluate(function: FirSimpleFunction): FirLiteralExpression<*>? { if (value == null) return null (value as? String)?.let { opr -> evalUnaryOp( @@ -235,7 +235,7 @@ internal object FirCompileTimeConstantEvaluator { kind.toCompileTimeType(), opr )?.let { - return it.toConstantValueKind().toConstExpression(source, it) + return it.toConstantValueKind().toLiteralExpression(source, it) } } return kind.convertToNumber(value as? Number)?.let { opr -> @@ -244,22 +244,22 @@ internal object FirCompileTimeConstantEvaluator { kind.toCompileTimeType(), opr )?.let { - it.toConstantValueKind().toConstExpression(source, it) + it.toConstantValueKind().toLiteralExpression(source, it) } } } - private fun FirConstExpression<*>.evaluateStringLength(): FirConstExpression<*>? { + private fun FirLiteralExpression<*>.evaluateStringLength(): FirLiteralExpression<*>? { return (value as? String)?.length?.let { - it.toConstantValueKind().toConstExpression(source, it) + it.toConstantValueKind().toLiteralExpression(source, it) } } // Binary operators - private fun FirConstExpression<*>.evaluate( + private fun FirLiteralExpression<*>.evaluate( function: FirSimpleFunction, - other: FirConstExpression<*> - ): FirConstExpression<*>? { + other: FirLiteralExpression<*> + ): FirLiteralExpression<*>? { if (value == null || other.value == null) return null // NB: some utils accept very general types, and due to the way operation map works, we should up-cast rhs type. val rightType = when { @@ -276,7 +276,7 @@ internal object FirCompileTimeConstantEvaluator { rightType, opr2 )?.let { - return it.toConstantValueKind().toConstExpression(source, it) + return it.toConstantValueKind().toLiteralExpression(source, it) } } } @@ -289,7 +289,7 @@ internal object FirCompileTimeConstantEvaluator { other.kind.toCompileTimeType(), opr2 )?.let { - it.toConstantValueKind().toConstExpression(source, it) + it.toConstantValueKind().toLiteralExpression(source, it) } } } @@ -367,9 +367,9 @@ internal object FirCompileTimeConstantEvaluator { } } - private fun ConstantValueKind.toConstExpression(source: KtSourceElement?, value: Any?): FirConstExpression = + private fun ConstantValueKind.toLiteralExpression(source: KtSourceElement?, value: Any?): FirLiteralExpression = @Suppress("UNCHECKED_CAST") - buildConstExpression(source, this, value as T, setType = false) + buildLiteralExpression(source, this, value as T, setType = false) private fun FirFunctionCall.getOriginalFunction(): FirCallableDeclaration? { val symbol: FirBasedSymbol<*>? = when (val reference = calleeReference) { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FirElementsRecorder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FirElementsRecorder.kt index 70fbb47a676..f453c07b34b 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FirElementsRecorder.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FirElementsRecorder.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.builder.toFirOperationOrNull import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.expressions.* -import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression +import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.references.* import org.jetbrains.kotlin.fir.types.* @@ -77,16 +77,16 @@ internal open class FirElementsRecorder : FirVisitor visitConstExpression(constExpression: FirConstExpression, data: MutableMap) { - cacheElement(constExpression, data) - constExpression.annotations.forEach { + override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: MutableMap) { + cacheElement(literalExpression, data) + literalExpression.annotations.forEach { it.accept(this, data) } - // KtPrefixExpression(-, KtConstExpression(n)) is represented as FirConstExpression(-n) with converted constant value. - // If one queries FIR for KtConstExpression, we still return FirConstExpression(-n) even though its source is KtPrefixExpression. - // Here, we cache FirConstExpression(n) for KtConstExpression(n) to make everything natural and intuitive! - if (constExpression.isConverted) { - constExpression.kind.reverseConverted(constExpression)?.let { cacheElement(it, data) } + // KtPrefixExpression(-, KtConstExpression(n)) is represented as FirLiteralExpression(-n) with converted constant value. + // If one queries FIR for KtConstExpression, we still return FirLiteralExpression(-n) even though its source is KtPrefixExpression. + // Here, we cache FirLiteralExpression(n) for KtConstExpression(n) to make everything natural and intuitive! + if (literalExpression.isConverted) { + literalExpression.kind.reverseConverted(literalExpression)?.let { cacheElement(it, data) } } } @@ -192,19 +192,19 @@ internal open class FirElementsRecorder : FirVisitor.isConverted: Boolean + private val FirLiteralExpression<*>.isConverted: Boolean get() { val firSourcePsi = this.source?.psi ?: return false return firSourcePsi is KtPrefixExpression && firSourcePsi.operationToken == KtTokens.MINUS } - private val FirConstExpression<*>.ktConstantExpression: KtConstantExpression? + private val FirLiteralExpression<*>.ktConstantExpression: KtConstantExpression? get() { val firSourcePsi = this.source?.psi return firSourcePsi?.findDescendantOfType() } - private fun ConstantValueKind.reverseConverted(original: FirConstExpression): FirConstExpression? { + private fun ConstantValueKind.reverseConverted(original: FirLiteralExpression): FirLiteralExpression? { val value = original.value as? Number ?: return null val convertedValue = when (this) { ConstantValueKind.Byte -> value.toByte().unaryMinus() @@ -216,7 +216,7 @@ internal open class FirElementsRecorder : FirVisitor null } ?: return null @Suppress("UNCHECKED_CAST") - return buildConstExpression( + return buildLiteralExpression( original.ktConstantExpression?.toKtPsiSourceElement(), this, convertedValue as T, diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt index 45d25cf8baf..74c019a126c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt @@ -320,7 +320,7 @@ private fun rebindThisRef( oldTarget: FirPropertySymbol, canHavePropertySymbolAsThisReference: Boolean, ) { - if (expression is FirConstExpression<*>) return + if (expression is FirLiteralExpression<*>) return requireWithAttachment( expression is FirThisReceiverExpression, diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedAnnotationDeserializer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedAnnotationDeserializer.kt index 7dae6d8dfeb..5fca632a945 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedAnnotationDeserializer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedAnnotationDeserializer.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.collectEnumEntries 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.buildUnaryArgumentList import org.jetbrains.kotlin.fir.expressions.builder.* @@ -198,8 +198,8 @@ class StubBasedAnnotationDeserializer( value: T, typeRef: FirResolvedTypeRef, sourceElement: PsiElement - ): FirConstExpression { - return buildConstExpression( + ): FirLiteralExpression { + return buildLiteralExpression( KtRealPsiSourceElement(sourceElement), kind, value, diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedFirTypeDeserializer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedFirTypeDeserializer.kt index 6e84e8e97c9..d3753ad70fa 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedFirTypeDeserializer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/stubBased/deserialization/StubBasedFirTypeDeserializer.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationArgumentMapping -import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression +import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression import org.jetbrains.kotlin.fir.symbols.* import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol @@ -121,7 +121,7 @@ internal class StubBasedFirTypeDeserializer( } this.argumentMapping = buildAnnotationArgumentMapping { mapping[StandardNames.NAME] = - buildConstExpression(null, ConstantValueKind.String, paramName, setType = true) + buildLiteralExpression(null, ConstantValueKind.String, paramName, setType = true) } } } diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgument.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgument.txt index 1b2bfdd9cc4..c607eae6073 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgument.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgument.txt @@ -1,5 +1,5 @@ KT element: KtValueArgument -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentOnStatement.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentOnStatement.txt index 02ce98bdde6..ff15c70e4b2 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentOnStatement.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentOnStatement.txt @@ -1,5 +1,5 @@ KT element: KtValueArgument -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentScript.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentScript.txt index a452805fcc6..576ed768c4a 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentScript.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationArgumentScript.txt @@ -1,5 +1,5 @@ KT element: KtValueArgument -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationVarargArgument.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationVarargArgument.txt index 0d833353f92..8296063d086 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationVarargArgument.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/annotationApplicationVarargArgument.txt @@ -1,5 +1,5 @@ KT element: KtValueArgument -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpression.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpression.txt index 90025d1df45..2b36386bfb8 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpression.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpression.txt @@ -1,5 +1,5 @@ KT element: KtStringTemplateExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpressionScript.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpressionScript.txt index 6a7e9a05ff5..255d8352d2d 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpressionScript.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameterExpressionScript.txt @@ -1,5 +1,5 @@ KT element: KtStringTemplateExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgument.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgument.txt index 4bc2dfbb8b4..e1ad302007b 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgument.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgument.txt @@ -1,5 +1,5 @@ KT element: KtValueArgument -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgumentScript.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgumentScript.txt index 810a0f79d82..ed3c757c789 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgumentScript.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/callArgumentScript.txt @@ -1,5 +1,5 @@ KT element: KtValueArgument -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.out_of_src_roots.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.out_of_src_roots.txt index 23fae07d5c9..61fd8b0b6ba 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.out_of_src_roots.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.out_of_src_roots.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.txt index 99d73a18c4c..4ae62cd4616 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithInc.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithIncScript.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithIncScript.txt index cc0c3a4f1b1..a670955bec6 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithIncScript.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/arrayIndexExpressionWithIncScript.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/assignment.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/assignment.txt index 424c33670c6..247156caafd 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/assignment.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/assignment.txt @@ -1,5 +1,5 @@ KT element: KtStringTemplateExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteral.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteral.txt index d39b8791e40..02ad7b5dd6f 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteral.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteral.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteralScript.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteralScript.txt index a4b4c7e3b05..a82f89add92 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteralScript.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/boolLiteralScript.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral.txt index 26cfea7beaa..e715b8f77be 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteralScript.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteralScript.txt index eb4a5fc6458..8bb88d04b38 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteralScript.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteralScript.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_entire.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_entire.txt index a788d4436df..2944c89c0a3 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_entire.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_entire.txt @@ -1,5 +1,5 @@ KT element: KtPrefixExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_justOne.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_justOne.txt index 659192a1439..f2dabb6c81f 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_justOne.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_minusOne_justOne.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_entire.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_entire.txt index 78803b3be0b..54e914b3dfc 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_entire.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_entire.txt @@ -1,5 +1,5 @@ KT element: KtPrefixExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_justOne.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_justOne.txt index 4d7332fced6..e6ec7d137c3 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_justOne.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/intLiteral_plusOne_justOne.txt @@ -1,5 +1,5 @@ KT element: KtConstantExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteral.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteral.txt index c9173c0363a..55c3d94af53 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteral.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteral.txt @@ -1,5 +1,5 @@ KT element: KtStringTemplateExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteralScript.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteralScript.txt index 8bb85d08ffd..1a85d7b92ab 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteralScript.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/expressions/stringLiteralScript.txt @@ -1,5 +1,5 @@ KT element: KtStringTemplateExpression -FIR element: FirConstExpressionImpl +FIR element: FirLiteralExpressionImpl FIR source kind: KtRealSourceElementKind FIR element rendered: diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt index 56ee093a169..ff3820243e9 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/Main.kt @@ -56,7 +56,7 @@ fun main(args: Array) { alias("StringConcatenationCallChecker") alias("TypeOperatorCallChecker") alias("ResolvedQualifierChecker") - alias>("ConstExpressionChecker") + alias>("LiteralExpressionChecker") alias("CallableReferenceAccessChecker") alias("ThisReceiverExpressionChecker") alias("WhileLoopChecker") diff --git a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsExportDeclarationChecker.kt b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsExportDeclarationChecker.kt index 3faf498336b..f7a09055f9a 100644 --- a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsExportDeclarationChecker.kt +++ b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsExportDeclarationChecker.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.analysis.js.checkers.isExportedObject import org.jetbrains.kotlin.fir.analysis.js.checkers.sanitizeName import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.* -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.isEnumEntries import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol @@ -242,7 +242,7 @@ object FirJsExportDeclarationChecker : FirBasicDeclarationChecker(MppCheckerKind val jsNameArgument = declaration.symbol.getAnnotationFirstArgument(JsStandardClassIds.Annotations.JsName, context.session) val reportTarget = jsNameArgument?.source ?: declaration.source - val name = (jsNameArgument as? FirConstExpression<*>)?.value as? String ?: declaration.nameOrSpecialName.asString() + val name = (jsNameArgument as? FirLiteralExpression<*>)?.value as? String ?: declaration.nameOrSpecialName.asString() if (name in SPECIAL_KEYWORDS || (name !in RESERVED_KEYWORDS && sanitizeName(name) == name)) { return diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmNameChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmNameChecker.kt index 57052bacb52..8e26c92e4e0 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmNameChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmNameChecker.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.isInline import org.jetbrains.kotlin.fir.declarations.utils.isOverridable import org.jetbrains.kotlin.fir.declarations.utils.isOverride -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.java.findJvmNameAnnotation import org.jetbrains.kotlin.fir.resolve.getContainingClass import org.jetbrains.kotlin.fir.types.resolvedType @@ -34,7 +34,7 @@ object FirJvmNameChecker : FirBasicDeclarationChecker(MppCheckerKind.Common) { return } - val value = (name as? FirConstExpression<*>)?.value as? String ?: return + val value = (name as? FirLiteralExpression<*>)?.value as? String ?: return if (!Name.isValidIdentifier(value)) { reporter.reportOn(jvmName.source, FirJvmErrors.ILLEGAL_JVM_NAME, context) diff --git a/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt b/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt index b8154e33d32..4633eb16c8e 100644 --- a/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt +++ b/compiler/fir/checkers/checkers.native/src/org/jetbrains/kotlin/fir/analysis/native/checkers/FirNativeObjCNameChecker.kt @@ -26,7 +26,13 @@ import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.utils.isOverride -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirAnnotation +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression +import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name object FirNativeObjCNameChecker : FirBasicDeclarationChecker(MppCheckerKind.Common) { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { @@ -48,7 +54,7 @@ object FirNativeObjCNameChecker : FirBasicDeclarationChecker(MppCheckerKind.Comm private fun checkObjCName(objCName: ObjCName, declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { val annotationSource = objCName.annotation.source for ((_, argument) in objCName.annotation.argumentMapping.mapping) { - if (argument is FirConstExpression<*>) continue + if (argument is FirLiteralExpression<*>) continue reporter.reportOn(argument.source, NON_LITERAL_OBJC_NAME_ARG, context) } if (objCName.name == null && objCName.swiftName == null) { diff --git a/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/expression/FirJsQualifierChecker.kt b/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/expression/FirJsQualifierChecker.kt index 20d33306bbd..1f9638888b0 100644 --- a/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/expression/FirJsQualifierChecker.kt +++ b/compiler/fir/checkers/checkers.web.common/src/org/jetbrains/kotlin/fir/analysis/web/common/checkers/expression/FirJsQualifierChecker.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallCh import org.jetbrains.kotlin.fir.analysis.diagnostics.web.common.FirWebCommonErrors import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.js.validateQualifier import org.jetbrains.kotlin.name.WebCommonStandardClassIds.Annotations.JsQualifier @@ -23,7 +23,7 @@ object FirJsQualifierChecker : FirAnnotationCallChecker(MppCheckerKind.Common) { return } - val string = (expression.argumentMapping.mapping.values.firstOrNull() as? FirConstExpression<*>)?.value as? String ?: return + val string = (expression.argumentMapping.mapping.values.firstOrNull() as? FirLiteralExpression<*>)?.value as? String ?: return if (!validateQualifier(string)) { reporter.reportOn(expression.argumentList.arguments.first().source, FirWebCommonErrors.WRONG_JS_QUALIFIER, context) diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt index ff4056866d9..f75e4347c55 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ComposedExpressionCheckers.kt @@ -65,8 +65,8 @@ class ComposedExpressionCheckers(val predicate: (FirCheckerWithMppKind) -> Boole get() = _typeOperatorCallCheckers override val resolvedQualifierCheckers: Set get() = _resolvedQualifierCheckers - override val constExpressionCheckers: Set - get() = _constExpressionCheckers + override val literalExpressionCheckers: Set + get() = _literalExpressionCheckers override val callableReferenceAccessCheckers: Set get() = _callableReferenceAccessCheckers override val thisReceiverExpressionCheckers: Set @@ -108,7 +108,7 @@ class ComposedExpressionCheckers(val predicate: (FirCheckerWithMppKind) -> Boole private val _stringConcatenationCallCheckers: MutableSet = mutableSetOf() private val _typeOperatorCallCheckers: MutableSet = mutableSetOf() private val _resolvedQualifierCheckers: MutableSet = mutableSetOf() - private val _constExpressionCheckers: MutableSet = mutableSetOf() + private val _literalExpressionCheckers: MutableSet = mutableSetOf() private val _callableReferenceAccessCheckers: MutableSet = mutableSetOf() private val _thisReceiverExpressionCheckers: MutableSet = mutableSetOf() private val _whileLoopCheckers: MutableSet = mutableSetOf() @@ -144,7 +144,7 @@ class ComposedExpressionCheckers(val predicate: (FirCheckerWithMppKind) -> Boole checkers.stringConcatenationCallCheckers.filterTo(_stringConcatenationCallCheckers, predicate) checkers.typeOperatorCallCheckers.filterTo(_typeOperatorCallCheckers, predicate) checkers.resolvedQualifierCheckers.filterTo(_resolvedQualifierCheckers, predicate) - checkers.constExpressionCheckers.filterTo(_constExpressionCheckers, predicate) + checkers.literalExpressionCheckers.filterTo(_literalExpressionCheckers, predicate) checkers.callableReferenceAccessCheckers.filterTo(_callableReferenceAccessCheckers, predicate) checkers.thisReceiverExpressionCheckers.filterTo(_thisReceiverExpressionCheckers, predicate) checkers.whileLoopCheckers.filterTo(_whileLoopCheckers, predicate) diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt index 49f5c25d54f..839c6916261 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/ExpressionCheckers.kt @@ -41,7 +41,7 @@ abstract class ExpressionCheckers { open val stringConcatenationCallCheckers: Set = emptySet() open val typeOperatorCallCheckers: Set = emptySet() open val resolvedQualifierCheckers: Set = emptySet() - open val constExpressionCheckers: Set = emptySet() + open val literalExpressionCheckers: Set = emptySet() open val callableReferenceAccessCheckers: Set = emptySet() open val thisReceiverExpressionCheckers: Set = emptySet() open val whileLoopCheckers: Set = emptySet() @@ -75,7 +75,7 @@ abstract class ExpressionCheckers { @CheckersComponentInternal internal val allStringConcatenationCallCheckers: Set by lazy { stringConcatenationCallCheckers + basicExpressionCheckers + callCheckers } @CheckersComponentInternal internal val allTypeOperatorCallCheckers: Set by lazy { typeOperatorCallCheckers + basicExpressionCheckers + callCheckers } @CheckersComponentInternal internal val allResolvedQualifierCheckers: Set by lazy { resolvedQualifierCheckers + basicExpressionCheckers } - @CheckersComponentInternal internal val allConstExpressionCheckers: Set by lazy { constExpressionCheckers + basicExpressionCheckers } + @CheckersComponentInternal internal val allLiteralExpressionCheckers: Set by lazy { literalExpressionCheckers + basicExpressionCheckers } @CheckersComponentInternal internal val allCallableReferenceAccessCheckers: Set by lazy { callableReferenceAccessCheckers + qualifiedAccessExpressionCheckers + basicExpressionCheckers } @CheckersComponentInternal internal val allThisReceiverExpressionCheckers: Set by lazy { thisReceiverExpressionCheckers + qualifiedAccessExpressionCheckers + basicExpressionCheckers } @CheckersComponentInternal internal val allWhileLoopCheckers: Set by lazy { whileLoopCheckers + loopExpressionCheckers + basicExpressionCheckers } diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt index f4af4f90f38..69b0033df4b 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirExpressionCheckerAliases.kt @@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.expressions.FirCall import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess import org.jetbrains.kotlin.fir.expressions.FirCheckNotNullCall import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression -import org.jetbrains.kotlin.fir.expressions.FirConstExpression import org.jetbrains.kotlin.fir.expressions.FirDoWhileLoop import org.jetbrains.kotlin.fir.expressions.FirElvisExpression import org.jetbrains.kotlin.fir.expressions.FirEqualityOperatorCall @@ -27,6 +26,7 @@ import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirGetClassCall import org.jetbrains.kotlin.fir.expressions.FirInaccessibleReceiverExpression import org.jetbrains.kotlin.fir.expressions.FirIntegerLiteralOperatorCall +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.expressions.FirLoop import org.jetbrains.kotlin.fir.expressions.FirLoopJump import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression @@ -68,7 +68,7 @@ typealias FirEqualityOperatorCallChecker = FirExpressionChecker typealias FirTypeOperatorCallChecker = FirExpressionChecker typealias FirResolvedQualifierChecker = FirExpressionChecker -typealias FirConstExpressionChecker = FirExpressionChecker> +typealias FirLiteralExpressionChecker = FirExpressionChecker> typealias FirCallableReferenceAccessChecker = FirExpressionChecker typealias FirThisReceiverExpressionChecker = FirExpressionChecker typealias FirWhileLoopChecker = FirExpressionChecker diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirReturnsImpliesAnalyzer.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirReturnsImpliesAnalyzer.kt index f7d03451e14..bcabe7f693f 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirReturnsImpliesAnalyzer.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirReturnsImpliesAnalyzer.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.contracts.effects import org.jetbrains.kotlin.fir.declarations.FirContractDescriptionOwner import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirProperty -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.FirReturnExpression import org.jetbrains.kotlin.fir.expressions.FirWhenExpression @@ -111,7 +111,7 @@ object FirReturnsImpliesAnalyzer : FirControlFlowChecker(MppCheckerKind.Common) var flow = node.flow val operation = effect.value.toOperation() if (operation != null) { - if (resultExpression is FirConstExpression<*>) { + if (resultExpression is FirLiteralExpression<*>) { if (!operation.isTrueFor(resultExpression.value)) return false } else { if (expressionType != null && !operation.canBeTrueFor(context.session, expressionType)) return false diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt index 6ed8dad275b..c4f03fd66ec 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt @@ -119,7 +119,7 @@ private class FirConstCheckVisitor(private val session: FirSession) : FirVisitor return if (intrinsicConstEvaluation) ConstantArgumentKind.VALID_CONST else ConstantArgumentKind.NOT_CONST } - override fun visitConstExpression(constExpression: FirConstExpression, data: Nothing?): ConstantArgumentKind { + override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: Nothing?): ConstantArgumentKind { return ConstantArgumentKind.VALID_CONST } @@ -143,7 +143,7 @@ private class FirConstCheckVisitor(private val session: FirSession) : FirVisitor } for (exp in equalityOperatorCall.arguments) { - if (exp is FirConstExpression<*> && exp.value == null) { + if (exp is FirLiteralExpression<*> && exp.value == null) { return ConstantArgumentKind.NOT_CONST } @@ -219,7 +219,7 @@ private class FirConstCheckVisitor(private val session: FirSession) : FirVisitor // Ok, because we only look at the structure, not resolution-dependent properties. @OptIn(SymbolInternals::class) return when (propertySymbol.fir.initializer) { - is FirConstExpression<*> -> when { + is FirLiteralExpression<*> -> when { propertySymbol.isVal -> ConstantArgumentKind.NOT_CONST_VAL_IN_CONST_EXPRESSION else -> ConstantArgumentKind.NOT_CONST } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt index 62744643015..6c358059a6b 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt @@ -792,7 +792,7 @@ fun FirBasedSymbol<*>.getAnnotationFirstArgument(classId: ClassId, session: FirS } fun FirBasedSymbol<*>.getAnnotationStringParameter(classId: ClassId, session: FirSession): String? { - val expression = getAnnotationFirstArgument(classId, session) as? FirConstExpression<*> + val expression = getAnnotationFirstArgument(classId, session) as? FirLiteralExpression<*> return expression?.value as? String } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirSinceKotlinHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirSinceKotlinHelpers.kt index 3708603893e..fe12247b337 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirSinceKotlinHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirSinceKotlinHelpers.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.name.StandardClassIds @@ -56,7 +56,7 @@ private fun FirDeclaration.getOwnSinceKotlinVersion(session: FirSession): FirSin val sinceKotlinSingleArgument = getAnnotationByClassId(StandardClassIds.Annotations.SinceKotlin, session)?.findArgumentByName( StandardClassIds.Annotations.ParameterNames.sinceKotlinVersion ) - val apiVersion = ((sinceKotlinSingleArgument as? FirConstExpression<*>)?.value as? String)?.let(ApiVersion.Companion::parse) + val apiVersion = ((sinceKotlinSingleArgument as? FirLiteralExpression<*>)?.value as? String)?.let(ApiVersion.Companion::parse) return if (apiVersion != null) { FirSinceKotlinValue(apiVersion, loadWasExperimentalMarkerClasses(session)) } else null diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt index 7d21eb975c5..478e386198b 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInlineDeclarationChecker.kt @@ -456,7 +456,7 @@ object FirInlineDeclarationChecker : FirFunctionChecker(MppCheckerKind.Common) { expression is FirFunctionCall || expression is FirLambdaArgumentExpression || expression is FirAnonymousFunctionExpression || - (expression is FirConstExpression<*> && expression.value == null) //this will be reported separately + (expression is FirLiteralExpression<*> && expression.value == null) //this will be reported separately fun checkCallableDeclaration(declaration: FirCallableDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { if (declaration is FirPropertyAccessor) return diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationExpressionChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationExpressionChecker.kt index 5c45f3960ba..9f02c02b42d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationExpressionChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationExpressionChecker.kt @@ -123,8 +123,8 @@ object FirAnnotationExpressionChecker : FirAnnotationCallChecker(MppCheckerKind. context: CheckerContext, reporter: DiagnosticReporter ): ApiVersion? { - val constantExpression = (expression as? FirConstExpression<*>) - ?: ((expression as? FirNamedArgumentExpression)?.expression as? FirConstExpression<*>) ?: return null + val constantExpression = (expression as? FirLiteralExpression<*>) + ?: ((expression as? FirNamedArgumentExpression)?.expression as? FirLiteralExpression<*>) ?: return null val stringValue = constantExpression.value as? String ?: return null if (!stringValue.matches(RequireKotlinConstants.VERSION_REGEX)) { reporter.reportOn(expression.source, FirErrors.ILLEGAL_KOTLIN_VERSION_STRING_VALUE, context) @@ -242,7 +242,7 @@ object FirAnnotationExpressionChecker : FirAnnotationCallChecker(MppCheckerKind. if (annotationClassId != StandardClassIds.Annotations.Suppress) return val nameExpressions = argumentMapping[StandardClassIds.Annotations.ParameterNames.suppressNames]?.unwrapVarargValue() ?: return for (nameExpression in nameExpressions) { - val name = (nameExpression as? FirConstExpression<*>)?.value as? String ?: continue + val name = (nameExpression as? FirLiteralExpression<*>)?.value as? String ?: continue val parameter = when (name) { in FIR_NON_SUPPRESSIBLE_ERROR_NAMES -> name AbstractDiagnosticCollector.SUPPRESS_ALL_ERRORS -> "all errors" diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDivisionByZeroChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDivisionByZeroChecker.kt index 63cf8ced836..8593e3f831c 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDivisionByZeroChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDivisionByZeroChecker.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.arguments import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol @@ -22,7 +22,7 @@ object FirDivisionByZeroChecker : FirFunctionCallChecker(MppCheckerKind.Common) private val defaultDivName = Name.identifier("div") override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) { - val firstValue = (expression.arguments.singleOrNull() as? FirConstExpression<*>)?.value + val firstValue = (expression.arguments.singleOrNull() as? FirLiteralExpression<*>)?.value if (firstValue != null && (firstValue == 0L || firstValue == 0.0f || firstValue == 0.0)) { val callableId = (expression.calleeReference.toResolvedNamedFunctionSymbol())?.callableId if (callableId != null && callableId.packageName == defaultPackageName && callableId.callableName == defaultDivName) { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt index 80d6c2097ba..15b4e32e26f 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.correspondingValueParameterFromPrimaryConstructor import org.jetbrains.kotlin.fir.declarations.utils.isData import org.jetbrains.kotlin.fir.declarations.utils.nameOrSpecialName -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.expressions.toReference import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirNamedReference @@ -281,7 +281,7 @@ object FirOptInUsageBaseChecker { val levelName = levelArgument?.extractEnumValueArgumentInfo()?.enumEntryName?.asString() val severity = Experimentality.Severity.entries.firstOrNull { it.name == levelName } ?: Experimentality.DEFAULT_SEVERITY - val message = (experimental.findArgumentByName(MESSAGE) as? FirConstExpression<*>)?.value as? String + val message = (experimental.findArgumentByName(MESSAGE) as? FirLiteralExpression<*>)?.value as? String return Experimentality(symbol.classId, severity, message, annotatedOwnerClassName) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirWhenConditionChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirWhenConditionChecker.kt index e57494a27bc..dd454694bc4 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirWhenConditionChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirWhenConditionChecker.kt @@ -42,7 +42,7 @@ object FirWhenConditionChecker : FirWhenExpressionChecker(MppCheckerKind.Common) val arguments = condition.arguments if (arguments.size == 2 && arguments[0].unwrapSmartcastExpression() is FirWhenSubjectExpression) { val value = when (val targetExpression = arguments[1]) { - is FirConstExpression<*> -> targetExpression.value + is FirLiteralExpression<*> -> targetExpression.value is FirQualifiedAccessExpression -> targetExpression.calleeReference.toResolvedCallableSymbol() as? FirEnumEntrySymbol ?: continue is FirResolvedQualifier -> { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/EmptyRangeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/EmptyRangeChecker.kt index d70ed4a2c67..5e726d3a801 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/EmptyRangeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/EmptyRangeChecker.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.expressions.FirFunctionCall object EmptyRangeChecker : FirFunctionCallChecker(MppCheckerKind.Common) { @@ -41,12 +41,12 @@ object EmptyRangeChecker : FirFunctionCallChecker(MppCheckerKind.Common) { private val FirFunctionCall.rangeLeft: Long? get() { - return (explicitReceiver as? FirConstExpression<*>)?.value as? Long + return (explicitReceiver as? FirLiteralExpression<*>)?.value as? Long } private val FirFunctionCall.rangeRight: Long? get() { - val arg = argumentList.arguments.getOrNull(0) as? FirConstExpression<*> + val arg = argumentList.arguments.getOrNull(0) as? FirLiteralExpression<*> return arg?.value as? Long } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantCallOfConversionMethod.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantCallOfConversionMethod.kt index ed4bd749a03..b0c437a97da 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantCallOfConversionMethod.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantCallOfConversionMethod.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirQualifiedAccessExpressionChecker import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors -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.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression @@ -38,7 +38,7 @@ object RedundantCallOfConversionMethod : FirQualifiedAccessExpressionChecker(Mpp } private fun FirExpression.isRedundant(qualifiedClassId: ClassId, session: FirSession): Boolean { - val thisType = if (this is FirConstExpression<*>) { + val thisType = if (this is FirLiteralExpression<*>) { this.resolvedType.classId } else { when { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt index 7513d034b3e..3238d62f8c1 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/RedundantExplicitTypeChecker.kt @@ -38,7 +38,7 @@ object RedundantExplicitTypeChecker : FirPropertyChecker(MppCheckerKind.Common) if (typeReference.annotations.isNotEmpty()) return when (initializer) { - is FirConstExpression<*> -> { + is FirLiteralExpression<*> -> { when (initializer.source?.elementType) { KtNodeTypes.BOOLEAN_CONSTANT -> { if (!type.isSame(StandardClassIds.Boolean)) return diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDuplicateParameterNameInFunctionTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDuplicateParameterNameInFunctionTypeChecker.kt index 3b41c7ab506..8fc389b22e0 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDuplicateParameterNameInFunctionTypeChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDuplicateParameterNameInFunctionTypeChecker.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.customAnnotations @@ -26,7 +26,7 @@ object FirDuplicateParameterNameInFunctionTypeChecker : FirTypeRefChecker(MppChe val type = it.type ?: return@groupBy null val annotation = type.customAnnotations.getAnnotationByClassId(StandardNames.FqNames.parameterNameClassId, context.session) val nameEntry = annotation?.argumentMapping?.mapping?.get(StandardNames.NAME) - (nameEntry as? FirConstExpression<*>)?.value as? String + (nameEntry as? FirLiteralExpression<*>)?.value as? String } for ((name, projections) in nameToArgumentProjection) { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt index 6d64631bebb..b40b147af15 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollector.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.findArgumentByName import org.jetbrains.kotlin.fir.declarations.unwrapVarargValue -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.SessionHolder import org.jetbrains.kotlin.fir.symbols.lazyDeclarationResolver @@ -60,7 +60,7 @@ abstract class AbstractDiagnosticCollector( ?: continue for (argumentValue in argumentValues) { - val value = (argumentValue as? FirConstExpression<*>)?.value as? String ?: continue + val value = (argumentValue as? FirLiteralExpression<*>)?.value as? String ?: continue if (result == null) { result = mutableListOf() diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt index 2997603a830..1f1a8e93690 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/components/ExpressionCheckersDiagnosticComponent.kt @@ -46,8 +46,8 @@ class ExpressionCheckersDiagnosticComponent( checkers.allTypeOperatorCallCheckers.check(typeOperatorCall, data) } - override fun visitConstExpression(constExpression: FirConstExpression, data: CheckerContext) { - checkers.allConstExpressionCheckers.check(constExpression, data) + override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: CheckerContext) { + checkers.allLiteralExpressionCheckers.check(literalExpression, data) } override fun visitAnnotation(annotation: FirAnnotation, data: CheckerContext) { diff --git a/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt b/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt index 1c82b9a7684..0734bc5608b 100644 --- a/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt +++ b/compiler/fir/dump/src/org/jetbrains/kotlin/fir/dump/HtmlFirDump.kt @@ -759,7 +759,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver } } - private fun FlowContent.generate(expression: FirConstExpression<*>) { + private fun FlowContent.generate(expression: FirLiteralExpression<*>) { val value = expression.value if (value == null && expression.kind != ConstantValueKind.Null) { return error { @@ -1545,7 +1545,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver is FirElseIfTrueCondition -> generate(expression) is FirWhenExpression -> generate(expression, isStatement = false) is FirTryExpression -> generate(expression, isStatement = false) - is FirConstExpression<*> -> generate(expression) + is FirLiteralExpression<*> -> generate(expression) is FirReturnExpression -> { span("return-label") { symbolRef(expression.target.labeledElement.symbol) { diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/AbstractAnnotationDeserializer.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/AbstractAnnotationDeserializer.kt index 46893c37f53..a550dd8af48 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/AbstractAnnotationDeserializer.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/AbstractAnnotationDeserializer.kt @@ -298,7 +298,7 @@ abstract class AbstractAnnotationDeserializer( } } - private fun const(kind: ConstantValueKind, value: T, typeRef: FirResolvedTypeRef): FirConstExpression { - return buildConstExpression(null, kind, value, setType = true).apply { this.replaceConeTypeOrNull(typeRef.coneType) } + private fun const(kind: ConstantValueKind, value: T, typeRef: FirResolvedTypeRef): FirLiteralExpression { + return buildLiteralExpression(null, kind, value, setType = true).apply { this.replaceConeTypeOrNull(typeRef.coneType) } } } diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirConstDeserializer.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirConstDeserializer.kt index 3d1b7df65b8..afb3c0c7c1b 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirConstDeserializer.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirConstDeserializer.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.deserialization import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirExpression -import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression +import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.Flags import org.jetbrains.kotlin.metadata.deserialization.NameResolver @@ -35,31 +35,31 @@ fun buildFirConstant( protoValue: ProtoBuf.Annotation.Argument.Value?, sourceValue: Any?, constKind: String, nameResolver: NameResolver ): FirExpression? { return when (constKind) { - "BYTE", "B" -> buildConstExpression( + "BYTE", "B" -> buildLiteralExpression( null, ConstantValueKind.Byte, ((protoValue?.intValue ?: sourceValue) as Number).toByte(), setType = true ) - "CHAR", "C" -> buildConstExpression( + "CHAR", "C" -> buildLiteralExpression( null, ConstantValueKind.Char, ((protoValue?.intValue ?: sourceValue) as Number).toInt().toChar(), setType = true ) - "SHORT", "S" -> buildConstExpression( + "SHORT", "S" -> buildLiteralExpression( null, ConstantValueKind.Short, ((protoValue?.intValue ?: sourceValue) as Number).toShort(), setType = true ) - "INT", "I" -> buildConstExpression( + "INT", "I" -> buildLiteralExpression( null, ConstantValueKind.Int, protoValue?.intValue?.toInt() ?: sourceValue as Int, setType = true ) - "LONG", "J" -> buildConstExpression( + "LONG", "J" -> buildLiteralExpression( null, ConstantValueKind.Long, protoValue?.intValue ?: sourceValue as Long, setType = true ) - "FLOAT", "F" -> buildConstExpression( + "FLOAT", "F" -> buildLiteralExpression( null, ConstantValueKind.Float, protoValue?.floatValue ?: sourceValue as Float, setType = true ) - "DOUBLE", "D" -> buildConstExpression( + "DOUBLE", "D" -> buildLiteralExpression( null, ConstantValueKind.Double, protoValue?.doubleValue ?: sourceValue as Double, setType = true ) - "BOOLEAN", "Z" -> buildConstExpression( + "BOOLEAN", "Z" -> buildLiteralExpression( null, ConstantValueKind.Boolean, (protoValue?.intValue?.toInt() ?: sourceValue) != 0, setType = true ) - "STRING", "Ljava/lang/String;" -> buildConstExpression( + "STRING", "Ljava/lang/String;" -> buildLiteralExpression( null, ConstantValueKind.String, protoValue?.stringValue?.let { nameResolver.getString(it) } ?: sourceValue as String, setType = true ) diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt index 5e288bafb2a..3c522e64f0a 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.fir.deserialization.projection import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationArgumentMapping -import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression +import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyAnnotationArgumentMapping import org.jetbrains.kotlin.fir.extensions.FirExtensionApiInternals import org.jetbrains.kotlin.fir.extensions.extensionService @@ -938,7 +938,7 @@ class FirElementSerializer private constructor( correspondingTypeRef?.annotations, CompilerConeAttributes.ContextFunctionTypeParams.ANNOTATION_CLASS_ID, argumentMapping = buildAnnotationArgumentMapping { this.mapping[StandardNames.CONTEXT_FUNCTION_TYPE_PARAMETER_COUNT_NAME] = - buildConstExpression( + buildLiteralExpression( source = null, ConstantValueKind.Int, type.contextReceiversNumberForFunctionType, setType = false ) } diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt index e2393bcce89..aa2e45bcb4a 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt @@ -60,12 +60,12 @@ internal object FirToConstantValueTransformer : FirDefaultVisitor ${element.render()}") } - override fun visitConstExpression( - constExpression: FirConstExpression, + override fun visitLiteralExpression( + literalExpression: FirLiteralExpression, data: FirToConstantValueTransformerData ): ConstantValue<*>? { - val value = constExpression.value - return when (constExpression.kind) { + val value = literalExpression.value + return when (literalExpression.kind) { ConstantValueKind.Boolean -> BooleanValue(value as Boolean) ConstantValueKind.Char -> CharValue(value as Char) ConstantValueKind.Byte -> ByteValue((value as Number).toByte()) @@ -250,11 +250,11 @@ internal object FirToConstantValueChecker : FirDefaultVisitor visitConstExpression( - constExpression: FirConstExpression, + override fun visitLiteralExpression( + literalExpression: FirLiteralExpression, data: FirSession ): Boolean { - return constExpression.kind in supportedConstKinds + return literalExpression.kind in supportedConstKinds } override fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: FirSession): Boolean { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index bce82b01bed..a3a01754728 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -333,7 +333,7 @@ fun FirCallableSymbol<*>.toSymbolForCall( } } -fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) { +fun FirLiteralExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) { ConstantValueKind.IntegerLiteral, ConstantValueKind.UnsignedIntegerLiteral -> { val type = resolvedType as ConeIntegerLiteralType type.getApproximatedType().toConstKind()!!.toIrConstKind() @@ -342,7 +342,7 @@ fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) { else -> kind.toIrConstKind() } -fun FirConstExpression.toIrConst(irType: IrType): IrConst { +fun FirLiteralExpression.toIrConst(irType: IrType): IrConst { return convertWithOffsets { startOffset, endOffset -> @Suppress("UNCHECKED_CAST") val kind = getIrConstKind() as IrConstKind diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt index 54b9d15e671..a5d73efa452 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt @@ -62,7 +62,7 @@ class Fir2IrImplicitCastInserter( override fun visitEqualityOperatorCall(equalityOperatorCall: FirEqualityOperatorCall, data: IrElement): IrElement = data - override fun visitConstExpression(constExpression: FirConstExpression, data: IrElement): IrElement = data + override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: IrElement): IrElement = data override fun visitThisReceiverExpression(thisReceiverExpression: FirThisReceiverExpression, data: IrElement): IrElement = data diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrIrGeneratedDeclarationsRegistrar.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrIrGeneratedDeclarationsRegistrar.kt index bce9cf34e69..cf923d10d4b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrIrGeneratedDeclarationsRegistrar.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrIrGeneratedDeclarationsRegistrar.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.classId import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationArgumentMapping -import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression +import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub import org.jetbrains.kotlin.fir.resolve.defaultType import org.jetbrains.kotlin.fir.resolve.providers.getContainingFile @@ -280,61 +280,61 @@ class Fir2IrIrGeneratedDeclarationsRegistrar(private val components: Fir2IrCompo val name = this@toFirAnnotation.symbol.owner.valueParameters[i].name val argument = this@toFirAnnotation.getValueArgument(i) as IrConst<*> this.mapping[name] = when (argument.kind) { - IrConstKind.Boolean -> buildConstExpression( + IrConstKind.Boolean -> buildLiteralExpression( source = null, ConstantValueKind.Boolean, argument.value as Boolean, setType = true ) - IrConstKind.Byte -> buildConstExpression( + IrConstKind.Byte -> buildLiteralExpression( source = null, ConstantValueKind.Byte, argument.value as Byte, setType = true ) - IrConstKind.Char -> buildConstExpression( + IrConstKind.Char -> buildLiteralExpression( source = null, ConstantValueKind.Char, argument.value as Char, setType = true ) - IrConstKind.Double -> buildConstExpression( + IrConstKind.Double -> buildLiteralExpression( source = null, ConstantValueKind.Double, argument.value as Double, setType = true ) - IrConstKind.Float -> buildConstExpression( + IrConstKind.Float -> buildLiteralExpression( source = null, ConstantValueKind.Float, argument.value as Float, setType = true ) - IrConstKind.Int -> buildConstExpression( + IrConstKind.Int -> buildLiteralExpression( source = null, ConstantValueKind.Int, argument.value as Int, setType = true ) - IrConstKind.Long -> buildConstExpression( + IrConstKind.Long -> buildLiteralExpression( source = null, ConstantValueKind.Long, argument.value as Long, setType = true ) - IrConstKind.Null -> buildConstExpression( + IrConstKind.Null -> buildLiteralExpression( source = null, ConstantValueKind.Null, value = null, setType = true ) - IrConstKind.Short -> buildConstExpression( + IrConstKind.Short -> buildLiteralExpression( source = null, ConstantValueKind.Short, argument.value as Short, setType = false ) - IrConstKind.String -> buildConstExpression( + IrConstKind.String -> buildLiteralExpression( source = null, ConstantValueKind.String, argument.value as String, diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index f02acc2ce51..9b0343b4f23 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -876,8 +876,8 @@ class Fir2IrVisitor( return desugaredAssignmentValueReferenceExpression.expressionRef.value.accept(this, null) } - override fun visitConstExpression(constExpression: FirConstExpression, data: Any?): IrElement { - return constExpression.toIrConst(constExpression.resolvedType.toIrType()) + override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: Any?): IrElement { + return literalExpression.toIrConst(literalExpression.resolvedType.toIrType()) } // ================================================================================== diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt index 6be2fa904fd..b892e35670d 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor import org.jetbrains.kotlin.fir.descriptors.FirPackageFragmentDescriptor -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.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub @@ -312,7 +312,7 @@ class Fir2IrCallableDeclarationsGenerator(val components: Fir2IrComponents) : Fi initializer, typeToUse ).also { field -> - if (initializer is FirConstExpression<*>) { + if (initializer is FirLiteralExpression<*>) { val constType = initializer.resolvedType.toIrType() field.initializer = factory.createExpressionBody(initializer.toIrConst(constType)) } @@ -368,7 +368,7 @@ class Fir2IrCallableDeclarationsGenerator(val components: Fir2IrComponents) : Fi private fun getEffectivePropertyInitializer(property: FirProperty, resolveIfNeeded: Boolean): FirExpression? { val initializer = property.backingField?.initializer ?: property.initializer - if (resolveIfNeeded && initializer is FirConstExpression<*>) { + if (resolveIfNeeded && initializer is FirLiteralExpression<*>) { property.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) return getEffectivePropertyInitializer(property, resolveIfNeeded = false) } @@ -558,7 +558,7 @@ class Fir2IrCallableDeclarationsGenerator(val components: Fir2IrComponents) : Fi ).apply { metadata = FirMetadataSource.Field(field) val initializer = field.unwrapFakeOverrides().initializer - if (initializer is FirConstExpression<*>) { + if (initializer is FirLiteralExpression<*>) { this.initializer = factory.createExpressionBody(initializer.toIrConst(irType)) } /* diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyField.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyField.kt index cbfa9a38907..a5ccfedac4f 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyField.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyField.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isExternal import org.jetbrains.kotlin.fir.declarations.utils.isFinal import org.jetbrains.kotlin.fir.declarations.utils.isStatic import org.jetbrains.kotlin.fir.declarations.utils.visibility -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.unwrapFakeOverrides import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* @@ -72,7 +72,7 @@ class Fir2IrLazyField( override var initializer: IrExpressionBody? by lazyVar(lock) { when (val initializer = fir.unwrapFakeOverrides().initializer) { - is FirConstExpression<*> -> factory.createExpressionBody(initializer.toIrConst(type)) + is FirLiteralExpression<*> -> factory.createExpressionBody(initializer.toIrConst(type)) else -> null } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt index c23da00c9aa..e0afe4da653 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter import org.jetbrains.kotlin.fir.declarations.utils.* -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.types.coneType import org.jetbrains.kotlin.fir.types.resolvedType @@ -100,7 +100,7 @@ class Fir2IrLazyProperty( components, fir.returnTypeRef.coneType ) // Setting initializers to every other class causes some cryptic errors in lowerings - initializer is FirConstExpression<*> -> { + initializer is FirLiteralExpression<*> -> { val constType = with(typeConverter) { initializer.resolvedType.toIrType() } factory.createExpressionBody(initializer.toIrConst(constType)) } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaElementFinder.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaElementFinder.kt index ee90360c2f3..dc115e8bd18 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaElementFinder.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaElementFinder.kt @@ -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") } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt index bd6c077042b..cd5a96248e3 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.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 ) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmBinaryAnnotationDeserializer.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmBinaryAnnotationDeserializer.kt index d7f556f3cd5..f3bfa1aec20 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmBinaryAnnotationDeserializer.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/JvmBinaryAnnotationDeserializer.kt @@ -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 diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt index 8443e122052..a9583ae346b 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt @@ -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)) } diff --git a/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/interop/FirObjCInterop.kt b/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/interop/FirObjCInterop.kt index 18708c055e0..e109da7e12d 100644 --- a/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/interop/FirObjCInterop.kt +++ b/compiler/fir/native/src/org/jetbrains/kotlin/fir/backend/native/interop/FirObjCInterop.kt @@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.containingClassLookupTag import org.jetbrains.kotlin.fir.declarations.* 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.resolve.* import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope @@ -88,7 +88,7 @@ private fun FirAnnotation.constBooleanArgumentOrNull(argumentName: String): Bool constArgument(argumentName) as Boolean? private fun FirAnnotation.constArgument(argumentName: String) = - (argumentMapping.mapping[Name.identifier(argumentName)] as? FirConstExpression<*>)?.value + (argumentMapping.mapping[Name.identifier(argumentName)] as? FirLiteralExpression<*>)?.value internal fun FirFunction.hasObjCFactoryAnnotation(session: FirSession) = this.annotations.hasAnnotation(NativeStandardInteropNames.objCFactoryClassId, session) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/CopyUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/CopyUtils.kt index 8c57dfe1094..c8c7856d654 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/CopyUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/CopyUtils.kt @@ -127,4 +127,4 @@ private fun FirAnnotation.tryExpandClassId(session: FirSession): ClassId? { } private fun FirAnnotation.extractContextReceiversCount() = - (argumentMapping.mapping[StandardNames.CONTEXT_FUNCTION_TYPE_PARAMETER_COUNT_NAME] as? FirConstExpression<*>)?.value as? Int + (argumentMapping.mapping[StandardNames.CONTEXT_FUNCTION_TYPE_PARAMETER_COUNT_NAME] as? FirLiteralExpression<*>)?.value as? Int diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt index 0a83c797ca8..a131b08d7f1 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt @@ -141,12 +141,12 @@ fun FirAnnotation.getBooleanArgument(name: Name): Boolean? = getPrimitiveArgumen fun FirAnnotation.getStringArgument(name: Name): String? = getPrimitiveArgumentValue(name) fun FirAnnotation.getStringArrayArgument(name: Name): List? { val argument = findArgumentByName(name) as? FirArrayLiteral ?: return null - return argument.arguments.mapNotNull { (it as? FirConstExpression<*>)?.value as? String } + return argument.arguments.mapNotNull { (it as? FirLiteralExpression<*>)?.value as? String } } private inline fun FirAnnotation.getPrimitiveArgumentValue(name: Name): T? { return findArgumentByName(name)?.let { expression -> - (expression as? FirConstExpression<*>)?.value as? T + (expression as? FirLiteralExpression<*>)?.value as? T } } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt index 8a985442135..77dd28578c4 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt @@ -273,7 +273,7 @@ private fun List.extractDeprecationAnnotationInfoPerUseSite( for ((deprecated, shouldPropagateToOverrides) in annotations) { if (deprecated.unexpandedClassId == StandardClassIds.Annotations.SinceKotlin) { val sinceKotlinSingleArgument = deprecated.findArgumentByName(ParameterNames.sinceKotlinVersion) - val apiVersion = ((sinceKotlinSingleArgument as? FirConstExpression<*>)?.value as? String) + val apiVersion = ((sinceKotlinSingleArgument as? FirLiteralExpression<*>)?.value as? String) ?.let(ApiVersion.Companion::parse) ?: continue val wasExperimental = this@extractDeprecationAnnotationInfoPerUseSite.any { it.unexpandedClassId == StandardClassIds.Annotations.WasExperimental @@ -315,7 +315,7 @@ private fun List.extractDeprecationAnnotationInfoPerUseSite( private fun FirAnnotation.getFirstArgumentStringIfNotNamed(): String? { if (this !is FirAnnotationCall) return null val firstArgument = argumentList.arguments.firstOrNull() ?: return null - return (firstArgument as? FirConstExpression<*>)?.value?.toString() + return (firstArgument as? FirLiteralExpression<*>)?.value?.toString() } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt index 91d6fd2ee77..238bd1b6f1f 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/LookupTagUtils.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isInner import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationArgumentMapping -import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression +import org.jetbrains.kotlin.fir.expressions.builder.buildLiteralExpression import org.jetbrains.kotlin.fir.getContainingClassLookupTag import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider @@ -109,7 +109,7 @@ fun ConeKotlinType.withParameterNameAnnotation(parameter: FirFunctionTypeParamet } argumentMapping = buildAnnotationArgumentMapping { mapping[StandardClassIds.Annotations.ParameterNames.parameterNameName] = - buildConstExpression(fakeSource, ConstantValueKind.String, name.asString(), setType = true) + buildLiteralExpression(fakeSource, ConstantValueKind.String, name.asString(), setType = true) } } val attributesWithParameterNameAnnotation = diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index 57843d86c89..eeed31c2edf 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -569,7 +569,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty is FirNamedArgumentExpression -> argument.expression else -> argument } ?: return null - return (argument as? FirConstExpression<*>)?.value + return (argument as? FirLiteralExpression<*>)?.value } override fun TypeConstructorMarker.getTypeParameterClassifier(): TypeParameterMarker? { diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt index a0f9f030220..6224372319f 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt @@ -470,14 +470,14 @@ abstract class AbstractRawFirBuilder(val baseSession: FirSession, val context ) } BOOLEAN_CONSTANT -> - buildConstExpression( + buildLiteralExpression( sourceElement, ConstantValueKind.Boolean, convertedText as Boolean, setType = false ) NULL -> - buildConstExpression( + buildLiteralExpression( sourceElement, ConstantValueKind.Null, null, @@ -503,7 +503,7 @@ abstract class AbstractRawFirBuilder(val baseSession: FirSession, val context receiver: FirExpression, operationToken: IElementType, ): FirExpression? { - if (receiver !is FirConstExpression<*>) return null + if (receiver !is FirLiteralExpression<*>) return null if (receiver.kind != ConstantValueKind.IntegerLiteral) return null if (operationToken != PLUS && operationToken != MINUS) return null @@ -514,7 +514,7 @@ abstract class AbstractRawFirBuilder(val baseSession: FirSession, val context else -> error("Should not be here") } - return buildConstExpression( + return buildLiteralExpression( source.toFirSourceElement(), ConstantValueKind.IntegerLiteral, convertedValue, @@ -537,7 +537,7 @@ abstract class AbstractRawFirBuilder(val baseSession: FirSession, val context OPEN_QUOTE, CLOSING_QUOTE -> continue@L LITERAL_STRING_TEMPLATE_ENTRY -> { sb.append(entry.asText) - buildConstExpression( + buildLiteralExpression( entry.toFirSourceElement(), ConstantValueKind.String, entry.asText, setType = false ) } @@ -571,7 +571,7 @@ abstract class AbstractRawFirBuilder(val baseSession: FirSession, val context source = base?.toFirSourceElement() // Fast-pass if there is no errors and non-const string expressions if (!hasExpressions && !argumentList.arguments.any { it is FirErrorExpression }) - return buildConstExpression(source, ConstantValueKind.String, sb.toString(), setType = false) + return buildLiteralExpression(source, ConstantValueKind.String, sb.toString(), setType = false) } } diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt index 5c3e1aa7413..95d811e888b 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt @@ -363,7 +363,7 @@ fun FirPropertyBuilder.generateAccessorsByDelegate( } coneTypeOrNull = context.dispatchReceiverTypesStack.last() } - else -> buildConstExpression(null, ConstantValueKind.Null, null, setType = false) + else -> buildLiteralExpression(null, ConstantValueKind.Null, null, setType = false) } fun delegateAccess() = buildPropertyAccessExpression { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt index b57f704a752..fe62acec71c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt @@ -815,7 +815,7 @@ class FirCallResolver( candidates.isEmpty() -> { when { - name.asString() == "invoke" && explicitReceiver is FirConstExpression<*> -> + name.asString() == "invoke" && explicitReceiver is FirLiteralExpression<*> -> ConeFunctionExpectedError( explicitReceiver.value?.toString() ?: "", explicitReceiver.resolvedType, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index 5e9dac2ccff..b0df3b5e09f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -563,7 +563,7 @@ fun FirExpression?.isIntegerLiteralOrOperatorCall(): Boolean { returns(true) implies (this@isIntegerLiteralOrOperatorCall != null) } return when (this) { - is FirConstExpression<*> -> kind == ConstantValueKind.Int + is FirLiteralExpression<*> -> kind == ConstantValueKind.Int || kind == ConstantValueKind.IntegerLiteral || kind == ConstantValueKind.UnsignedInt || kind == ConstantValueKind.UnsignedIntegerLiteral diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt index 8dd4d17de19..8a5a765ae5d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt @@ -435,8 +435,8 @@ abstract class FirDataFlowAnalyzer( val leftConst = when (leftOperand) { is FirWhenSubjectExpression -> leftOperand.whenRef.value.subject else -> leftOperand - } as? FirConstExpression<*> - val rightConst = rightOperand as? FirConstExpression<*> + } as? FirLiteralExpression<*> + val rightConst = rightOperand as? FirLiteralExpression<*> val leftIsNullConst = leftConst?.kind == ConstantValueKind.Null val rightIsNullConst = rightConst?.kind == ConstantValueKind.Null val leftIsNull = leftIsNullConst || leftOperand.resolvedType.isNullableNothing && !rightIsNullConst @@ -460,7 +460,7 @@ abstract class FirDataFlowAnalyzer( flow: MutableFlow, expression: FirEqualityOperatorCall, operand: FirExpression, - const: FirConstExpression<*>, + const: FirLiteralExpression<*>, isEq: Boolean ) { if (const.kind == ConstantValueKind.Null) { @@ -1020,7 +1020,7 @@ abstract class FirDataFlowAnalyzer( } } - fun exitConstExpression(constExpression: FirConstExpression<*>) { + fun exitConstExpression(constExpression: FirLiteralExpression<*>) { if (constExpression.isResolved) return graphBuilder.exitConstExpression(constExpression).mergeIncomingFlow() } @@ -1265,7 +1265,7 @@ abstract class FirDataFlowAnalyzer( // For any predicate P(x), if P(v) != P(u ?: v) then u != null. In general this requires two levels of // implications, but for constant v the logic system can handle some basic cases of P(x). - val rhs = (elvisExpression.rhs as? FirConstExpression<*>)?.value as? Boolean + val rhs = (elvisExpression.rhs as? FirLiteralExpression<*>)?.value as? Boolean if (rhs != null) { flow.addAllConditionally(elvisVariable eq !rhs, node.firstPreviousNode.getFlow(path)) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt index 1b74e8ba623..6fa52ab6149 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphBuilder.kt @@ -966,7 +966,7 @@ class ControlFlowGraphBuilder { fun exitWhileLoopCondition(loop: FirLoop): Pair { val conditionExitNode = createLoopConditionExitNode(loop.condition).also { addNewSimpleNode(it) } - val conditionConstBooleanValue = loop.condition.booleanConstValue + val conditionConstBooleanValue = loop.condition.booleanLiteralValue addEdge(conditionExitNode, loopExitNodes.getValue(loop), propagateDeadness = false, isDead = conditionConstBooleanValue == true) val loopBlockEnterNode = createLoopBlockEnterNode(loop) addNewSimpleNode(loopBlockEnterNode, conditionConstBooleanValue == false) @@ -1008,7 +1008,7 @@ class ControlFlowGraphBuilder { fun exitDoWhileLoop(loop: FirLoop): Pair { loopConditionEnterNodes.remove(loop) val conditionExitNode = createLoopConditionExitNode(loop.condition) - val conditionBooleanValue = loop.condition.booleanConstValue + val conditionBooleanValue = loop.condition.booleanLiteralValue popAndAddEdge(conditionExitNode) val blockEnterNode = lastNodes.pop() require(blockEnterNode is LoopBlockEnterNode) @@ -1041,7 +1041,7 @@ class ControlFlowGraphBuilder { addNewSimpleNode(leftExitNode) lastNodes.push(leftExitNode) // to create an exit edge later val rhsNeverExecuted = - binaryLogicExpression.leftOperand.booleanConstValue == (binaryLogicExpression.kind != LogicOperationKind.AND) + binaryLogicExpression.leftOperand.booleanLiteralValue == (binaryLogicExpression.kind != LogicOperationKind.AND) addNewSimpleNode(rightEnterNode, isDead = rhsNeverExecuted) return leftExitNode to rightEnterNode } @@ -1054,14 +1054,14 @@ class ControlFlowGraphBuilder { val rightNode = lastNodes.pop() val leftNode = lastNodes.pop() val rhsAlwaysExecuted = - binaryLogicExpression.leftOperand.booleanConstValue == (binaryLogicExpression.kind == LogicOperationKind.AND) + binaryLogicExpression.leftOperand.booleanLiteralValue == (binaryLogicExpression.kind == LogicOperationKind.AND) addEdge(leftNode, exitNode, propagateDeadness = !rhsAlwaysExecuted, isDead = rhsAlwaysExecuted) addEdge(rightNode, exitNode, propagateDeadness = rhsAlwaysExecuted) lastNodes.push(exitNode) return exitNode } - private val FirExpression.booleanConstValue: Boolean? get() = (this as? FirConstExpression<*>)?.value as? Boolean? + private val FirExpression.booleanLiteralValue: Boolean? get() = (this as? FirLiteralExpression<*>)?.value as? Boolean? // ----------------------------------- Try-catch-finally ----------------------------------- @@ -1330,7 +1330,7 @@ class ControlFlowGraphBuilder { return node } - fun exitConstExpression(constExpression: FirConstExpression<*>): ConstExpressionNode { + fun exitLiteralExpression(constExpression: FirLiteralExpression<*>): ConstExpressionNode { return createConstExpressionNode(constExpression).also { addNewSimpleNode(it) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphNodeBuilder.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphNodeBuilder.kt index 38eb9f48261..0853410183c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphNodeBuilder.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/ControlFlowGraphNodeBuilder.kt @@ -163,7 +163,7 @@ fun ControlFlowGraphBuilder.createElvisExitNode(fir: FirElvisExpression): ElvisE fun ControlFlowGraphBuilder.createVariableDeclarationNode(fir: FirProperty): VariableDeclarationNode = VariableDeclarationNode(currentGraph, fir, levelCounter) -fun ControlFlowGraphBuilder.createConstExpressionNode(fir: FirConstExpression<*>): ConstExpressionNode = +fun ControlFlowGraphBuilder.createConstExpressionNode(fir: FirLiteralExpression<*>): ConstExpressionNode = ConstExpressionNode(currentGraph, fir, levelCounter) fun ControlFlowGraphBuilder.createThrowExceptionNode(fir: FirThrowExpression): ThrowExceptionNode = diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index fabbe419ac9..d02cd626081 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -938,16 +938,16 @@ class FirCallCompletionResultsWriterTransformer( ) } - override fun transformConstExpression( - constExpression: FirConstExpression, + override fun transformLiteralExpression( + literalExpression: FirLiteralExpression, data: ExpectedArgumentType?, ): FirStatement { - if (data == ExpectedArgumentType.NoApproximation) return constExpression - val expectedType = data?.getExpectedType(constExpression) + if (data == ExpectedArgumentType.NoApproximation) return literalExpression + val expectedType = data?.getExpectedType(literalExpression) if (expectedType is ConeIntegerConstantOperatorType) { - return constExpression + return literalExpression } - return constExpression.transformSingle(integerOperatorApproximator, expectedType) + return literalExpression.transformSingle(integerOperatorApproximator, expectedType) } override fun transformIntegerLiteralOperatorCall( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirWhenExhaustivenessTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirWhenExhaustivenessTransformer.kt index acdb95d8e4b..4815cabe493 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirWhenExhaustivenessTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirWhenExhaustivenessTransformer.kt @@ -271,7 +271,7 @@ private object WhenOnBooleanExhaustivenessChecker : WhenExhaustivenessChecker() override fun visitEqualityOperatorCall(equalityOperatorCall: FirEqualityOperatorCall, data: Flags) { if (equalityOperatorCall.operation.let { it == FirOperation.EQ || it == FirOperation.IDENTITY }) { val argument = equalityOperatorCall.arguments[1] - if (argument is FirConstExpression<*>) { + if (argument is FirLiteralExpression<*>) { when (argument.value) { true -> data.containsTrue = true false -> data.containsFalse = true diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/IntegerLiteralAndOperatorApproximationTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/IntegerLiteralAndOperatorApproximationTransformer.kt index 1892b7c8c9c..78381d52bff 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/IntegerLiteralAndOperatorApproximationTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/IntegerLiteralAndOperatorApproximationTransformer.kt @@ -10,10 +10,9 @@ import org.jetbrains.kotlin.fakeElement import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirResolvePhase -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.expressions.FirIntegerLiteralOperatorCall import org.jetbrains.kotlin.fir.expressions.FirStatement -import org.jetbrains.kotlin.fir.expressions.UnresolvedExpressionTypeAccess import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall import org.jetbrains.kotlin.fir.references.FirResolvedErrorReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference @@ -58,17 +57,17 @@ class IntegerLiteralAndOperatorApproximationTransformer( return element } - override fun transformConstExpression( - constExpression: FirConstExpression, + override fun transformLiteralExpression( + literalExpression: FirLiteralExpression, data: ConeKotlinType?, ): FirStatement { - val type = constExpression.resolvedType as? ConeIntegerLiteralType ?: return constExpression + val type = literalExpression.resolvedType as? ConeIntegerLiteralType ?: return literalExpression val approximatedType = type.getApproximatedType(data?.fullyExpandedType(session)) - constExpression.resultType = approximatedType + literalExpression.resultType = approximatedType @Suppress("UNCHECKED_CAST") val kind = approximatedType.toConstKind() as ConstantValueKind - constExpression.replaceKind(kind) - return constExpression + literalExpression.replaceKind(kind) + return literalExpression } override fun transformIntegerLiteralOperatorCall( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformerDispatcher.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformerDispatcher.kt index fa139378b7e..a0e7a3e573e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformerDispatcher.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformerDispatcher.kt @@ -299,13 +299,13 @@ abstract class FirAbstractBodyResolveTransformerDispatcher( FirDeclarationsResolveTransformer::transformWrappedDelegateExpression, ) - override fun transformConstExpression( - constExpression: FirConstExpression, + override fun transformLiteralExpression( + literalExpression: FirLiteralExpression, data: ResolutionMode, ): FirStatement = expressionTransformation( - constExpression, + literalExpression, data, - FirExpressionsResolveTransformer::transformConstExpression, + FirExpressionsResolveTransformer::transformLiteralExpression, ) override fun transformAnnotation( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 291eebf215c..687731a6ec5 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -1089,7 +1089,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT ): FirStatement = whileAnalysing(session, getClassCall) { getClassCall.transformAnnotations(transformer, ResolutionMode.ContextIndependent) val arg = getClassCall.argument - val dataForLhs = if (arg is FirConstExpression<*>) { + val dataForLhs = if (arg is FirLiteralExpression<*>) { withExpectedType(arg.kind.expectedConeType(session).toFirResolvedTypeRef()) } else { ResolutionMode.ContextIndependent @@ -1163,16 +1163,16 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT return true } - override fun transformConstExpression( - constExpression: FirConstExpression, + override fun transformLiteralExpression( + literalExpression: FirLiteralExpression, data: ResolutionMode, ): FirStatement { - constExpression.transformAnnotations(transformer, ResolutionMode.ContextIndependent) + literalExpression.transformAnnotations(transformer, ResolutionMode.ContextIndependent) - val type = when (val kind = constExpression.kind) { + val type = when (val kind = literalExpression.kind) { ConstantValueKind.IntegerLiteral, ConstantValueKind.UnsignedIntegerLiteral -> { val expressionType = ConeIntegerLiteralConstantTypeImpl.create( - constExpression.value as Long, + literalExpression.value as Long, isTypePresent = { it.lookupTag.toSymbol(session) != null }, isUnsigned = kind == ConstantValueKind.UnsignedIntegerLiteral ) @@ -1183,7 +1183,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT expressionType } expressionType is ConeClassLikeType -> { - constExpression.replaceKind(expressionType.toConstKind() as ConstantValueKind) + literalExpression.replaceKind(expressionType.toConstKind() as ConstantValueKind) expressionType } data is ResolutionMode.ReceiverResolution && !data.forCallableReference -> { @@ -1194,7 +1194,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT require(expressionType is ConeIntegerLiteralConstantTypeImpl) val coneType = expectedTypeRef.coneTypeSafe()?.fullyExpandedType(session) val approximatedType = expressionType.getApproximatedType(coneType) - constExpression.replaceKind(approximatedType.toConstKind() as ConstantValueKind) + literalExpression.replaceKind(approximatedType.toConstKind() as ConstantValueKind) approximatedType } else -> { @@ -1205,17 +1205,17 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT else -> kind.expectedConeType(session) } - dataFlowAnalyzer.exitConstExpression(constExpression as FirConstExpression<*>) - constExpression.resultType = type + dataFlowAnalyzer.exitConstExpression(literalExpression as FirLiteralExpression<*>) + literalExpression.resultType = type - return when (val resolvedType = constExpression.resolvedType) { + return when (val resolvedType = literalExpression.resolvedType) { is ConeErrorType -> buildErrorExpression { - expression = constExpression + expression = literalExpression diagnostic = resolvedType.diagnostic - source = constExpression.source + source = literalExpression.source } - else -> constExpression + else -> literalExpression } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt index bdb2cf7f847..6ca1ea13c98 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt @@ -130,7 +130,7 @@ class ConeEffectExtractor( } val argument = equalityOperatorCall.arguments[1] - val const = argument as? FirConstExpression<*> ?: return ConeContractDescriptionError.NotAConstant(argument).asElement() + val const = argument as? FirLiteralExpression<*> ?: return ConeContractDescriptionError.NotAConstant(argument).asElement() if (const.kind != ConstantValueKind.Null) return ConeContractDescriptionError.IllegalConst(const, onlyNullAllowed = true).asElement() val arg = equalityOperatorCall.arguments[0].asContractValueExpression() @@ -203,14 +203,14 @@ class ConeEffectExtractor( } } - override fun visitConstExpression(constExpression: FirConstExpression, data: Nothing?): ConeContractDescriptionElement { - return when (constExpression.kind) { + override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: Nothing?): ConeContractDescriptionElement { + return when (literalExpression.kind) { ConstantValueKind.Null -> ConeContractConstantValues.NULL - ConstantValueKind.Boolean -> when (constExpression.value as Boolean) { + ConstantValueKind.Boolean -> when (literalExpression.value as Boolean) { true -> ConeContractConstantValues.TRUE false -> ConeContractConstantValues.FALSE } - else -> ConeContractDescriptionError.IllegalConst(constExpression, onlyNullAllowed = false).asElement() + else -> ConeContractDescriptionError.IllegalConst(literalExpression, onlyNullAllowed = false).asElement() } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt index acc11de4a44..bb4e366dc01 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt @@ -483,7 +483,7 @@ class FirExpectActualMatchingContextImpl private constructor( // Because of that, we have "honest" checker at backend IR stage // and "only simplest case" checker in frontend, so that we have at least some reporting in the IDE. return when { - expression1 is FirConstExpression<*> && expression2 is FirConstExpression<*> -> { + expression1 is FirLiteralExpression<*> && expression2 is FirLiteralExpression<*> -> { expression1.value == expression2.value } else -> true diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNode.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNode.kt index a048c7ba647..26e13dcfe18 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNode.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/dfa/cfg/CFGNode.kt @@ -668,7 +668,7 @@ class JumpNode(owner: ControlFlowGraph, override val fir: FirJump<*>, level: Int return visitor.visitJumpNode(this, data) } } -class ConstExpressionNode(owner: ControlFlowGraph, override val fir: FirConstExpression<*>, level: Int) : CFGNode>(owner, level) { +class ConstExpressionNode(owner: ControlFlowGraph, override val fir: FirLiteralExpression<*>, level: Int) : CFGNode>(owner, level) { override fun accept(visitor: ControlFlowGraphVisitor, data: D): R { return visitor.visitConstExpressionNode(this, data) } diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt index ae564b4c14a..4d37cee7280 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/diagnostics/ConeDiagnostics.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnosticWithNullability import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnosticWithSource -import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression import org.jetbrains.kotlin.fir.expressions.FirOperation import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression import org.jetbrains.kotlin.fir.render @@ -199,7 +199,7 @@ sealed class ConeContractDescriptionError : ConeDiagnostic { } class IllegalConst( - val element: FirConstExpression<*>, + val element: FirLiteralExpression<*>, val onlyNullAllowed: Boolean ) : ConeContractDescriptionError() { override val reason: String diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLiteralExpression.kt similarity index 85% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLiteralExpression.kt index 43abc8477da..3dacf70d180 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLiteralExpression.kt @@ -16,9 +16,9 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.types.ConstantValueKind /** - * Generated from: [org.jetbrains.kotlin.fir.tree.generator.FirTreeBuilder.constExpression] + * Generated from: [org.jetbrains.kotlin.fir.tree.generator.FirTreeBuilder.literalExpression] */ -abstract class FirConstExpression : FirExpression() { +abstract class FirLiteralExpression : FirExpression() { abstract override val source: KtSourceElement? @UnresolvedExpressionTypeAccess abstract override val coneTypeOrNull: ConeKotlinType? @@ -27,11 +27,11 @@ abstract class FirConstExpression : FirExpression() { abstract val value: T override fun accept(visitor: FirVisitor, data: D): R = - visitor.visitConstExpression(this, data) + visitor.visitLiteralExpression(this, data) @Suppress("UNCHECKED_CAST") override fun transform(transformer: FirTransformer, data: D): E = - transformer.transformConstExpression(this, data) as E + transformer.transformLiteralExpression(this, data) as E abstract override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) @@ -39,5 +39,5 @@ abstract class FirConstExpression : FirExpression() { abstract fun replaceKind(newKind: ConstantValueKind) - abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirConstExpression + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirLiteralExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirConstExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirLiteralExpressionImpl.kt similarity index 89% rename from compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirConstExpressionImpl.kt rename to compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirLiteralExpressionImpl.kt index 75cf0c1ec35..13ba7c5e45e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirConstExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirLiteralExpressionImpl.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.fir.MutableOrEmptyList import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty 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.UnresolvedExpressionTypeAccess import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.visitors.FirTransformer @@ -23,25 +23,25 @@ import org.jetbrains.kotlin.fir.visitors.transformInplace import org.jetbrains.kotlin.types.ConstantValueKind @OptIn(UnresolvedExpressionTypeAccess::class) -internal class FirConstExpressionImpl ( +internal class FirLiteralExpressionImpl ( override val source: KtSourceElement?, @property:UnresolvedExpressionTypeAccess override var coneTypeOrNull: ConeKotlinType?, override var annotations: MutableOrEmptyList, override var kind: ConstantValueKind, override val value: T, -) : FirConstExpression() { +) : FirLiteralExpression() { override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } } - override fun transformChildren(transformer: FirTransformer, data: D): FirConstExpressionImpl { + override fun transformChildren(transformer: FirTransformer, data: D): FirLiteralExpressionImpl { transformAnnotations(transformer, data) return this } - override fun transformAnnotations(transformer: FirTransformer, data: D): FirConstExpressionImpl { + override fun transformAnnotations(transformer: FirTransformer, data: D): FirLiteralExpressionImpl { annotations.transformInplace(transformer, data) return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt index 40dc7ef4ee3..8a8df0c6ac6 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitor.kt @@ -101,8 +101,8 @@ abstract class FirDefaultVisitor : FirVisitor() { override fun visitContinueExpression(continueExpression: FirContinueExpression, data: D): R = visitLoopJump(continueExpression, data) - override fun visitConstExpression(constExpression: FirConstExpression, data: D): R = - visitExpression(constExpression, data) + override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: D): R = + visitExpression(literalExpression, data) override fun visitStarProjection(starProjection: FirStarProjection, data: D): R = visitTypeProjection(starProjection, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt index aa0df35a56a..2883771c1c3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirDefaultVisitorVoid.kt @@ -74,7 +74,7 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() { override fun visitContinueExpression(continueExpression: FirContinueExpression) = visitLoopJump(continueExpression) - override fun visitConstExpression(constExpression: FirConstExpression) = visitExpression(constExpression) + override fun visitLiteralExpression(literalExpression: FirLiteralExpression) = visitExpression(literalExpression) override fun visitStarProjection(starProjection: FirStarProjection) = visitTypeProjection(starProjection) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index dd74f6fb461..1469872ffc3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -555,12 +555,12 @@ abstract class FirTransformer : FirVisitor() { return transformTryExpression(tryExpression, data) } - open fun transformConstExpression(constExpression: FirConstExpression, data: D): FirStatement { - return transformElement(constExpression, data) + open fun transformLiteralExpression(literalExpression: FirLiteralExpression, data: D): FirStatement { + return transformElement(literalExpression, data) } - final override fun visitConstExpression(constExpression: FirConstExpression, data: D): FirStatement { - return transformConstExpression(constExpression, data) + final override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: D): FirStatement { + return transformLiteralExpression(literalExpression, data) } open fun transformTypeProjection(typeProjection: FirTypeProjection, data: D): FirTypeProjection { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt index 8e9a0b74e87..23056209d5f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitor.kt @@ -221,8 +221,8 @@ abstract class FirVisitor { open fun visitTryExpression(tryExpression: FirTryExpression, data: D): R = visitElement(tryExpression, data) - open fun visitConstExpression(constExpression: FirConstExpression, data: D): R = - visitElement(constExpression, data) + open fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: D): R = + visitElement(literalExpression, data) open fun visitTypeProjection(typeProjection: FirTypeProjection, data: D): R = visitElement(typeProjection, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt index 84fc3b2b125..4a001b920a3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirVisitorVoid.kt @@ -555,12 +555,12 @@ abstract class FirVisitorVoid : FirVisitor() { visitElement(tryExpression) } - final override fun visitConstExpression(constExpression: FirConstExpression, data: Nothing?) { - visitConstExpression(constExpression) + final override fun visitLiteralExpression(literalExpression: FirLiteralExpression, data: Nothing?) { + visitLiteralExpression(literalExpression) } - open fun visitConstExpression(constExpression: FirConstExpression) { - visitElement(constExpression) + open fun visitLiteralExpression(literalExpression: FirLiteralExpression) { + visitElement(literalExpression) } final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: Nothing?) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt index c466fca8fe9..f0586027977 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.utils.isStatic import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic -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.expressions.builder.buildErrorLoop import org.jetbrains.kotlin.fir.expressions.impl.FirBlockImpl @@ -34,7 +34,7 @@ inline val FirAnnotation.unexpandedClassId: ClassId? fun buildConstOrErrorExpression(source: KtSourceElement?, kind: ConstantValueKind, value: T?, diagnostic: ConeDiagnostic): FirExpression = value?.let { - buildConstExpression(source, kind, it, setType = false) + buildLiteralExpression(source, kind, it, setType = false) } ?: buildErrorExpression { this.source = source this.diagnostic = diagnostic diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt index 1b7f623b59b..0dac2e40e0f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/builder/FirConstExpressionBuilder.kt @@ -8,22 +8,22 @@ package org.jetbrains.kotlin.fir.expressions.builder import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty 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.UnresolvedExpressionTypeAccess -import org.jetbrains.kotlin.fir.expressions.impl.FirConstExpressionImpl +import org.jetbrains.kotlin.fir.expressions.impl.FirLiteralExpressionImpl import org.jetbrains.kotlin.fir.types.constructClassLikeType import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.types.ConstantValueKind @OptIn(UnresolvedExpressionTypeAccess::class) -fun buildConstExpression( +fun buildLiteralExpression( source: KtSourceElement?, kind: ConstantValueKind, value: T, annotations: MutableList = mutableListOf(), setType: Boolean -): FirConstExpression { - return FirConstExpressionImpl(source, null, annotations.toMutableOrEmpty(), kind, value).also { +): FirLiteralExpression { + return FirLiteralExpressionImpl(source, null, annotations.toMutableOrEmpty(), kind, value).also { if (setType) { when (kind) { ConstantValueKind.Boolean -> it.coneTypeOrNull = StandardClassIds.Boolean.constructClassLikeType() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt index 6d0fb78808e..1a67a66df1b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/renderer/FirRenderer.kt @@ -699,10 +699,10 @@ class FirRenderer( print("LAZY_EXPRESSION") } - override fun visitConstExpression(constExpression: FirConstExpression) { - annotationRenderer?.render(constExpression) - val kind = constExpression.kind - val value = constExpression.value + override fun visitLiteralExpression(literalExpression: FirLiteralExpression) { + annotationRenderer?.render(literalExpression) + val kind = literalExpression.kind + val value = literalExpression.value print("$kind(") if (value !is Char) { print(value.toString()) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeUtils.kt index cf80bee3590..636673d37d3 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeUtils.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/FirTypeUtils.kt @@ -85,7 +85,7 @@ val FirTypeRef.isArrayType: Boolean || StandardClassIds.unsignedArrayTypeByElementType.values.any { isBuiltinType(it, false) } val FirExpression.isNullLiteral: Boolean - get() = this is FirConstExpression<*> && + get() = this is FirLiteralExpression<*> && this.kind == ConstantValueKind.Null && this.value == null && this.source != null diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt index 5a877daf439..40e545413bd 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt @@ -411,7 +411,7 @@ object BuilderConfigurator : AbstractFirBuilderConfigurator(FirT // useTypes(whenExpressionType) // } - noBuilder(constExpression) + noBuilder(literalExpression) builder(samConversionExpression) { withCopy() diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index 3a5be8417b2..1dea07cf1ae 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -95,7 +95,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val continueExpression by element(Expression, loopJump) val catchClause by element("Catch", Expression) val tryExpression by element(Expression, expression, resolvable) - val constExpression by element(Expression, expression) + val literalExpression by element(Expression, expression) val typeProjection by element(TypeRef) val starProjection by element(TypeRef, typeProjection) val placeholderProjection by element(TypeRef, typeProjection) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index ecacdcff907..71040677e32 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -227,7 +227,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +field("receiver", expression) } - constExpression.configure { + literalExpression.configure { val t = withArg("T") +field("kind", constKindType.withArgs(t), withReplace = true) +field("value", t) diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt index 655cf55f1a6..5a9fd20c234 100644 --- a/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt +++ b/plugins/kotlinx-serialization/kotlinx-serialization.k2/src/org/jetbrains/kotlinx/serialization/compiler/fir/checkers/FirSerializationPluginClassChecker.kt @@ -172,7 +172,7 @@ object FirSerializationPluginClassChecker : FirClassChecker(MppCheckerKind.Commo context(CheckerContext) private fun FirExpression.isEqualTo(other: FirExpression): Boolean { return when { - this is FirConstExpression<*> && other is FirConstExpression<*> -> kind == other.kind && value == other.value + this is FirLiteralExpression<*> && other is FirLiteralExpression<*> -> kind == other.kind && value == other.value this is FirGetClassCall && other is FirGetClassCall -> AbstractTypeChecker.equalTypes( session.typeContext, resolvedType, diff --git a/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/config/annotationUtils.kt b/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/config/annotationUtils.kt index a0cf1608236..b27d648963e 100644 --- a/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/config/annotationUtils.kt +++ b/plugins/lombok/lombok.k2/src/org/jetbrains/kotlin/lombok/k2/config/annotationUtils.kt @@ -22,7 +22,7 @@ fun FirAnnotation.getAccessLevel(field: Name = LombokConfigNames.VALUE): AccessL private fun FirAnnotation.getArgumentAsString(field: Name): String? { val argument = findArgumentByName(field) ?: return null return when (argument) { - is FirConstExpression<*> -> argument.value as? String + is FirLiteralExpression<*> -> argument.value as? String is FirEnumEntryDeserializedAccessExpression -> argument.enumEntryName.identifier is FirQualifiedAccessExpression -> { @OptIn(UnsafeExpressionUtility::class)