diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/components/compileTimeConstantProvider/Fe10CompileTimeConstantEvaluatorTestGenerated.java b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/components/compileTimeConstantProvider/Fe10CompileTimeConstantEvaluatorTestGenerated.java index fc874419f10..264961463b7 100644 --- a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/components/compileTimeConstantProvider/Fe10CompileTimeConstantEvaluatorTestGenerated.java +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/components/compileTimeConstantProvider/Fe10CompileTimeConstantEvaluatorTestGenerated.java @@ -40,6 +40,12 @@ public class Fe10CompileTimeConstantEvaluatorTestGenerated extends AbstractCompi runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/binaryExpressionWithString.kt"); } + @Test + @TestMetadata("namedReference.kt") + public void testNamedReference() throws Exception { + runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.kt"); + } + @Test @TestMetadata("propertyInit_Byte.kt") public void testPropertyInit_Byte() throws Exception { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompileTimeConstantProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompileTimeConstantProvider.kt index f2c0baf4b9a..fa6caf865a3 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompileTimeConstantProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirCompileTimeConstantProvider.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirEle import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirWhenBranch import org.jetbrains.kotlin.fir.psi +import org.jetbrains.kotlin.fir.references.FirNamedReference import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtExpression @@ -33,6 +34,10 @@ internal class KtFirCompileTimeConstantProvider( KtConstantValue.KtErrorConstantValue(e.localizedMessage, fir.psi as? KtElement) } } + is FirNamedReference -> { + // TODO: but... if it refers to a property with a constant initializer, we can retrieve that technically? + null + } // For invalid code like the following, // ``` // when { diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/compileTimeConstantProvider/FirCompileTimeConstantEvaluatorTestGenerated.java b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/compileTimeConstantProvider/FirCompileTimeConstantEvaluatorTestGenerated.java index eb226ccf41d..4bd49cc4307 100644 --- a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/compileTimeConstantProvider/FirCompileTimeConstantEvaluatorTestGenerated.java +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/components/compileTimeConstantProvider/FirCompileTimeConstantEvaluatorTestGenerated.java @@ -40,6 +40,12 @@ public class FirCompileTimeConstantEvaluatorTestGenerated extends AbstractCompil runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/binaryExpressionWithString.kt"); } + @Test + @TestMetadata("namedReference.kt") + public void testNamedReference() throws Exception { + runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.kt"); + } + @Test @TestMetadata("propertyInit_Byte.kt") public void testPropertyInit_Byte() throws Exception { diff --git a/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.kt b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.kt new file mode 100644 index 00000000000..22eb6fe9078 --- /dev/null +++ b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.kt @@ -0,0 +1,8 @@ +class Test { + var bar : Int = 42 +} + +fun box() { + val t = Test() + t.bar +} diff --git a/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.txt b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.txt new file mode 100644 index 00000000000..1ef30c1c571 --- /dev/null +++ b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference.txt @@ -0,0 +1,3 @@ +expression: bar +constant: NOT_EVALUATED +constantValueKind: NOT_EVALUATED