[Analysis API FIR] KtSymbolContainingDeclarationProvider: support script declarations

This commit also fixes a missing symbol for KtScriptInitializer
and some symbol pointers
Many tests marked as 'DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE'
due to KtFirFileSymbol#createPointer logic – the pointer can
be created only for PSI

^KT-61451
^KT-61887
^KT-62626 Fixed
^KT-62693
This commit is contained in:
Dmitrii Gridin
2023-10-18 20:11:46 +02:00
committed by Space Team
parent d689c1a38f
commit 17ab005668
23 changed files with 1389 additions and 27 deletions
@@ -6,9 +6,11 @@
package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.containingDeclarationProvider
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.symbols.KtScriptSymbol
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiSingleFileTest
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtScriptInitializer
import org.jetbrains.kotlin.psi.KtVisitorVoid
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
@@ -28,8 +30,13 @@ abstract class AbstractContainingDeclarationProviderByPsiTest : AbstractAnalysis
val currentDeclarationSymbol = dcl.getSymbol()
val expectedParentDeclarationSymbol = parentDeclaration?.getSymbol()
val actualParentDeclarationSymbol = currentDeclarationSymbol.getContainingSymbol()
testServices.assertions.assertEquals(expectedParentDeclarationSymbol, actualParentDeclarationSymbol) {
"Invalid parent declaration for $currentDeclarationSymbol, expected $expectedParentDeclarationSymbol but $actualParentDeclarationSymbol found"
if (dcl is KtScriptInitializer) {
testServices.assertions.assertTrue(currentDeclarationSymbol is KtScriptSymbol)
} else {
testServices.assertions.assertEquals(expectedParentDeclarationSymbol, actualParentDeclarationSymbol) {
"Invalid parent declaration for $currentDeclarationSymbol, expected $expectedParentDeclarationSymbol but $actualParentDeclarationSymbol found"
}
}
currentPath.add(dcl)