From 9c30411bb31dcb968879674c36cb4e39542bac83 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Wed, 5 Oct 2022 18:58:28 +0200 Subject: [PATCH] [AA] create psi-based pointer only for KtSymbolOrigin.SOURCE ^KT-54311 --- .../api/symbols/pointers/KtPsiBasedSymbolPointer.kt | 11 ++++------- .../testData/scopes/delegatedMemberScope/simple.kt | 2 +- .../scopes/delegatedMemberScope/withOverridden.kt | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt index ea576733d73..c3d288cf04e 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt @@ -35,23 +35,20 @@ public class KtPsiBasedSymbolPointer(private val psiPointer: Smart public companion object { public fun createForSymbolFromSource(symbol: S): KtPsiBasedSymbolPointer? { - if (symbol.origin == KtSymbolOrigin.LIBRARY) return null + if (symbol.origin != KtSymbolOrigin.SOURCE) return null // If symbol points to a generated member, we won't be able to recover it later on, because there is no corresponding // psi by which it can be found - if (symbol.origin == KtSymbolOrigin.SOURCE_MEMBER_GENERATED) return null - // (intersection | substitution) overrides are intermediate, non-materialized (i.e., fake) members, coming from super type(s). // Therefore, no corresponding psi either. - if (symbol.origin == KtSymbolOrigin.INTERSECTION_OVERRIDE) return null - if (symbol.origin == KtSymbolOrigin.SUBSTITUTION_OVERRIDE) return null val psi = when (val psi = symbol.psi) { is KtDeclaration -> psi is KtFile -> psi is KtObjectLiteralExpression -> psi.objectDeclaration - else -> null - } ?: return null + else -> return null + } + return KtPsiBasedSymbolPointer(psi.createSmartPointer()) } } diff --git a/analysis/analysis-api/testData/scopes/delegatedMemberScope/simple.kt b/analysis/analysis-api/testData/scopes/delegatedMemberScope/simple.kt index d0e79564be0..5796f26924e 100644 --- a/analysis/analysis-api/testData/scopes/delegatedMemberScope/simple.kt +++ b/analysis/analysis-api/testData/scopes/delegatedMemberScope/simple.kt @@ -1,4 +1,4 @@ -// DO_NOT_CHECK_SYMBOL_RESTORE +// DO_NOT_CHECK_SYMBOL_RESTORE_K1 interface I { fun foo() diff --git a/analysis/analysis-api/testData/scopes/delegatedMemberScope/withOverridden.kt b/analysis/analysis-api/testData/scopes/delegatedMemberScope/withOverridden.kt index 54fa53d376c..8e2ee83b7dc 100644 --- a/analysis/analysis-api/testData/scopes/delegatedMemberScope/withOverridden.kt +++ b/analysis/analysis-api/testData/scopes/delegatedMemberScope/withOverridden.kt @@ -1,4 +1,4 @@ -// DO_NOT_CHECK_SYMBOL_RESTORE +// DO_NOT_CHECK_SYMBOL_RESTORE_K1 interface I1 { fun foo()