[kotlin] Remove usages of deprecated 'KaSymbolWithVisibility'

^KT-68882

GitOrigin-RevId: ccbe4cef84dc721bf118baec8e06c93a10c5e879
This commit is contained in:
Yan Zhulanow
2024-07-11 18:25:26 +09:00
committed by intellij-monorepo-bot
parent b14d821380
commit 9725f7322e
18 changed files with 28 additions and 56 deletions

View File

@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.resolution.*
import org.jetbrains.kotlin.analysis.api.signatures.KaFunctionSignature
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaAnnotatedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.types.KaType
import org.jetbrains.kotlin.analysis.api.types.KaTypeNullability
import org.jetbrains.kotlin.builtins.StandardNames
@@ -92,7 +91,7 @@ fun filterCandidateByReceiverTypeAndVisibility(
if (candidateReceiverType != null && receiverTypes.none { it.isSubTypeOf(candidateReceiverType, subtypingErrorTypePolicy) }) return false
// Filter out candidates not visible from call site
if (candidateSymbol is KaSymbolWithVisibility && !isVisible(candidateSymbol, fileSymbol, explicitReceiver, callElement)) return false
if (!isVisible(candidateSymbol, fileSymbol, explicitReceiver, callElement)) return false
return true
}

View File

@@ -4,9 +4,9 @@ package org.jetbrains.kotlin.idea.base.fir.codeInsight.tooling
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.symbols.KaClassSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolVisibility
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaAnnotatedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.idea.base.codeInsight.KotlinTestAvailabilityChecker
import org.jetbrains.kotlin.idea.base.codeInsight.tooling.AbstractGenericTestIconProvider
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -30,7 +30,7 @@ internal object SymbolBasedGenericTestIconProvider : AbstractGenericTestIconProv
private fun isTestDeclaration(symbol: KaAnnotatedSymbol): Boolean {
return when {
isIgnored(symbol) -> false
(symbol as? KaSymbolWithVisibility)?.visibility != KaSymbolVisibility.PUBLIC -> false
(symbol as? KaDeclarationSymbol)?.visibility != KaSymbolVisibility.PUBLIC -> false
KotlinTestAvailabilityChecker.TEST_FQ_NAME in symbol.annotations -> true
symbol is KaClassSymbol -> symbol.declaredMemberScope.callables.any { isTestDeclaration(it) }
else -> false

View File

@@ -13,9 +13,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolVisibility
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.idea.base.analysis.api.utils.getSymbolContainingMemberDeclarations
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.KotlinPsiUpdateModCommandAction
@@ -102,7 +99,7 @@ private fun retainNonOverridableMembers(
private val KaCallableSymbol.isOverridable: Boolean
get() = modality != KaSymbolModality.FINAL &&
(this as? KaSymbolWithVisibility)?.visibility != KaSymbolVisibility.PRIVATE &&
visibility != KaSymbolVisibility.PRIVATE &&
(this.getSymbolContainingMemberDeclarations() as? KaNamedClassSymbol)?.isFinalClass != true
private val KaNamedClassSymbol.isFinalClass: Boolean

View File

@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaFileSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.idea.base.analysis.api.utils.KtSymbolFromIndexProvider
import org.jetbrains.kotlin.idea.util.positionContext.KDocLinkNamePositionContext
import org.jetbrains.kotlin.idea.util.positionContext.KotlinNameReferencePositionContext
@@ -35,7 +34,7 @@ internal abstract class ImportCandidatesProvider(
context(KaSession)
@OptIn(KaExperimentalApi::class)
protected fun KaSymbol.isVisible(fileSymbol: KaFileSymbol): Boolean =
this is KaSymbolWithVisibility && isVisible(this, fileSymbol, receiverExpression = null, positionContext.position)
this is KaDeclarationSymbol && isVisible(this, fileSymbol, receiverExpression = null, positionContext.position)
protected fun PsiMember.canBeImported(): Boolean {
return when (this) {

View File

@@ -12,11 +12,6 @@ import org.jetbrains.kotlin.analysis.api.scopes.KaScope
import org.jetbrains.kotlin.analysis.api.symbols.KaClassSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaFunctionSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolVisibility
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.descriptors.Visibilities.Private
import org.jetbrains.kotlin.descriptors.Visibilities.Protected
import org.jetbrains.kotlin.descriptors.Visibilities.Public
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.codeinsight.api.classic.inspections.AbstractKotlinInspection
import org.jetbrains.kotlin.name.ClassId
@@ -71,8 +66,7 @@ private fun KtObjectDeclaration.doesImplementReadResolve(): Boolean = analyze(th
fun KaScope.isAnyReadResolve(vararg visibilities: KaSymbolVisibility): Boolean =
callables { it.asString() == JAVA_IO_SERIALIZATION_READ_RESOLVE }.any {
val functionLikeSymbol = it as? KaFunctionSymbol ?: return@any false
val visibility = (it as? KaSymbolWithVisibility)?.visibility
visibility in visibilities && functionLikeSymbol.valueParameters.isEmpty() && it.returnType.isAny
it.visibility in visibilities && functionLikeSymbol.valueParameters.isEmpty() && it.returnType.isAny
}
classSymbol.declaredMemberScope.isAnyReadResolve(KaSymbolVisibility.PUBLIC, KaSymbolVisibility.PRIVATE, KaSymbolVisibility.PROTECTED) ||
classSymbol.memberScope.isAnyReadResolve(KaSymbolVisibility.PUBLIC, KaSymbolVisibility.PROTECTED)

View File

@@ -9,7 +9,6 @@ import com.intellij.openapi.util.TextRange
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.symbols.KaCallableSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.idea.base.codeInsight.handlers.fixers.range
import org.jetbrains.kotlin.idea.base.psi.relativeTo
@@ -101,7 +100,7 @@ sealed class ChangeVisibilityModifierIntention(
val callableDescriptor = symbol as? KaCallableSymbol ?: return null
// cannot make visibility less than (or non-comparable with) any of the supers
if (callableDescriptor.allOverriddenSymbols
.map { (it as? KaSymbolWithVisibility)?.compilerVisibility?.compareTo(targetVisibility) }
.map { it.compilerVisibility?.compareTo(targetVisibility) }
.any { it == null || it > 0 }
) return null
}

View File

@@ -6,7 +6,6 @@ import com.intellij.modcommand.ModPsiUpdater
import com.intellij.openapi.util.TextRange
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.symbols.receiverType
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
import org.jetbrains.kotlin.analysis.api.types.KaErrorType
@@ -80,8 +79,7 @@ internal class RemoveExplicitTypeIntention :
if (declaration is KtFunction && declaration.isLocal) return false
if (declaration is KtProperty && declaration.isLocal) return false
val symbolWithVisibility = declaration.symbol as? KaSymbolWithVisibility ?: return false
return isPublicApi(symbolWithVisibility)
return isPublicApi(declaration.symbol)
}
context(KaSession)

View File

@@ -39,7 +39,6 @@ import org.jetbrains.kotlin.analysis.api.renderer.types.KaTypeRenderer
import org.jetbrains.kotlin.analysis.api.renderer.types.renderers.*
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.types.*
import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter
import org.jetbrains.kotlin.analysis.utils.printer.prettyPrint
@@ -455,7 +454,7 @@ internal class KotlinIdeDeclarationRenderer(
}
},
{
if (callableSymbol is KaSymbolWithVisibility && callableSymbol.visibility == KaSymbolVisibility.LOCAL) {
if (callableSymbol.visibility == KaSymbolVisibility.LOCAL) {
printer.append(highlight("local") { asKeyword })
}
},

View File

@@ -13,9 +13,9 @@ import com.intellij.psi.PsiElement
import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolVisibility
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer
import org.jetbrains.kotlin.idea.projectView.getStructureDeclarations
import org.jetbrains.kotlin.idea.structureView.AbstractKotlinStructureViewElement
@@ -138,7 +138,7 @@ class KotlinFirStructureViewElement(
}
class Visibility(symbol: KaSymbol?) {
private val visibility: KaSymbolVisibility? = (symbol as? KaSymbolWithVisibility)?.visibility
private val visibility: KaSymbolVisibility? = (symbol as? KaDeclarationSymbol)?.visibility
val isPublic: Boolean
get() = visibility == KaSymbolVisibility.PUBLIC

View File

@@ -10,9 +10,6 @@ import com.intellij.ui.RowIcon
import com.intellij.util.PlatformIcons
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtDeclaration
import javax.swing.Icon
@@ -101,7 +98,7 @@ object KtIconProvider {
}
context(KaSession)
private fun getVisibilityIcon(symbol: KaSymbol): Icon? = when ((symbol as? KaSymbolWithVisibility)?.visibility) {
private fun getVisibilityIcon(symbol: KaSymbol): Icon? = when ((symbol as? KaDeclarationSymbol)?.visibility) {
KaSymbolVisibility.PUBLIC -> PlatformIcons.PUBLIC_ICON
KaSymbolVisibility.PROTECTED,
KaSymbolVisibility.PACKAGE_PROTECTED,

View File

@@ -5,7 +5,6 @@ import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.config.AnalysisFlags
import org.jetbrains.kotlin.config.ExplicitApiMode
import org.jetbrains.kotlin.config.LanguageFeature
@@ -45,7 +44,7 @@ fun KtModifierKeywordToken.toVisibility(): Visibility = when (this) {
* Do we need something like @PublicApiFile to disable (or invert) this inspection per-file?
*/
context(KaSession)
private fun explicitVisibilityRequired(symbol: KaSymbolWithVisibility): Boolean {
private fun explicitVisibilityRequired(symbol: KaDeclarationSymbol): Boolean {
if ((symbol as? KaConstructorSymbol)?.isPrimary == true) return false // 1
if (symbol is KaPropertySymbol && (symbol.containingDeclaration as? KaNamedClassSymbol)?.isData == true) return false // 2
if ((symbol as? KaCallableSymbol)?.allOverriddenSymbols?.any() == true) return false // 3
@@ -103,7 +102,7 @@ fun KtDeclaration.implicitVisibility(): KtModifierKeywordToken? {
analyze(this) {
(symbol as KaCallableSymbol)
.allOverriddenSymbols
.mapNotNull { (it as? KaSymbolWithVisibility)?.compilerVisibility }
.map { it.compilerVisibility }
.maxWithOrNull { v1, v2 -> Visibilities.compare(v1, v2) ?: -1 }
?.toKeywordToken()
}

View File

@@ -7,7 +7,7 @@ import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.symbols.KaCallableSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaClassLikeSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaClassifierSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol
import org.jetbrains.kotlin.idea.base.utils.fqname.isJavaClassNotToBeUsedInKotlin
import org.jetbrains.kotlin.idea.completion.context.FirBasicCompletionContext
import org.jetbrains.kotlin.idea.util.positionContext.KDocNameReferencePositionContext
@@ -18,16 +18,16 @@ import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
internal fun interface CompletionVisibilityChecker {
context(KaSession)
fun isVisible(symbol: KaSymbolWithVisibility): Boolean
fun isVisible(symbol: KaDeclarationSymbol): Boolean
context(KaSession)
fun isVisible(symbol: KaCallableSymbol): Boolean {
return symbol !is KaSymbolWithVisibility || isVisible(symbol as KaSymbolWithVisibility)
return isVisible(symbol as KaDeclarationSymbol)
}
context(KaSession)
fun isVisible(symbol: KaClassifierSymbol): Boolean {
return symbol !is KaSymbolWithVisibility || isVisible(symbol as KaSymbolWithVisibility)
return isVisible(symbol as KaDeclarationSymbol)
}
companion object {
@@ -37,7 +37,7 @@ internal fun interface CompletionVisibilityChecker {
positionContext: KotlinRawPositionContext
): CompletionVisibilityChecker = object : CompletionVisibilityChecker {
context(KaSession)
override fun isVisible(symbol: KaSymbolWithVisibility): Boolean {
override fun isVisible(symbol: KaDeclarationSymbol): Boolean {
if (positionContext is KDocNameReferencePositionContext) return true
// Don't offer any deprecated items that could lead to compile errors.

View File

@@ -4,7 +4,6 @@ package org.jetbrains.kotlin.idea.completion.contributors.helpers
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.symbols.KaClassifierSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.idea.base.analysis.api.utils.KtSymbolFromIndexProvider
import org.jetbrains.kotlin.idea.completion.checkers.CompletionVisibilityChecker
import org.jetbrains.kotlin.name.Name
@@ -39,6 +38,6 @@ internal object FirClassifierProvider {
)
val javaDeclarations = symbolProvider.getJavaClassesByNameFilter(scopeNameFilter)
return (kotlinDeclarations + javaDeclarations)
.filter { visibilityChecker.isVisible(it as KaSymbolWithVisibility) }
.filter { visibilityChecker.isVisible(it) }
}
}

View File

@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.resolution.singleFunctionCallOrNull
import org.jetbrains.kotlin.analysis.api.resolution.symbol
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.symbols.markers.isPrivateOrPrivateToThis
import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.asJava.classes.KtLightClass
@@ -126,7 +125,7 @@ object KotlinUnusedSymbolUtil {
fun getPsiToReportProblem(declaration: KtNamedDeclaration, isJavaEntryPointInspection: UnusedDeclarationInspectionBase): PsiElement? {
val symbol = declaration.symbol
if (declaration.languageVersionSettings.getFlag(
AnalysisFlags.explicitApiMode) != ExplicitApiMode.DISABLED && (symbol as? KaSymbolWithVisibility)?.compilerVisibility?.isPublicAPI == true) {
AnalysisFlags.explicitApiMode) != ExplicitApiMode.DISABLED && symbol.compilerVisibility.isPublicAPI) {
return null
}
if (symbol is KaNamedFunctionSymbol && symbol.isOperator) return null

View File

@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.base.KaContextReceiver
import org.jetbrains.kotlin.analysis.api.scopes.KaScope
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.types.KaFunctionType
import org.jetbrains.kotlin.analysis.api.types.KaType
import org.jetbrains.kotlin.asJava.accessorNameByPropertyName
@@ -56,7 +55,7 @@ fun KaScope.findSiblingsByName(
}
val callables = callables(newName).filter { callable ->
symbol != callable &&
((callable as? KaSymbolWithVisibility)?.visibility != KaSymbolVisibility.PRIVATE || callable.containingDeclaration == containingSymbol)
(callable.visibility != KaSymbolVisibility.PRIVATE || callable.containingDeclaration == containingSymbol)
}
val classifierSymbols = classifiers(newName)
@@ -140,7 +139,7 @@ fun checkDeclarationNewNameConflicts(
}
is KaPackageSymbol -> {
fun KaDeclarationSymbol.isTopLevelPrivate(): Boolean = (this as? KaSymbolWithVisibility)?.visibility == KaSymbolVisibility.PRIVATE && this.location == KaSymbolLocation.TOP_LEVEL
fun KaDeclarationSymbol.isTopLevelPrivate(): Boolean = this.visibility == KaSymbolVisibility.PRIVATE && this.location == KaSymbolLocation.TOP_LEVEL
fun isInSameFile(s1: KaDeclarationSymbol, s2: KaDeclarationSymbol): Boolean = s1.psi?.containingFile == s2.psi?.containingFile

View File

@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.permissions.KaAllowAnalysisOnEdt
import org.jetbrains.kotlin.analysis.api.permissions.allowAnalysisOnEdt
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.idea.base.codeInsight.KotlinDeclarationNameValidator
@@ -116,7 +115,7 @@ class KotlinMethodDescriptor(c: KtNamedDeclaration) : KotlinModifiableMethodDesc
@OptIn(KaAllowAnalysisOnEdt::class, KaExperimentalApi::class)
private val _visibility = allowAnalysisOnEdt {
analyze(callable) {
(callable.symbol as? KaSymbolWithVisibility)?.compilerVisibility ?: Visibilities.Public
callable.symbol.compilerVisibility
}
}

View File

@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.renderer.declarations.impl.KaDeclarationRendererForSource
import org.jetbrains.kotlin.analysis.api.symbols.KaAnonymousObjectSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaClassSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.analysis.api.symbols.typeParameters
import org.jetbrains.kotlin.analysis.api.types.KaDefinitelyNotNullType
import org.jetbrains.kotlin.analysis.api.types.KaErrorType
@@ -153,12 +152,11 @@ fun isResolvableInScope(typeToCheck: KaType, scope: PsiElement, typeParameters:
return false
}
if (classSymbol is KaSymbolWithVisibility) {
val fileSymbol = (scope.containingFile as KtFile).symbol
if (!isVisible(classSymbol, fileSymbol, null, scope)) {
return false
}
val fileSymbol = (scope.containingFile as KtFile).symbol
if (!isVisible(classSymbol, fileSymbol, null, scope)) {
return false
}
typeToCheck.typeArguments.mapNotNull { it.type }.forEach {
if (!isResolvableInScope(it, scope, typeParameters)) return false
}

View File

@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.analyzeCopy
import org.jetbrains.kotlin.analysis.api.projectStructure.KaDanglingFileResolutionMode
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolVisibility
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaSymbolWithVisibility
import org.jetbrains.kotlin.asJava.toLightElements
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
@@ -200,7 +199,6 @@ context(KaSession)
private fun KtNamedDeclaration.isVisibleTo(usage: PsiElement): Boolean {
val file = (usage.containingFile as? KtFile)?.symbol ?: return false
val symbol = symbol
if (symbol !is KaSymbolWithVisibility) return false
return isVisible(symbol, file, position = usage)
}
@@ -267,7 +265,6 @@ private fun checkVisibilityConflictForNonMovedUsages(
fun KtNamedDeclaration.isMemberThatCanBeSkipped(): Boolean {
if (containingClass() == null) return false
analyze(this) {
val symbol = symbol as? KaSymbolWithVisibility ?: return false
val visibility = symbol.visibility
if (visibility == KaSymbolVisibility.PUBLIC || visibility == KaSymbolVisibility.PROTECTED) return true
}