[AA] Handle KtTypeReference children in CompileTimeConstantProvider
CompileTimeConstantProvider could receive a reference expression, whose grandparent is KtTypeReference (seen that in UAST inspection). FIR would not contain anything explicit for this reference, FirResolvedTypeRef would be received as the nearest parent. Of course, in this case, there could be no compile time constant anyway.
This commit is contained in:
+2
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user