LL API: fix kt -> fir mapping for KtImportList
This commit is contained in:
committed by
teamcityserver
parent
c266d3e075
commit
831f05a802
+5
-2
@@ -42,11 +42,14 @@ internal class FirModuleResolveStateDepended(
|
||||
originalState.getSessionFor(moduleInfo)
|
||||
|
||||
override fun getOrBuildFirFor(element: KtElement): FirElement? {
|
||||
val psi = originalState.elementBuilder.getPsiAsFirElementSource(element) ?: return null
|
||||
val elementBuilder = originalState.elementBuilder
|
||||
|
||||
val psi = elementBuilder.getPsiAsFirElementSource(element) ?: return null
|
||||
if (!elementBuilder.doKtElementHasCorrespondingFirElement(element)) return null
|
||||
|
||||
ktToFirMapping?.getFirOfClosestParent(psi, this)?.let { return it }
|
||||
|
||||
return originalState.elementBuilder.getOrBuildFirFor(
|
||||
return elementBuilder.getOrBuildFirFor(
|
||||
element = element,
|
||||
firFileBuilder = originalState.firFileBuilder,
|
||||
moduleFileCache = originalState.rootModuleSession.cache,
|
||||
|
||||
+10
@@ -52,6 +52,11 @@ internal class FirElementBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
fun doKtElementHasCorrespondingFirElement(ktElement: KtElement): Boolean = when (ktElement) {
|
||||
is KtImportList -> false
|
||||
else -> true
|
||||
}
|
||||
|
||||
fun getOrBuildFirFor(
|
||||
element: KtElement,
|
||||
firFileBuilder: FirFileBuilder,
|
||||
@@ -88,6 +93,11 @@ internal class FirElementBuilder {
|
||||
state: FirModuleResolveState,
|
||||
): FirElement? {
|
||||
require(element !is KtFile)
|
||||
|
||||
if (!doKtElementHasCorrespondingFirElement(element)) {
|
||||
return null
|
||||
}
|
||||
|
||||
val firFile = element.containingKtFile
|
||||
val fileStructure = fileStructureCache.getFileStructure(firFile, moduleFileCache)
|
||||
|
||||
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtImportList
|
||||
|
||||
<expr>
|
||||
import a.b.c
|
||||
import b.c.d
|
||||
</expr>
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
KT element: KtImportList
|
||||
FIR element: null
|
||||
|
||||
FIR element rendered:
|
||||
null
|
||||
+6
@@ -101,6 +101,12 @@ public class GetOrBuildFirTestGenerated extends AbstractGetOrBuildFirTest {
|
||||
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/inImport/firstImportNamePart.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("importList.kt")
|
||||
public void testImportList() throws Exception {
|
||||
runTest("idea/idea-frontend-fir/idea-fir-low-level-api/testdata/getOrBuildFir/inImport/importList.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("middleImportNamePart.kt")
|
||||
public void testMiddleImportNamePart() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user