diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/compileTimeConstantProvider/Fe10IdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/compileTimeConstantProvider/Fe10IdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java index 0c4c02180ef..3bf2de9a2da 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/compileTimeConstantProvider/Fe10IdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/compileTimeConstantProvider/Fe10IdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java @@ -112,6 +112,12 @@ public class Fe10IdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGe runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_const.kt"); } + @Test + @TestMetadata("namedReference_userType.kt") + public void testNamedReference_userType() throws Exception { + runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.kt"); + } + @Test @TestMetadata("namedReference_val.kt") public void testNamedReference_val() 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 9579734f6a4..ca3ed5edef4 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 @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment import org.jetbrains.kotlin.fir.expressions.FirWhenBranch import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.psi import org.jetbrains.kotlin.psi.KtExpression @@ -67,6 +68,7 @@ internal class KtFirCompileTimeConstantProvider( // case, we simply report null since FIR does not know about it. fir is FirWhenBranch -> null fir is FirVariableAssignment && fir.source?.kind == KtFakeSourceElementKind.DesugaredIncrementOrDecrement -> null + fir is FirTypeRef -> null else -> throwUnexpectedFirElementError(fir, sourcePsi) } } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeDependentAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeDependentAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java index bbf9259be5e..f394835f1ce 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeDependentAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeDependentAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java @@ -112,6 +112,12 @@ public class FirIdeDependentAnalysisSourceModuleCompileTimeConstantEvaluatorTest runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_const.kt"); } + @Test + @TestMetadata("namedReference_userType.kt") + public void testNamedReference_userType() throws Exception { + runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.kt"); + } + @Test @TestMetadata("namedReference_val.kt") public void testNamedReference_val() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java index 2b40bc8151b..f3fec2c36d1 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirIdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java @@ -112,6 +112,12 @@ public class FirIdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGen runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_const.kt"); } + @Test + @TestMetadata("namedReference_userType.kt") + public void testNamedReference_userType() throws Exception { + runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.kt"); + } + @Test @TestMetadata("namedReference_val.kt") public void testNamedReference_val() throws Exception { diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compileTimeConstantProvider/AbstractCompileTimeConstantEvaluatorTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compileTimeConstantProvider/AbstractCompileTimeConstantEvaluatorTest.kt index 66041ebfc20..67d4594f120 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compileTimeConstantProvider/AbstractCompileTimeConstantEvaluatorTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compileTimeConstantProvider/AbstractCompileTimeConstantEvaluatorTest.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.test.services.assertions abstract class AbstractCompileTimeConstantEvaluatorTest : AbstractAnalysisApiSingleFileTest() { override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) { - val element = testServices.expressionMarkerProvider.getSelectedElement(ktFile) + val element = testServices.expressionMarkerProvider.getSelectedElementOfTypeByDirective(ktFile, module) val expression = when (element) { is KtExpression -> element is KtValueArgument -> element.getArgumentExpression() diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirStandaloneNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirStandaloneNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java index 00142ea12e6..e450a8f4f3e 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirStandaloneNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/compileTimeConstantProvider/FirStandaloneNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGenerated.java @@ -112,6 +112,12 @@ public class FirStandaloneNormalAnalysisSourceModuleCompileTimeConstantEvaluator runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_const.kt"); } + @Test + @TestMetadata("namedReference_userType.kt") + public void testNamedReference_userType() throws Exception { + runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.kt"); + } + @Test @TestMetadata("namedReference_val.kt") public void testNamedReference_val() throws Exception { diff --git a/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.kt b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.kt new file mode 100644 index 00000000000..95c7bb893f4 --- /dev/null +++ b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.kt @@ -0,0 +1,6 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: KtNameReferenceExpression +class Test { + fun box(t : Test?) { + val inst = t is Test + } +} diff --git a/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.txt b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.txt new file mode 100644 index 00000000000..85eeb6ecf9b --- /dev/null +++ b/analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/namedReference_userType.txt @@ -0,0 +1,9 @@ +expression: Test + +CONSTANT_EXPRESSION_EVALUATION +constant: NOT_EVALUATED +constantValueKind: NOT_EVALUATED + +CONSTANT_LIKE_EXPRESSION_EVALUATION +constantLike: NOT_EVALUATED +constantLikeValueKind: NOT_EVALUATED