[Analysis API] Invert the 'isAutonomousDeclaration' flag
This commit is contained in:
+2
-2
@@ -11,8 +11,8 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionDepend
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FileTowerProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerDataContextAllElementsCollector
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.canBePartOfParentDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.KtToFirMapping
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.RawFirNonLocalDeclarationBuilder
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.RawFirReplacement
|
||||
@@ -59,7 +59,7 @@ object LowLevelFirApiFacadeForResolveOnAir {
|
||||
|
||||
private fun PsiElement.onAirGetNonLocalContainingOrThisDeclaration(): KtElement? {
|
||||
return getNonLocalContainingOrThisDeclarationCodeFragmentAware { declaration ->
|
||||
declaration.isApplicableForOnAirResolve() && !declaration.canBePartOfParentDeclaration
|
||||
declaration.isApplicableForOnAirResolve() && declaration.isAutonomousDeclaration
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-2
@@ -261,7 +261,11 @@ private fun KtDeclaration.isPartOf(callableDeclaration: KtCallableDeclaration):
|
||||
internal val KtTypeParameter.containingDeclaration: KtDeclaration?
|
||||
get() = (parent as? KtTypeParameterList)?.parent as? KtDeclaration
|
||||
|
||||
internal val KtDeclaration.canBePartOfParentDeclaration: Boolean get() = this is KtPropertyAccessor || this is KtParameter || this is KtTypeParameter
|
||||
internal val KtDeclaration.isAutonomousDeclaration: Boolean
|
||||
get() = when (this) {
|
||||
is KtPropertyAccessor, is KtParameter, is KtTypeParameter -> false
|
||||
else -> true
|
||||
}
|
||||
|
||||
internal fun PsiElement.getNonLocalContainingOrThisDeclaration(predicate: (KtDeclaration) -> Boolean = { true }): KtDeclaration? {
|
||||
return getNonLocalContainingDeclaration(parentsWithSelf, predicate)
|
||||
@@ -310,7 +314,7 @@ internal fun getNonLocalContainingDeclaration(
|
||||
}
|
||||
}
|
||||
is KtDeclaration -> {
|
||||
if (parent.canBePartOfParentDeclaration) {
|
||||
if (!parent.isAutonomousDeclaration) {
|
||||
if (predicate(parent)) {
|
||||
propose(parent)
|
||||
}
|
||||
|
||||
+2
-2
@@ -10,8 +10,8 @@ import com.intellij.psi.PsiErrorElement
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.canBePartOfParentDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.codeFragment
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.errorWithFirSpecificEntries
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.findSourceByTraversingWholeTree
|
||||
@@ -85,7 +85,7 @@ internal class FileStructure private constructor(
|
||||
|
||||
private fun getStructureKtElement(element: KtElement): KtDeclaration? {
|
||||
val container = element.getNonLocalContainingOrThisDeclaration {
|
||||
!it.canBePartOfParentDeclaration
|
||||
it.isAutonomousDeclaration
|
||||
}
|
||||
|
||||
val resultedContainer = when {
|
||||
|
||||
+2
-2
@@ -10,9 +10,9 @@ import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirInternals
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.canBePartOfParentDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.containingDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousDeclaration
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
@@ -91,7 +91,7 @@ internal fun KtDeclaration.findSourceNonLocalFirDeclaration(firFile: FirFile, pr
|
||||
|
||||
@KtAnalysisApiInternals
|
||||
fun collectUseSiteContainers(element: PsiElement, resolveSession: LLFirResolveSession): List<FirDeclaration>? {
|
||||
val containingDeclaration = element.getNonLocalContainingOrThisDeclaration { !it.canBePartOfParentDeclaration } ?: return null
|
||||
val containingDeclaration = element.getNonLocalContainingOrThisDeclaration { it.isAutonomousDeclaration } ?: return null
|
||||
val containingFile = containingDeclaration.containingKtFile
|
||||
val firFile = resolveSession.getOrBuildFirFile(containingFile)
|
||||
return FirElementFinder.findPathToDeclarationWithTarget(firFile, containingDeclaration)
|
||||
|
||||
Reference in New Issue
Block a user