LL API: add kt -> fir mapping tests for expressions

This commit is contained in:
Ilya Kirillov
2021-07-15 16:22:59 +02:00
committed by teamcityserver
parent 0554e2a083
commit b380bcfd99
35 changed files with 254 additions and 0 deletions
@@ -0,0 +1,3 @@
fun foo(x: Any): String {
return <expr>x as String</expr>
}
@@ -0,0 +1,5 @@
KT element: KtBinaryExpressionWithTypeRHS
FIR element: FirTypeOperatorCallImpl
FIR element rendered:
(R|<local>/x| as R|kotlin/String|)
@@ -0,0 +1 @@
val x = <expr>1 + 1</expr>
@@ -0,0 +1,5 @@
KT element: KtBinaryExpression
FIR element: FirFunctionCallImpl
FIR element rendered:
Int(1).R|kotlin/Int.plus|(Int(1))
@@ -0,0 +1,4 @@
fun x() <expr> {
}
</expr>
@@ -0,0 +1,6 @@
KT element: KtBlockExpression
FIR element: FirBlockImpl
FIR element rendered:
{
}
@@ -0,0 +1 @@
val x = <expr>true</expr>
@@ -0,0 +1,5 @@
KT element: KtConstantExpression
FIR element: FirConstExpressionImpl
FIR element rendered:
Boolean(true)
@@ -0,0 +1 @@
val x = <expr>Int::class</expr>
@@ -0,0 +1,5 @@
KT element: KtClassLiteralExpression
FIR element: FirGetClassCallImpl
FIR element rendered:
<getClass>(Q|kotlin/Int|)
@@ -0,0 +1,3 @@
fun foo(x: Any): String {
return <expr>if (x is String) "1" else "2"</expr>
}
@@ -0,0 +1,12 @@
KT element: KtIfExpression
FIR element: FirWhenExpressionImpl
FIR element rendered:
when () {
(R|<local>/x| is R|kotlin/String|) -> {
String(1)
}
else -> {
String(2)
}
}
@@ -0,0 +1 @@
val x = <expr>1</expr>
@@ -0,0 +1,5 @@
KT element: KtConstantExpression
FIR element: FirConstExpressionImpl
FIR element rendered:
Int(1)
@@ -0,0 +1,3 @@
fun foo(x: Any): Boolean {
return <expr>x is String</expr>
}
@@ -0,0 +1,5 @@
KT element: KtIsExpression
FIR element: FirTypeOperatorCallImpl
FIR element rendered:
(R|<local>/x| is R|kotlin/String|)
@@ -0,0 +1,4 @@
// WITH_STDLIB
val x = run <expr>{
1
}</expr>
@@ -0,0 +1,7 @@
KT element: KtLambdaArgument
FIR element: FirAnonymousFunctionExpressionImpl
FIR element rendered:
run@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> {
^ Int(1)
}
@@ -0,0 +1 @@
val x = <expr>(1 + 2)</expr>
@@ -0,0 +1,5 @@
KT element: KtParenthesizedExpression
FIR element: FirFunctionCallImpl
FIR element rendered:
Int(1).R|kotlin/Int.plus|(Int(2))
@@ -0,0 +1,5 @@
class A {
fun foo(){}
}
val y: A = A()
val x = <expr>A::foo</expr>
@@ -0,0 +1,5 @@
KT element: KtCallableReferenceExpression
FIR element: FirCallableReferenceAccessImpl
FIR element rendered:
Q|A|::R|/A.foo|
@@ -0,0 +1 @@
val x = <expr>"string"</expr>
@@ -0,0 +1,5 @@
KT element: KtStringTemplateExpression
FIR element: FirConstExpressionImpl
FIR element rendered:
String(string)
@@ -0,0 +1,3 @@
fun x() {
<expr>throw IllegalStateException()</expr>
}
@@ -0,0 +1,5 @@
KT element: KtThrowExpression
FIR element: FirThrowExpressionImpl
FIR element rendered:
throw R|java/lang/IllegalStateException.IllegalStateException|()
@@ -0,0 +1,3 @@
fun x() {
<expr>try { 1 } catch(e: Throwable) finally {}</expr>
}
@@ -0,0 +1,11 @@
KT element: KtTryExpression
FIR element: FirTryExpressionImpl
FIR element rendered:
try {
Int(1)
}
catch (e: R|kotlin/Throwable|) {
}
finally {
}
@@ -0,0 +1,3 @@
fun foo(x: Boolean): Boolean {
return <expr>!x</expr>
}
@@ -0,0 +1,5 @@
KT element: KtPrefixExpression
FIR element: FirFunctionCallImpl
FIR element rendered:
R|<local>/x|.R|kotlin/Boolean.not|()
@@ -0,0 +1,6 @@
fun foo(x: Any): String {
return <expr>when (x) {
is String -> "1"
else -> "2"
}</expr>
}
@@ -0,0 +1,12 @@
KT element: KtWhenExpression
FIR element: FirWhenExpressionImpl
FIR element rendered:
when (R|<local>/x|) {
($subj$ is R|kotlin/String|) -> {
String(1)
}
else -> {
String(2)
}
}
@@ -0,0 +1 @@
val x = <expr>"string ${1 + 2} template"</expr>
@@ -0,0 +1,5 @@
KT element: KtStringTemplateExpression
FIR element: FirStringConcatenationCallImpl
FIR element rendered:
<strcat>(String(string ), Int(1).R|kotlin/Int.plus|(Int(2)), String( template))
@@ -117,17 +117,119 @@ public class GetOrBuildFirTestGenerated extends AbstractGetOrBuildFirTest {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("asExpression.kt")
public void testAsExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/asExpression.kt");
}
@Test
@TestMetadata("binaryExpression.kt")
public void testBinaryExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/binaryExpression.kt");
}
@Test
@TestMetadata("blockExpression.kt")
public void testBlockExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/blockExpression.kt");
}
@Test
@TestMetadata("boolLiteral.kt")
public void testBoolLiteral() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/boolLiteral.kt");
}
@Test
@TestMetadata("classAccessExpression.kt")
public void testClassAccessExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/classAccessExpression.kt");
}
@Test
@TestMetadata("ifExpression.kt")
public void testIfExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/ifExpression.kt");
}
@Test
@TestMetadata("intLiteral.kt")
public void testIntLiteral() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/intLiteral.kt");
}
@Test
@TestMetadata("isExpression.kt")
public void testIsExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/isExpression.kt");
}
@Test
@TestMetadata("lambdaExpression.kt")
public void testLambdaExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/lambdaExpression.kt");
}
@Test
@TestMetadata("objectLiteralExpression.kt")
public void testObjectLiteralExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/objectLiteralExpression.kt");
}
@Test
@TestMetadata("parenthesizedExpression.kt")
public void testParenthesizedExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/parenthesizedExpression.kt");
}
@Test
@TestMetadata("propertyReferenceExpression.kt")
public void testPropertyReferenceExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/propertyReferenceExpression.kt");
}
@Test
@TestMetadata("stringLiteral.kt")
public void testStringLiteral() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/stringLiteral.kt");
}
@Test
@TestMetadata("stringTemplateExpressionEntry.kt")
public void testStringTemplateExpressionEntry() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/stringTemplateExpressionEntry.kt");
}
@Test
@TestMetadata("throwExpression.kt")
public void testThrowExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/throwExpression.kt");
}
@Test
@TestMetadata("tryExpression.kt")
public void testTryExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/tryExpression.kt");
}
@Test
@TestMetadata("unraryExpression.kt")
public void testUnraryExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/unraryExpression.kt");
}
@Test
@TestMetadata("whenExpression.kt")
public void testWhenExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/whenExpression.kt");
}
@Test
@TestMetadata("wholeStringTemplate.kt")
public void testWholeStringTemplate() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/wholeStringTemplate.kt");
}
}
@Nested