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()