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 {
|
public void testString_toString() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
|
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)
|
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 {
|
opr1.evaluate(function, opr2)?.let {
|
||||||
return it.adjustType(functionCall.typeRef)
|
return it.adjustType(functionCall.typeRef)
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -225,4 +225,10 @@ public class FirIdeDependentAnalysisSourceModuleCompileTimeConstantEvaluatorTest
|
|||||||
public void testString_toString() throws Exception {
|
public void testString_toString() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
|
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 {
|
public void testString_toString() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
|
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 {
|
public void testString_toString() throws Exception {
|
||||||
runTest("analysis/analysis-api/testData/components/compileTimeConstantProvider/evaluate/string_toString.kt");
|
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