AA FIR: avoid unsafe argument retrieval during const evaluation
This commit is contained in:
committed by
Ilya Kirillov
parent
0b4a4ca42b
commit
dd7fc7f4ae
+6
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -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)
|
||||
}
|
||||
|
||||
+6
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
// WITH_STDLIB
|
||||
|
||||
const val CODE = <expr>"""
|
||||
const val CODE = "const val CODE = ..."
|
||||
""".trimIndent()</expr>
|
||||
analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_trimIndent.txt
Vendored
+11
@@ -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
|
||||
Reference in New Issue
Block a user