LL API: fix kt -> fir mapping for KtStringTemplateEntryWithExpression

This commit is contained in:
Ilya Kirillov
2021-07-15 16:19:19 +02:00
committed by teamcityserver
parent 9d53ad4346
commit 0554e2a083
4 changed files with 19 additions and 1 deletions
@@ -18,8 +18,8 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
import org.jetbrains.kotlin.idea.fir.low.level.api.file.structure.FileStructureCache
import org.jetbrains.kotlin.idea.fir.low.level.api.file.structure.FileStructureElement
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver
import org.jetbrains.kotlin.idea.fir.low.level.api.util.getElementTextInContext
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.declarationCanBeLazilyResolved
import org.jetbrains.kotlin.idea.fir.low.level.api.util.getElementTextInContext
import org.jetbrains.kotlin.idea.fir.low.level.api.util.isNonAnonymousClassOrObject
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
@@ -49,6 +49,7 @@ internal class FirElementBuilder {
deparenthesized.getArgumentExpression()
}
deparenthesized is KtObjectLiteralExpression -> deparenthesized.objectDeclaration
deparenthesized is KtStringTemplateEntryWithExpression -> deparenthesized.expression
else -> deparenthesized
}
}
@@ -0,0 +1 @@
val x = "string <expr>${1 + 2}</expr> template"
@@ -0,0 +1,5 @@
KT element: KtBlockStringTemplateEntry
FIR element: FirFunctionCallImpl
FIR element rendered:
Int(1).R|kotlin/Int.plus|(Int(2))
@@ -112,11 +112,22 @@ public class GetOrBuildFirTestGenerated extends AbstractGetOrBuildFirTest {
@TestMetadata("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions")
@TestDataPath("$PROJECT_ROOT")
public class Expressions {
@Test
public void testAllFilesPresentInExpressions() throws Exception {
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("objectLiteralExpression.kt")
public void testObjectLiteralExpression() throws Exception {
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/expressions/objectLiteralExpression.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");
}
}
@Nested