AA FIR: avoid unsafe argument retrieval during const evaluation

This commit is contained in:
Jinseong Jeon
2022-09-15 13:16:19 -07:00
committed by Ilya Kirillov
parent 0b4a4ca42b
commit dd7fc7f4ae
7 changed files with 42 additions and 1 deletions
@@ -225,4 +225,10 @@ public class Fe10IdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGe
public void testString_toString() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
}
@Test
@TestMetadata("string_trimIndent.kt")
public void testString_trimIndent() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_trimIndent.kt");
}
}
@@ -135,7 +135,8 @@ internal object FirCompileTimeConstantEvaluator {
return it.adjustType(functionCall.typeRef)
}
val opr2 = evaluate(functionCall.argument, mode) ?: return null
val argument = functionCall.arguments.firstOrNull() ?: return null
val opr2 = evaluate(argument, mode) ?: return null
opr1.evaluate(function, opr2)?.let {
return it.adjustType(functionCall.typeRef)
}
@@ -225,4 +225,10 @@ public class FirIdeDependentAnalysisSourceModuleCompileTimeConstantEvaluatorTest
public void testString_toString() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
}
@Test
@TestMetadata("string_trimIndent.kt")
public void testString_trimIndent() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_trimIndent.kt");
}
}
@@ -225,4 +225,10 @@ public class FirIdeNormalAnalysisSourceModuleCompileTimeConstantEvaluatorTestGen
public void testString_toString() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
}
@Test
@TestMetadata("string_trimIndent.kt")
public void testString_trimIndent() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_trimIndent.kt");
}
}
@@ -225,4 +225,10 @@ public class FirStandaloneNormalAnalysisSourceModuleCompileTimeConstantEvaluator
public void testString_toString() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
}
@Test
@TestMetadata("string_trimIndent.kt")
public void testString_trimIndent() throws Exception {
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_trimIndent.kt");
}
}
@@ -0,0 +1,5 @@
// WITH_STDLIB
const val CODE = <expr>"""
const val CODE = "const val CODE = ..."
""".trimIndent()</expr>
@@ -0,0 +1,11 @@
expression: """
const val CODE = "const val CODE = ..."
""".trimIndent()
CONSTANT_EXPRESSION_EVALUATION
constant: NOT_EVALUATED
constantValueKind: NOT_EVALUATED
CONSTANT_LIKE_EXPRESSION_EVALUATION
constantLike: NOT_EVALUATED
constantLikeValueKind: NOT_EVALUATED