mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
[kotlin] Adapt to changes in 'containingSymbol' and 'containingDeclaration'
^KT-69535 GitOrigin-RevId: 59dfdb3fea56a3858be459988e41640b8ed53ae5
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f85553a22a
commit
ace6572a1c
@@ -42,7 +42,7 @@ internal class UsePlatformProcessAwaitExitInspection : LocalInspectionTool() {
|
||||
val calledMethodName = calledSymbol.name.identifier
|
||||
if (isNotForbidden(calledMethodName)) return false
|
||||
if (calledSymbol.valueParameters.isNotEmpty()) return false
|
||||
val className = (calledSymbol.containingSymbol?.psi as? PsiClass)?.qualifiedName ?: return false
|
||||
val className = (calledSymbol.containingDeclaration?.psi as? PsiClass)?.qualifiedName ?: return false
|
||||
return className == "java.lang.Process"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.idea.base.projectStructure.languageVersionSettings
|
||||
context(KaSession)
|
||||
@ApiStatus.Internal
|
||||
fun isSoftDeprecatedEnumValuesMethodAndEntriesPropertyExists(symbol: KaCallableSymbol): Boolean {
|
||||
val enumClassSymbol = (symbol.containingSymbol as? KaClassSymbol) ?: return false
|
||||
val enumClassSymbol = (symbol.containingDeclaration as? KaClassSymbol) ?: return false
|
||||
return isSoftDeprecatedEnumValuesMethod(symbol, enumClassSymbol) &&
|
||||
getEntriesPropertyOfEnumClass(enumClassSymbol) != null
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ object KotlinIconProvider {
|
||||
is KaTypeParameterSymbol -> IconManager.getInstance().getPlatformIcon(PlatformIcons.Class)
|
||||
is KaTypeAliasSymbol -> KotlinIcons.TYPE_ALIAS
|
||||
is KaEnumEntrySymbol -> KotlinIcons.ENUM
|
||||
is KaConstructorSymbol -> symbol.containingSymbol?.let { getIconFor(it) }
|
||||
is KaConstructorSymbol -> symbol.containingDeclaration?.let { getIconFor(it) }
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ internal object SymbolBasedGenericTestIconProvider : AbstractGenericTestIconProv
|
||||
return true
|
||||
}
|
||||
|
||||
val containingSymbol = symbol.containingSymbol as? KaClassSymbol ?: return false
|
||||
val containingSymbol = symbol.containingDeclaration as? KaClassSymbol ?: return false
|
||||
return isIgnored(containingSymbol)
|
||||
}
|
||||
}
|
||||
@@ -81,7 +81,7 @@ private fun getTargetClasses(
|
||||
|
||||
context(KaSession)
|
||||
private val KaDeclarationSymbol.parentsWithSelf: Sequence<KaDeclarationSymbol>
|
||||
get() = generateSequence(this) { it.containingSymbol }
|
||||
get() = generateSequence(this) { it.containingDeclaration }
|
||||
|
||||
private fun createReplaceString(targetClasses: List<KaNamedClassOrObjectSymbol>): String {
|
||||
return targetClasses.mapIndexed { index, c ->
|
||||
|
||||
@@ -84,7 +84,7 @@ private fun KaDeclarationSymbol?.getInlineCallSiteVisibility(): Visibility? {
|
||||
}
|
||||
result = visibility
|
||||
}
|
||||
declaration = declaration.containingSymbol
|
||||
declaration = declaration.containingDeclaration
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ private fun computeElementContext(element: KtNamedDeclaration): ElementContext?
|
||||
val allOverriddenSymbols = symbol.allOverriddenSymbols.toList()
|
||||
for (overriddenSymbol in retainNonOverridableMembers(allOverriddenSymbols)) {
|
||||
val overriddenMember = overriddenSymbol.psi
|
||||
val containingSymbol = overriddenSymbol.containingSymbol
|
||||
val containingSymbol = overriddenSymbol.containingDeclaration
|
||||
if (overriddenMember == null || overriddenMember !is KtCallableDeclaration || !overriddenMember.canRefactorElement() ||
|
||||
containingSymbol !is KaNamedSymbol || overriddenMember.modifierList?.hasModifier(KtTokens.OPEN_KEYWORD) == true
|
||||
) {
|
||||
|
||||
@@ -48,10 +48,10 @@ internal object SpecifyOverrideExplicitlyFixFactory {
|
||||
val delegateTargetSymbol = specifier.getSymbol() ?: return@ModCommandBased emptyList()
|
||||
|
||||
if (delegateTargetSymbol is KaValueParameterSymbol &&
|
||||
delegateTargetSymbol.containingSymbol.let {
|
||||
delegateTargetSymbol.containingDeclaration.let {
|
||||
it is KaConstructorSymbol &&
|
||||
it.isPrimary &&
|
||||
it.containingSymbol == delegatedDeclaration.containingSymbol
|
||||
it.containingDeclaration == delegatedDeclaration.containingDeclaration
|
||||
}
|
||||
) {
|
||||
val delegateParameter = delegateTargetSymbol.psi as? KtParameter
|
||||
|
||||
@@ -343,7 +343,7 @@ class ImportQuickFix(
|
||||
}
|
||||
|
||||
context(KaSession)
|
||||
private fun KaNamedClassOrObjectSymbol.isNested(): Boolean = containingSymbol is KaNamedClassOrObjectSymbol
|
||||
private fun KaNamedClassOrObjectSymbol.isNested(): Boolean = containingDeclaration is KaNamedClassOrObjectSymbol
|
||||
|
||||
context(KaSession)
|
||||
private fun KaDeclarationSymbol.getImportKind(): ImportFixHelper.ImportKind? = when {
|
||||
|
||||
@@ -48,7 +48,7 @@ fun isStringPlusExpressionWithoutNewLineInOperands(expression: KtBinaryExpressio
|
||||
|
||||
if (expression.expressionType?.isString != true) return false
|
||||
val plusOperation = expression.operationReference.mainReference.resolveToSymbol() as? KaCallableSymbol
|
||||
val classContainingPlus = plusOperation?.containingSymbol as? KaNamedClassOrObjectSymbol
|
||||
val classContainingPlus = plusOperation?.containingDeclaration as? KaNamedClassOrObjectSymbol
|
||||
return if (classContainingPlus != null) {
|
||||
classContainingPlus.classId?.asSingleFqName() == StandardNames.FqNames.string.toSafe()
|
||||
} else {
|
||||
|
||||
@@ -49,7 +49,7 @@ abstract class EnumValuesSoftDeprecateInspectionBase : DeprecationCollectingInsp
|
||||
analyze(callExpression) {
|
||||
val resolvedCall = callExpression.resolveToCall()?.successfulFunctionCallOrNull() ?: return
|
||||
val resolvedCallSymbol = resolvedCall.partiallyAppliedSymbol.symbol
|
||||
val enumClassSymbol = (resolvedCallSymbol.containingSymbol as? KaClassSymbol) ?: return
|
||||
val enumClassSymbol = (resolvedCallSymbol.containingDeclaration as? KaClassSymbol) ?: return
|
||||
|
||||
if (!isSoftDeprecatedEnumValuesMethod(resolvedCallSymbol, enumClassSymbol)) {
|
||||
return
|
||||
@@ -92,7 +92,7 @@ abstract class EnumValuesSoftDeprecateInspectionBase : DeprecationCollectingInsp
|
||||
|
||||
context(KaSession)
|
||||
private fun createQuickFix(callExpression: KtCallExpression, symbol: KaFunctionSymbol): LocalQuickFix? {
|
||||
val enumClassSymbol = symbol.containingSymbol as? KaClassSymbol
|
||||
val enumClassSymbol = symbol.containingDeclaration as? KaClassSymbol
|
||||
val enumClassQualifiedName = enumClassSymbol?.classId?.asFqNameString() ?: return null
|
||||
return createQuickFix(getReplaceFixType(callExpression), enumClassQualifiedName)
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ internal class EqualsOrHashCodeInspection : AbstractKotlinInspection() {
|
||||
analyze(targetClass) {
|
||||
val classSymbol = targetClass.getClassOrObjectSymbol() ?: return@analyze
|
||||
val equalsMethod = findEqualsMethodForClass(classSymbol) as? KaNamedFunctionSymbol ?: return@analyze
|
||||
val superContainingEqualsMethod = equalsMethod.containingSymbol ?: return@analyze
|
||||
val superContainingEqualsMethod = equalsMethod.containingDeclaration ?: return@analyze
|
||||
|
||||
val parameterName = equalsMethod.valueParameters.singleOrNull()?.name?.asString() ?: return@analyze
|
||||
|
||||
@@ -303,7 +303,7 @@ internal class EqualsOrHashCodeInspection : AbstractKotlinInspection() {
|
||||
|
||||
val classSymbol = targetClass.getClassOrObjectSymbol() ?: return@analyze
|
||||
val hashCodeMethod = findHashCodeMethodForClass(classSymbol) as? KaNamedFunctionSymbol ?: return@analyze
|
||||
val superContainingHashCodeMethod = hashCodeMethod.containingSymbol ?: return@analyze
|
||||
val superContainingHashCodeMethod = hashCodeMethod.containingDeclaration ?: return@analyze
|
||||
|
||||
/**
|
||||
* TODO: We have to add a wizard to select members used for hashCode. See how
|
||||
|
||||
@@ -55,7 +55,7 @@ internal class RemoveRedundantQualifierNameInspection : AbstractKotlinInspection
|
||||
}
|
||||
},
|
||||
callableShortenStrategy = { callableSymbol ->
|
||||
val containingSymbol = callableSymbol.containingSymbol
|
||||
val containingSymbol = callableSymbol.containingDeclaration
|
||||
|
||||
if (callableSymbol !is KaEnumEntrySymbol && (containingSymbol.isEnumClass() || containingSymbol.isEnumCompanionObject())) {
|
||||
ShortenStrategy.DO_NOT_SHORTEN
|
||||
@@ -96,7 +96,7 @@ context (KaSession)
|
||||
private fun KaDeclarationSymbol.getContainingClassForCompanionObject(): KaNamedClassOrObjectSymbol? {
|
||||
if (this !is KaClassSymbol || this.classKind != KaClassKind.COMPANION_OBJECT) return null
|
||||
|
||||
val containingClass = containingSymbol as? KaNamedClassOrObjectSymbol
|
||||
val containingClass = containingDeclaration as? KaNamedClassOrObjectSymbol
|
||||
return containingClass?.takeIf { it.companionObject == this }
|
||||
}
|
||||
|
||||
|
||||
@@ -101,6 +101,6 @@ internal class SelfAssignmentInspection : KotlinApplicableInspectionBase.Simple<
|
||||
is KtNameReferenceExpression -> return receiverExpression.mainReference.resolveToSymbol()
|
||||
}
|
||||
|
||||
return callSymbol.containingSymbol as? KaClassSymbol
|
||||
return callSymbol.containingDeclaration as? KaClassSymbol
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ class KotlinFunctionCallInstruction(
|
||||
val constructedClass = (((expr.resolveToCall() as? KaSuccessCallInfo)
|
||||
?.call as? KaCallableMemberCall<*, *>)
|
||||
?.partiallyAppliedSymbol?.symbol as? KaConstructorSymbol)
|
||||
?.containingSymbol as? KaClassSymbol
|
||||
?.containingDeclaration as? KaClassSymbol
|
||||
if (constructedClass != null) {
|
||||
// Set exact class type for constructor
|
||||
return TypeConstraints.exactClass(constructedClass.classDef())
|
||||
|
||||
@@ -143,7 +143,7 @@ class KtVariableDescriptor(
|
||||
if (!isTrackableProperty(symbol)) return null
|
||||
val parent = expr.parent
|
||||
var qualifier: DfaVariableValue? = null
|
||||
if ((symbol.containingSymbol as? KaClassSymbol)?.classKind == KaClassKind.OBJECT) {
|
||||
if ((symbol.containingDeclaration as? KaClassSymbol)?.classKind == KaClassKind.OBJECT) {
|
||||
// property in an object: singleton, can track
|
||||
return varFactory.createVariableValue(symbol.variableDescriptor(), null)
|
||||
}
|
||||
@@ -163,7 +163,7 @@ class KtVariableDescriptor(
|
||||
if (functionLiteral != null && type != null) {
|
||||
qualifier = varFactory.createVariableValue(KtLambdaThisVariableDescriptor(functionLiteral, type.toDfType()))
|
||||
} else {
|
||||
val classOrObject = symbol.containingSymbol as? KaClassSymbol
|
||||
val classOrObject = symbol.containingDeclaration as? KaClassSymbol
|
||||
if (classOrObject != null) {
|
||||
val dfType = TypeConstraints.exactClass(classOrObject.classDef()).instanceOf().asDfType()
|
||||
qualifier = varFactory.createVariableValue(KtThisDescriptor(dfType))
|
||||
|
||||
@@ -399,7 +399,7 @@ private fun isExtensionFunctionType(type: KaType): Boolean {
|
||||
|
||||
context(KaSession)
|
||||
private fun KaNamedFunctionSymbol.overloadedFunctions(lambdaArgument: KtLambdaExpression): List<KaNamedFunctionSymbol> {
|
||||
val scope = when (val containingSymbol = this.containingSymbol) {
|
||||
val scope = when (val containingSymbol = this.containingDeclaration) {
|
||||
is KaClassSymbol -> containingSymbol.memberScope
|
||||
else -> lambdaArgument.containingKtFile.scopeContext(lambdaArgument).compositeScope()
|
||||
}
|
||||
|
||||
@@ -158,7 +158,7 @@ private fun isReferenceToObjectMemberOrUnresolved(qualifiedAccess: KtExpression)
|
||||
else -> return false
|
||||
} as? KaSymbolWithKind ?: return true
|
||||
if (referencedSymbol is KaConstructorSymbol) return false
|
||||
return (referencedSymbol.containingSymbol as? KaClassSymbol)?.classKind?.isObject ?: true
|
||||
return (referencedSymbol.containingDeclaration as? KaClassSymbol)?.classKind?.isObject ?: true
|
||||
}
|
||||
|
||||
private fun KaDeclarationSymbol.isEnum(): Boolean = safeAs<KaClassSymbol>()?.classKind == KaClassKind.ENUM_CLASS
|
||||
|
||||
@@ -143,7 +143,7 @@ class KotlinCallHierarchyNodeDescriptor(
|
||||
is KtClassOrObject -> {
|
||||
when {
|
||||
element is KtObjectDeclaration && element.isCompanion() -> {
|
||||
val containingDescriptor = declarationSymbol.containingSymbol
|
||||
val containingDescriptor = declarationSymbol.containingDeclaration
|
||||
if (containingDescriptor !is KaClassSymbol) return null
|
||||
declarationSymbol = containingDescriptor
|
||||
elementText = renderClassOrObject(declarationSymbol)
|
||||
@@ -172,7 +172,7 @@ class KotlinCallHierarchyNodeDescriptor(
|
||||
|
||||
if (elementText == null) return null
|
||||
var containerText: String? = null
|
||||
var containerDescriptor = declarationSymbol.containingSymbol
|
||||
var containerDescriptor = declarationSymbol.containingDeclaration
|
||||
while (containerDescriptor != null) {
|
||||
if (containerDescriptor is KaPackageSymbol) {
|
||||
break
|
||||
@@ -182,7 +182,7 @@ class KotlinCallHierarchyNodeDescriptor(
|
||||
val identifier = name.identifier
|
||||
containerText = if (containerText != null) "$identifier.$containerText" else identifier
|
||||
}
|
||||
containerDescriptor = containerDescriptor.containingSymbol
|
||||
containerDescriptor = containerDescriptor.containingDeclaration
|
||||
}
|
||||
return if (containerText != null) "$containerText.$elementText" else elementText
|
||||
}
|
||||
@@ -192,7 +192,7 @@ class KotlinCallHierarchyNodeDescriptor(
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
fun renderNamedFunction(symbol: KaFunctionSymbol): String? {
|
||||
val name = ((symbol as? KaNamedFunctionSymbol)?.name ?: ((symbol as? KaConstructorSymbol)?.containingSymbol as? KaClassSymbol)?.name)?.asString() ?: return null
|
||||
val name = ((symbol as? KaNamedFunctionSymbol)?.name ?: ((symbol as? KaConstructorSymbol)?.containingDeclaration as? KaClassSymbol)?.name)?.asString() ?: return null
|
||||
val paramTypes =
|
||||
StringUtil.join(
|
||||
symbol.valueParameters,
|
||||
|
||||
@@ -148,7 +148,7 @@ private fun computeLocalDocumentation(element: PsiElement, originalElement: PsiE
|
||||
|
||||
context(KaSession)
|
||||
private fun getContainerInfo(ktDeclaration: KtDeclaration): HtmlChunk {
|
||||
val containingSymbol = ktDeclaration.symbol.containingSymbol
|
||||
val containingSymbol = ktDeclaration.symbol.containingDeclaration
|
||||
val fqName = (containingSymbol as? KaClassLikeSymbol)?.classId?.asFqNameString()
|
||||
?: (ktDeclaration.containingFile as? KtFile)?.packageFqName?.takeIf { !it.isRoot }?.asString()
|
||||
|
||||
@@ -199,7 +199,7 @@ private fun @receiver:Nls StringBuilder.renderEnumSpecialFunction(
|
||||
val symbol = referenceExpression.resolveToCall()?.successfulFunctionCallOrNull()?.partiallyAppliedSymbol?.symbol as? KaNamedSymbol
|
||||
val name = symbol?.name?.asString()
|
||||
if (name != null && symbol is KaDeclarationSymbol) {
|
||||
val containingClass = symbol.containingSymbol as? KaClassSymbol
|
||||
val containingClass = symbol.containingDeclaration as? KaClassSymbol
|
||||
val superClasses = containingClass?.superTypes?.mapNotNull { t -> t.expandedSymbol }
|
||||
val kdoc = superClasses?.firstNotNullOfOrNull { superClass ->
|
||||
val navigationElement = superClass.psi?.navigationElement
|
||||
@@ -308,7 +308,7 @@ private fun findKDoc(symbol: KaSymbol): KDocContent? {
|
||||
}
|
||||
|
||||
if (symbol is KaValueParameterSymbol) {
|
||||
val containingSymbol = symbol.containingSymbol as? KaNamedFunctionSymbol
|
||||
val containingSymbol = symbol.containingDeclaration as? KaNamedFunctionSymbol
|
||||
if (containingSymbol != null) {
|
||||
val idx = containingSymbol.valueParameters.indexOf(symbol)
|
||||
containingSymbol.getExpectsForActual().filterIsInstance<KaNamedFunctionSymbol>().mapNotNull { expectFunction ->
|
||||
|
||||
@@ -248,7 +248,7 @@ internal class KotlinIdeDeclarationRenderer(
|
||||
symbol is KaClassSymbol -> !(symbol.classKind == KaClassKind.INTERFACE && symbol.modality == KaSymbolModality.ABSTRACT || symbol.classKind.isObject && symbol.modality == KaSymbolModality.FINAL)
|
||||
|
||||
symbol is KaCallableSymbol -> {
|
||||
symbol.modality == KaSymbolModality.OPEN || symbol.containingSymbol != null && symbol.modality == KaSymbolModality.FINAL || symbol.modality == KaSymbolModality.ABSTRACT
|
||||
symbol.modality == KaSymbolModality.OPEN || symbol.containingDeclaration != null && symbol.modality == KaSymbolModality.FINAL || symbol.modality == KaSymbolModality.ABSTRACT
|
||||
}
|
||||
|
||||
else -> false
|
||||
@@ -425,7 +425,7 @@ internal class KotlinIdeDeclarationRenderer(
|
||||
}
|
||||
val qName = when (owner) {
|
||||
is KaClassType -> owner.classId.asSingleFqName()
|
||||
is KaTypeParameterType -> owner.symbol.containingSymbol?.getFqNameIfPackageOrNonLocal()?.child(name)
|
||||
is KaTypeParameterType -> owner.symbol.containingDeclaration?.getFqNameIfPackageOrNonLocal()?.child(name)
|
||||
?: FqName.topLevel(name)
|
||||
|
||||
else -> FqName.topLevel(name)
|
||||
@@ -498,7 +498,7 @@ internal class KotlinIdeDeclarationRenderer(
|
||||
if (callableSymbol is KaNamedSymbol) {
|
||||
declarationRenderer.nameRenderer.renderName(analysisSession, callableSymbol, declarationRenderer, printer)
|
||||
} else if (callableSymbol is KaConstructorSymbol) {
|
||||
(callableSymbol.containingSymbol as? KaNamedSymbol)?.let {
|
||||
(callableSymbol.containingDeclaration as? KaNamedSymbol)?.let {
|
||||
printer.append(highlight(it.name.renderName()) {
|
||||
asClassName
|
||||
})
|
||||
@@ -664,7 +664,7 @@ internal class KotlinIdeDeclarationRenderer(
|
||||
printer: PrettyPrinter
|
||||
): Unit = with(analysisSession) {
|
||||
if (symbol is KaClassSymbol && symbol.classKind == KaClassKind.COMPANION_OBJECT && symbol.name == SpecialNames.DEFAULT_NAME_FOR_COMPANION_OBJECT) {
|
||||
val className = (symbol.containingSymbol as? KaClassSymbol)?.name
|
||||
val className = (symbol.containingDeclaration as? KaClassSymbol)?.name
|
||||
if (className != null) {
|
||||
printer.append(highlight("of ") { asInfo } )
|
||||
printer.append(highlight(className.renderName()) { asClassName } )
|
||||
|
||||
@@ -90,7 +90,7 @@ object K2CreateFunctionFromUsageUtil {
|
||||
val ktType = variable.returnType
|
||||
val symbol = variable.symbol as? KaCallableSymbol
|
||||
val parameterType = symbol?.receiverType ?: (variable.symbol
|
||||
.containingSymbol as? KaNamedClassOrObjectSymbol)?.defaultType ?: builtinTypes.nullableAny
|
||||
.containingDeclaration as? KaNamedClassOrObjectSymbol)?.defaultType ?: builtinTypes.nullableAny
|
||||
buildClassType(ClassId.fromString("kotlin/properties/$delegateClassName")) {
|
||||
argument(parameterType)
|
||||
argument(ktType)
|
||||
|
||||
@@ -176,7 +176,7 @@ internal class KotlinFirStructureElementPresentation(
|
||||
}
|
||||
}
|
||||
|
||||
val containingSymbol = symbol?.containingSymbol
|
||||
val containingSymbol = symbol?.containingDeclaration
|
||||
|
||||
if (ktElement is KtDeclaration && containingSymbol == ktElement.symbol) {
|
||||
return null
|
||||
|
||||
@@ -78,7 +78,7 @@ private fun checkDispatchReceiver(target: CallTarget): Boolean {
|
||||
dispatchReceiver = dispatchReceiver.original
|
||||
}
|
||||
|
||||
val containingClass = target.symbol.containingSymbol as? KaClassSymbol ?: return true
|
||||
val containingClass = target.symbol.containingDeclaration as? KaClassSymbol ?: return true
|
||||
|
||||
if (dispatchReceiver is KaExplicitReceiverValue) {
|
||||
if (dispatchReceiver.isSafeNavigation) {
|
||||
@@ -92,7 +92,7 @@ private fun checkDispatchReceiver(target: CallTarget): Boolean {
|
||||
receiverSymbol.isOperator
|
||||
&& receiverSymbol.name.asString() == "invoke"
|
||||
&& containingClass.classKind.isObject
|
||||
&& receiverSymbol.containingSymbol == containingClass
|
||||
&& receiverSymbol.containingDeclaration == containingClass
|
||||
}
|
||||
is KaClassSymbol -> {
|
||||
receiverSymbol.classKind.isObject
|
||||
|
||||
@@ -59,7 +59,7 @@ internal class AnonymousTemplateEditingListener(private val psiFile: PsiFile, pr
|
||||
if (symbol is KaNamedClassOrObjectSymbol) {
|
||||
yield(symbol)
|
||||
} else if (symbol is KaConstructorSymbol) {
|
||||
val containingClassSymbol = symbol.containingSymbol as? KaNamedClassOrObjectSymbol
|
||||
val containingClassSymbol = symbol.containingDeclaration as? KaNamedClassOrObjectSymbol
|
||||
if (containingClassSymbol != null) {
|
||||
yield(containingClassSymbol)
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ internal val MatchingHandler.withinHierarchyTextFilterSet: Boolean
|
||||
context(KaSession)
|
||||
fun KtExpression.findDispatchReceiver(): KaType? {
|
||||
val symbol = resolveToCall()?.successfulFunctionCallOrNull()?.partiallyAppliedSymbol?.symbol ?: return null
|
||||
val containingClass = symbol.containingSymbol as? KaClassSymbol ?: return null
|
||||
val containingClass = symbol.containingDeclaration as? KaClassSymbol ?: return null
|
||||
val classId = containingClass.classId ?: return null
|
||||
val fromKotlinPkg = classId.packageFqName.asString().startsWith("kotlin")
|
||||
val isFunctionCall = classId.relativeClassName.asString().startsWith("Function")
|
||||
|
||||
@@ -62,12 +62,12 @@ object AddQualifiersUtil {
|
||||
|
||||
fun isTopLevelCallable(callableSymbol: KaSymbol): Boolean {
|
||||
if (callableSymbol is KaConstructorSymbol) {
|
||||
val containingClassSymbol = callableSymbol.containingSymbol
|
||||
if (containingClassSymbol?.containingSymbol == null) {
|
||||
val containingClassSymbol = callableSymbol.containingDeclaration
|
||||
if (containingClassSymbol?.containingDeclaration == null) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return callableSymbol is KaCallableSymbol && callableSymbol.containingSymbol == null
|
||||
return callableSymbol is KaCallableSymbol && callableSymbol.containingDeclaration == null
|
||||
}
|
||||
|
||||
if (isTopLevelCallable(contextSymbol)) return false
|
||||
|
||||
@@ -98,7 +98,7 @@ fun KtReference.resolveCompanionObjectShortReferenceToContainingClassSymbol(): K
|
||||
// class name reference resolves to companion
|
||||
if (expression.name == symbol.name?.asString()) return null
|
||||
|
||||
val containingSymbol = symbol.containingSymbol as? KaNamedClassOrObjectSymbol
|
||||
val containingSymbol = symbol.containingDeclaration as? KaNamedClassOrObjectSymbol
|
||||
return containingSymbol?.takeIf { it.companionObject == symbol }
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ private fun getAssociatedClass(symbol: KaSymbol): KaClassSymbol? {
|
||||
if (symbol !is KaCallableSymbol) return null
|
||||
return when (symbol) {
|
||||
is KaNamedFunctionSymbol, is KaPropertySymbol ->
|
||||
if (symbol.isExtension) symbol.receiverType?.expandedSymbol else symbol.containingSymbol as? KaClassSymbol
|
||||
if (symbol.isExtension) symbol.receiverType?.expandedSymbol else symbol.containingDeclaration as? KaClassSymbol
|
||||
is KaVariableSymbol -> {
|
||||
val variableType = symbol.returnType as? KaFunctionType
|
||||
variableType?.receiverType?.expandedSymbol
|
||||
|
||||
@@ -43,6 +43,6 @@ fun KtNameReferenceExpression.getImplicitLambdaParameterSymbol(): KaValueParamet
|
||||
context(KaSession)
|
||||
fun KaValueParameterSymbol.getFunctionLiteralByImplicitLambdaParameterSymbol(): KtFunctionLiteral? {
|
||||
if (!isImplicitLambdaParameter) return null
|
||||
val lambda = containingSymbol as? KaAnonymousFunctionSymbol ?: return null
|
||||
val lambda = containingDeclaration as? KaAnonymousFunctionSymbol ?: return null
|
||||
return lambda.psi as? KtFunctionLiteral
|
||||
}
|
||||
|
||||
@@ -47,10 +47,10 @@ fun KtModifierKeywordToken.toVisibility(): Visibility = when (this) {
|
||||
context(KaSession)
|
||||
private fun explicitVisibilityRequired(symbol: KaSymbolWithVisibility): Boolean {
|
||||
if ((symbol as? KaConstructorSymbol)?.isPrimary == true) return false // 1
|
||||
if (symbol is KaPropertySymbol && (symbol.containingSymbol as? KaNamedClassOrObjectSymbol)?.isData == true) return false // 2
|
||||
if (symbol is KaPropertySymbol && (symbol.containingDeclaration as? KaNamedClassOrObjectSymbol)?.isData == true) return false // 2
|
||||
if ((symbol as? KaCallableSymbol)?.allOverriddenSymbols?.any() == true) return false // 3
|
||||
if (symbol is KaPropertyAccessorSymbol) return false // 4
|
||||
if (symbol is KaPropertySymbol && (symbol.containingSymbol as? KaClassSymbol)?.classKind == KaClassKind.ANNOTATION_CLASS) return false // 5
|
||||
if (symbol is KaPropertySymbol && (symbol.containingDeclaration as? KaClassSymbol)?.classKind == KaClassKind.ANNOTATION_CLASS) return false // 5
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ internal abstract class FirCompletionContributorBase<C : KotlinRawPositionContex
|
||||
val symbol = signature.symbol
|
||||
val name = when (symbol) {
|
||||
is KaNamedSymbol -> symbol.name
|
||||
is KaConstructorSymbol -> (symbol.containingSymbol as? KaNamedClassOrObjectSymbol)?.name
|
||||
is KaConstructorSymbol -> (symbol.containingDeclaration as? KaNamedClassOrObjectSymbol)?.name
|
||||
else -> null
|
||||
} ?: return
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ internal object CallableMetadataProvider {
|
||||
private fun getExpectedNonExtensionReceiver(symbol: KaCallableSymbol): KaClassSymbol? {
|
||||
val containingClass = symbol.originalContainingClassForOverride
|
||||
return if (symbol is KaConstructorSymbol && (containingClass as? KaNamedClassOrObjectSymbol)?.isInner == true) {
|
||||
containingClass.containingSymbol as? KaClassSymbol
|
||||
containingClass.containingDeclaration as? KaClassSymbol
|
||||
} else {
|
||||
containingClass
|
||||
}
|
||||
@@ -305,7 +305,7 @@ internal object CallableMetadataProvider {
|
||||
private fun isExtensionCallOnTypeParameterReceiver(symbol: KaCallableSymbol): Boolean {
|
||||
val originalSymbol = symbol.fakeOverrideOriginal
|
||||
val receiverParameterType = originalSymbol.receiverType as? KaTypeParameterType ?: return false
|
||||
val parameterTypeOwner = receiverParameterType.symbol.containingSymbol ?: return false
|
||||
val parameterTypeOwner = receiverParameterType.symbol.containingDeclaration ?: return false
|
||||
return parameterTypeOwner == originalSymbol
|
||||
}
|
||||
}
|
||||
@@ -198,5 +198,5 @@ private fun isEnumEntriesProperty(symbol: KaCallableSymbol): Boolean {
|
||||
return symbol is KaPropertySymbol &&
|
||||
symbol.isStatic &&
|
||||
symbol.callableId?.callableName == StandardNames.ENUM_ENTRIES &&
|
||||
(symbol.containingSymbol as? KaClassSymbol)?.classKind == KaClassKind.ENUM_CLASS
|
||||
(symbol.containingDeclaration as? KaClassSymbol)?.classKind == KaClassKind.ENUM_CLASS
|
||||
}
|
||||
@@ -634,7 +634,7 @@ object KotlinUnusedSymbolUtil {
|
||||
private fun KtCallableDeclaration.canBeHandledByLightMethods(symbol: KaDeclarationSymbol?): Boolean {
|
||||
return when {
|
||||
symbol is KaConstructorSymbol -> {
|
||||
val classSymbol = symbol.containingSymbol as? KaNamedClassOrObjectSymbol ?: return false
|
||||
val classSymbol = symbol.containingDeclaration as? KaNamedClassOrObjectSymbol ?: return false
|
||||
!classSymbol.isInline && !classSymbol.visibility.isPrivateOrPrivateToThis()
|
||||
}
|
||||
hasModifier(KtTokens.INTERNAL_KEYWORD) -> false
|
||||
|
||||
@@ -63,7 +63,7 @@ internal class TypeHighlighter(holder: HighlightInfoHolder) : KotlinSemanticAnal
|
||||
private fun isAnnotationCall(expression: KtSimpleNameExpression, target: KaSymbol): Boolean {
|
||||
val isKotlinAnnotation = target is KaConstructorSymbol
|
||||
&& target.isPrimary
|
||||
&& (target.containingSymbol as? KaClassSymbol)?.classKind == KaClassKind.ANNOTATION_CLASS
|
||||
&& (target.containingDeclaration as? KaClassSymbol)?.classKind == KaClassKind.ANNOTATION_CLASS
|
||||
|
||||
if (!isKotlinAnnotation) {
|
||||
val targetIsAnnotation = when (val targePsi = target.psi) {
|
||||
|
||||
@@ -58,10 +58,10 @@ fun KaFunctionSymbol.getJvmInternalClassName(): String? {
|
||||
context(KaSession)
|
||||
@ApiStatus.Internal
|
||||
fun KaFunctionSymbol.getContainingClassOrObjectSymbol(): KaClassSymbol? {
|
||||
var symbol = containingSymbol
|
||||
var symbol = containingDeclaration
|
||||
while (symbol != null) {
|
||||
if (symbol is KaClassSymbol) return symbol
|
||||
symbol = symbol.containingSymbol
|
||||
symbol = symbol.containingDeclaration
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ internal class KotlinK2FindUsagesSupport : KotlinFindUsagesSupport {
|
||||
is KaFunctionCall<*> -> {
|
||||
val constructorSymbol = call.symbol as? KaConstructorSymbol ?: return@withResolvedCall false
|
||||
val constructedClassSymbol =
|
||||
constructorSymbol.containingSymbol as? KaClassLikeSymbol ?: return@withResolvedCall false
|
||||
constructorSymbol.containingDeclaration as? KaClassLikeSymbol ?: return@withResolvedCall false
|
||||
val classOrObjectSymbol = ktClassOrObject.getClassOrObjectSymbol()
|
||||
|
||||
fun KaClassLikeSymbol.getExpectsOrSelf(): List<KaDeclarationSymbol> = (listOf(this).takeIf { isExpect } ?: getExpectsForActual())
|
||||
|
||||
@@ -62,7 +62,7 @@ internal class KotlinK2SearchUsagesSupport : KotlinSearchUsagesSupport {
|
||||
return superSymbol == this || isSubClassOf(superSymbol)
|
||||
}
|
||||
|
||||
return searchTargetContainerSymbol.isInheritorOrSelf(invokeSymbol.containingSymbol as? KaClassSymbol) ||
|
||||
return searchTargetContainerSymbol.isInheritorOrSelf(invokeSymbol.containingDeclaration as? KaClassSymbol) ||
|
||||
searchTargetContainerSymbol.isInheritorOrSelf(invokeSymbol.receiverParameter?.type?.expandedSymbol)
|
||||
}
|
||||
}
|
||||
@@ -155,8 +155,8 @@ internal class KotlinK2SearchUsagesSupport : KotlinSearchUsagesSupport {
|
||||
return@any false
|
||||
}
|
||||
|
||||
val candidateContainer = candidateSymbol.containingSymbol
|
||||
val container = declarationSymbol.containingSymbol
|
||||
val candidateContainer = candidateSymbol.containingDeclaration
|
||||
val container = declarationSymbol.containingDeclaration
|
||||
if (candidateContainer == null && container == null) { //top level functions should be from the same package
|
||||
declaration.containingKtFile.packageFqName == candidateDeclaration.containingKtFile.packageFqName
|
||||
} else if (candidateContainer != null && container != null) { //instance functions should be from the same class/function or same hierarchy
|
||||
@@ -171,7 +171,7 @@ internal class KotlinK2SearchUsagesSupport : KotlinSearchUsagesSupport {
|
||||
override fun isExtensionOfDeclarationClassUsage(reference: PsiReference, declaration: KtNamedDeclaration): Boolean {
|
||||
if (declaration !is KtCallableDeclaration) return false
|
||||
val container = analyze(declaration) {
|
||||
(declaration.symbol.containingSymbol as? KaClassSymbol)?.psi?.originalElement as? KtClassOrObject ?: return false
|
||||
(declaration.symbol.containingDeclaration as? KaClassSymbol)?.psi?.originalElement as? KtClassOrObject ?: return false
|
||||
}
|
||||
|
||||
return reference.unwrappedTargets.filterIsInstance<KtDeclaration>().any { candidateDeclaration ->
|
||||
@@ -257,7 +257,7 @@ internal class KotlinK2SearchUsagesSupport : KotlinSearchUsagesSupport {
|
||||
|
||||
context(KaSession)
|
||||
private fun getContainingClassType(symbol: KaCallableSymbol): KaType? {
|
||||
val containingSymbol = symbol.containingSymbol ?: return null
|
||||
val containingSymbol = symbol.containingDeclaration ?: return null
|
||||
val classSymbol = containingSymbol as? KaNamedClassOrObjectSymbol ?: return null
|
||||
return classSymbol.defaultType
|
||||
}
|
||||
@@ -372,7 +372,7 @@ internal class KotlinK2SearchUsagesSupport : KotlinSearchUsagesSupport {
|
||||
is KaDelegatedConstructorCall -> {
|
||||
val constructorSymbol = call.symbol
|
||||
val declarationSymbol = ((ktDeclaration.originalElement as? KtDeclaration)?.takeUnless { ktDeclaration.containingFile == element.containingFile } ?: ktDeclaration).symbol
|
||||
constructorSymbol == declarationSymbol || constructorSymbol.containingSymbol == declarationSymbol
|
||||
constructorSymbol == declarationSymbol || constructorSymbol.containingDeclaration == declarationSymbol
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
|
||||
@@ -51,14 +51,14 @@ context(KaSession)
|
||||
fun KaScope.findSiblingsByName(
|
||||
symbol: KaDeclarationSymbol,
|
||||
newName: Name,
|
||||
containingSymbol: KaDeclarationSymbol? = symbol.containingSymbol
|
||||
containingSymbol: KaDeclarationSymbol? = symbol.containingDeclaration
|
||||
): Sequence<KaDeclarationSymbol> {
|
||||
if (symbol is KaConstructorSymbol) {
|
||||
return constructors.filter { symbol != it }
|
||||
}
|
||||
val callables = getCallableSymbols(newName).filter { callable ->
|
||||
symbol != callable &&
|
||||
((callable as? KaSymbolWithVisibility)?.visibility != KaSymbolVisibility.PRIVATE || callable.containingSymbol == containingSymbol)
|
||||
((callable as? KaSymbolWithVisibility)?.visibility != KaSymbolVisibility.PRIVATE || callable.containingDeclaration == containingSymbol)
|
||||
}
|
||||
|
||||
val classifierSymbols = getClassifierSymbols(newName)
|
||||
@@ -103,7 +103,7 @@ fun checkDeclarationNewNameConflicts(
|
||||
filterCandidate: (KaDeclarationSymbol) -> Boolean
|
||||
) {
|
||||
fun getPotentialConflictCandidates(symbol: KaDeclarationSymbol, declaration: KtNamedDeclaration, newName: Name): Sequence<KaDeclarationSymbol> {
|
||||
val containingSymbol = symbol.containingSymbol ?: getPackageSymbolIfPackageExists(declaration.containingKtFile.packageFqName)
|
||||
val containingSymbol = symbol.containingDeclaration ?: getPackageSymbolIfPackageExists(declaration.containingKtFile.packageFqName)
|
||||
|
||||
if (symbol is KaValueParameterSymbol) {
|
||||
val functionLikeSymbol = containingSymbol as KaFunctionSymbol
|
||||
@@ -176,7 +176,7 @@ fun checkDeclarationNewNameConflicts(
|
||||
|
||||
var potentialCandidates = getPotentialConflictCandidates(symbol, declaration, newName)
|
||||
if (declarationSymbol is KaValueParameterSymbol && symbol is KaPropertySymbol) {
|
||||
val functionLikeSymbol = declarationSymbol.containingSymbol as? KaFunctionSymbol
|
||||
val functionLikeSymbol = declarationSymbol.containingDeclaration as? KaFunctionSymbol
|
||||
val conflictingParameters = functionLikeSymbol?.valueParameters?.filter { it.name == newName && it != declarationSymbol }?.takeIf { it.isNotEmpty() }
|
||||
if (conflictingParameters != null) {
|
||||
potentialCandidates = potentialCandidates + conflictingParameters
|
||||
@@ -328,7 +328,7 @@ fun registerRetargetJobOnPotentialCandidates(
|
||||
findSiblingsByName(declarationSymbol, nameAsName, containingSymbol).filter { filterCandidate(it) }.forEach(retargetJob)
|
||||
}
|
||||
|
||||
var classOrObjectSymbol = declarationSymbol.containingSymbol
|
||||
var classOrObjectSymbol = declarationSymbol.containingDeclaration
|
||||
val block = declaration.parent as? KtBlockExpression
|
||||
if (block != null) {
|
||||
classOrObjectSymbol = declaration.getParentOfType<KtFunction>(true)?.symbol as? KaFunctionSymbol
|
||||
@@ -352,7 +352,7 @@ fun registerRetargetJobOnPotentialCandidates(
|
||||
val companionObject = (classOrObjectSymbol as? KaNamedClassOrObjectSymbol)?.companionObject
|
||||
companionObject?.memberScope?.processScope(companionObject)
|
||||
|
||||
classOrObjectSymbol = classOrObjectSymbol.containingSymbol
|
||||
classOrObjectSymbol = classOrObjectSymbol.containingDeclaration
|
||||
}
|
||||
|
||||
val file = declaration.containingKtFile
|
||||
|
||||
@@ -53,7 +53,7 @@ private fun KtNamedFunction.getOverloads(): Collection<KtNamedFunction> {
|
||||
val result = LinkedHashSet<KtNamedFunction>()
|
||||
listOfNotNull(
|
||||
getPackageSymbolIfPackageExists(containingKtFile.packageFqName)?.packageScope,
|
||||
(symbol.containingSymbol as? KaClassSymbol)?.declaredMemberScope,
|
||||
(symbol.containingDeclaration as? KaClassSymbol)?.declaredMemberScope,
|
||||
symbol.receiverParameter?.type?.expandedSymbol?.declaredMemberScope
|
||||
).flatMapTo(result) { scope ->
|
||||
scope.getCallableSymbols(name).mapNotNull {
|
||||
|
||||
@@ -67,7 +67,7 @@ object KotlinChangeSignatureHandler : KotlinChangeSignatureHandlerBase() {
|
||||
val symbol = element.mainReference.resolveToSymbol()
|
||||
when {
|
||||
symbol is KaValueParameterSymbol && symbol.generatedPrimaryConstructorProperty == null -> null
|
||||
symbol is KaConstructorSymbol && symbol.origin == KaSymbolOrigin.SOURCE_MEMBER_GENERATED -> symbol.containingSymbol
|
||||
symbol is KaConstructorSymbol && symbol.origin == KaSymbolOrigin.SOURCE_MEMBER_GENERATED -> symbol.containingDeclaration
|
||||
else -> symbol
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ internal object KotlinChangeSignatureUsageSearcher {
|
||||
if (partiallyAppliedSymbol != null) {
|
||||
val receiverValue = partiallyAppliedSymbol.extensionReceiver ?: partiallyAppliedSymbol.dispatchReceiver
|
||||
val symbol = partiallyAppliedSymbol.symbol
|
||||
val containingSymbol = symbol.containingSymbol
|
||||
val containingSymbol = symbol.containingDeclaration
|
||||
if (receiverValue != null) {
|
||||
val receiverExpression = (receiverValue as? KaExplicitReceiverValue)?.expression
|
||||
?: ((receiverValue as? KaSmartCastedReceiverValue)?.original as? KaExplicitReceiverValue)?.expression
|
||||
|
||||
@@ -203,12 +203,12 @@ class KotlinParameterInfo(
|
||||
val target = ref.resolveToSymbol()
|
||||
val declarationSymbol = callableDeclaration.symbol as? KaCallableSymbol ?: return null
|
||||
if (target is KaValueParameterSymbol) {
|
||||
if (declarationSymbol is KaFunctionSymbol && target.containingSymbol == declarationSymbol) {
|
||||
if (declarationSymbol is KaFunctionSymbol && target.containingDeclaration == declarationSymbol) {
|
||||
return declarationSymbol.valueParameters.indexOf(target) + (if ((callableDeclaration as? KtCallableDeclaration)?.receiverTypeReference != null) 1 else 0)
|
||||
}
|
||||
|
||||
if (declarationSymbol.receiverParameter != null &&
|
||||
(target.containingSymbol as? KaConstructorSymbol)?.containingSymbol == declarationSymbol.receiverParameter?.type?.expandedSymbol
|
||||
(target.containingDeclaration as? KaConstructorSymbol)?.containingDeclaration == declarationSymbol.receiverParameter?.type?.expandedSymbol
|
||||
) {
|
||||
return Int.MAX_VALUE
|
||||
}
|
||||
@@ -229,10 +229,10 @@ class KotlinParameterInfo(
|
||||
|
||||
val symbol = expression.resolveToCall()?.successfulCallOrNull<KaCallableMemberCall<*, *>>()?.partiallyAppliedSymbol
|
||||
(symbol?.dispatchReceiver as? KaImplicitReceiverValue)?.symbol
|
||||
?.takeIf { it == declarationSymbol.receiverParameter || it == declarationSymbol.containingSymbol }
|
||||
?.takeIf { it == declarationSymbol.receiverParameter || it == declarationSymbol.containingDeclaration }
|
||||
?.let { return Int.MAX_VALUE }
|
||||
(symbol?.extensionReceiver as? KaImplicitReceiverValue)?.symbol
|
||||
?.takeIf { it == declarationSymbol.receiverParameter || it == declarationSymbol.containingSymbol }
|
||||
?.takeIf { it == declarationSymbol.receiverParameter || it == declarationSymbol.containingDeclaration }
|
||||
?.let { return Int.MAX_VALUE }
|
||||
|
||||
if (expression.parent is KtThisExpression && declarationSymbol.receiverParameter == null) {
|
||||
|
||||
@@ -102,8 +102,8 @@ private fun createSubstitutor(inheritorDeclaration: KtDeclaration, baseFunction:
|
||||
val inheritorCallable = inheritorDeclaration.symbol
|
||||
val baseCallable = (baseFunction as? KtCallableDeclaration)?.symbol
|
||||
?: (baseFunction as? PsiMember)?.callableSymbol ?: return null
|
||||
val inheritor = inheritorCallable.containingSymbol
|
||||
val base = baseCallable.containingSymbol
|
||||
val inheritor = inheritorCallable.containingDeclaration
|
||||
val base = baseCallable.containingDeclaration
|
||||
return if (inheritor is KaClassSymbol && base is KaClassSymbol) {
|
||||
createInheritanceTypeSubstitutor(inheritor, base)?.let { iSubstitutor ->
|
||||
buildSubstitutor {
|
||||
|
||||
@@ -343,7 +343,7 @@ object ChangeSignatureFixFactory {
|
||||
element: PsiElement,
|
||||
): List<ParameterQuickFix> {
|
||||
if (symbol !is KaParameterSymbol) return emptyList()
|
||||
val containingSymbol = symbol.containingSymbol as? KaFunctionSymbol ?: return emptyList()
|
||||
val containingSymbol = symbol.containingDeclaration as? KaFunctionSymbol ?: return emptyList()
|
||||
if (containingSymbol is KaNamedFunctionSymbol && containingSymbol.valueParameters.any { it.isVararg } ||
|
||||
containingSymbol.origin == KaSymbolOrigin.SOURCE_MEMBER_GENERATED ||
|
||||
containingSymbol.origin == KaSymbolOrigin.LIBRARY
|
||||
@@ -413,7 +413,7 @@ internal fun getDeclarationName(functionLikeSymbol: KaFunctionSymbol): String? {
|
||||
return when(functionLikeSymbol) {
|
||||
is KaConstructorSymbol -> {
|
||||
val constructorSymbol = functionLikeSymbol
|
||||
if ((constructorSymbol.containingSymbol as? KaNamedClassOrObjectSymbol)?.isInline == true) {
|
||||
if ((constructorSymbol.containingDeclaration as? KaNamedClassOrObjectSymbol)?.isInline == true) {
|
||||
null
|
||||
} else constructorSymbol.containingClassId?.shortClassName
|
||||
}
|
||||
|
||||
@@ -399,7 +399,7 @@ private fun getReferencedClassifierSymbol(
|
||||
|
||||
is KaTypeParameterSymbol -> referencedSymbol
|
||||
|
||||
is KaConstructorSymbol -> referencedSymbol.containingSymbol as? KaClassifierSymbol
|
||||
is KaConstructorSymbol -> referencedSymbol.containingDeclaration as? KaClassifierSymbol
|
||||
|
||||
else -> null
|
||||
}
|
||||
@@ -481,7 +481,7 @@ private fun ExtractionData.getBrokenReferencesInfo(body: KtBlockExpression): Lis
|
||||
val (isCompanionObject, bothReceivers) = analyze(smartCastTarget) {
|
||||
val symbol = originalRefExpr.resolveToCall()?.singleCallOrNull<KaCallableMemberCall<*, *>>()?.partiallyAppliedSymbol
|
||||
val receiverSymbol = (symbol?.dispatchReceiver as? KaImplicitReceiverValue)?.symbol
|
||||
((receiverSymbol?.containingSymbol as? KaClassSymbol)?.classKind == KaClassKind.COMPANION_OBJECT) to
|
||||
((receiverSymbol?.containingDeclaration as? KaClassSymbol)?.classKind == KaClassKind.COMPANION_OBJECT) to
|
||||
(symbol?.dispatchReceiver != null && symbol.extensionReceiver != null)
|
||||
}
|
||||
val shouldSkipPrimaryReceiver = smartCast == null
|
||||
|
||||
@@ -208,7 +208,7 @@ internal fun encodeInternalReferences(codeToInline: MutableCodeToInline, origina
|
||||
fun isImportable(t: KtNamedDeclaration): Boolean {
|
||||
analyze(t) {
|
||||
val resolvedSymbol = t.symbol
|
||||
val containingSymbol = resolvedSymbol.containingSymbol ?: return true
|
||||
val containingSymbol = resolvedSymbol.containingDeclaration ?: return true
|
||||
if (containingSymbol is KaSymbolWithMembers) {
|
||||
val staticScope = containingSymbol.staticMemberScope
|
||||
return resolvedSymbol in staticScope.getAllSymbols()
|
||||
@@ -312,7 +312,7 @@ context(KaSession)
|
||||
internal fun getThisQualifier(receiverValue: KaImplicitReceiverValue): String {
|
||||
val symbol = receiverValue.symbol
|
||||
return if ((symbol as? KaClassSymbol)?.classKind == KaClassKind.COMPANION_OBJECT) {
|
||||
(symbol.containingSymbol as KaClassifierSymbol).name!!.asString() + "." + symbol.name!!.asString()
|
||||
(symbol.containingDeclaration as KaClassifierSymbol).name!!.asString() + "." + symbol.name!!.asString()
|
||||
}
|
||||
else {
|
||||
"this" + ((((symbol as? KaReceiverParameterSymbol)?.owningCallableSymbol ?: symbol) as? KaNamedSymbol)?.name?.let { "@$it" } ?: "")
|
||||
|
||||
@@ -134,7 +134,7 @@ class KotlinFirSafeDeleteProcessor : SafeDeleteProcessorDelegateBase() {
|
||||
fun isMultipleInheritance(function: KaSymbol): Boolean {
|
||||
val superMethods = (function as? KaCallableSymbol)?.directlyOverriddenSymbols ?: return false
|
||||
return superMethods.any {
|
||||
val superClassSymbol = it.containingSymbol as? KaClassSymbol ?: return@any false
|
||||
val superClassSymbol = it.containingDeclaration as? KaClassSymbol ?: return@any false
|
||||
val superMethod = it.psi ?: return@any false
|
||||
return@any !isInside(superMethod) && !superClassSymbol.isSubClassOf(elementClassSymbol)
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ class KotlinSafeDeleteUsageSearcher : SafeDeleteUsageSearcher {
|
||||
val superMethods =
|
||||
(ktElement.symbol as? KaCallableSymbol)?.directlyOverriddenSymbols ?: return@analyze
|
||||
val abstractExternalSuper = superMethods.find {
|
||||
val superClassSymbol = it.containingSymbol as? KaClassSymbol ?: return@find false
|
||||
val superClassSymbol = it.containingDeclaration as? KaClassSymbol ?: return@find false
|
||||
if ((it as? KaSymbolWithModality)?.modality != KaSymbolModality.ABSTRACT) return@find false
|
||||
return@find !superClassSymbol.isSubClassOf(elementClassSymbol)
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ object ConvertReferenceToLambdaUtil {
|
||||
val acceptsReceiverAsParameter = receiverSymbol is KaClassSymbol &&
|
||||
!matchingParameterIsExtension &&
|
||||
(callableSymbol as? KaNamedFunctionSymbol)?.isStatic != true && !receiverSymbol.classKind.isObject &&
|
||||
(callableSymbol?.containingSymbol != null || callableSymbol?.isExtension == true || symbol is KaNamedClassOrObjectSymbol && symbol.isInner)
|
||||
(callableSymbol?.containingDeclaration != null || callableSymbol?.isExtension == true || symbol is KaNamedClassOrObjectSymbol && symbol.isInner)
|
||||
|
||||
val parameterNamesAndTypes =
|
||||
if (callableSymbol is KaFunctionSymbol) {
|
||||
|
||||
@@ -159,7 +159,7 @@ sealed class K2MoveRenameUsageInfo(
|
||||
val resolvedSymbol = mainReference.resolveToSymbol()
|
||||
if (resolvedSymbol is KaClassSymbol && resolvedSymbol.classKind == KaClassKind.COMPANION_OBJECT) return true
|
||||
if (resolvedSymbol is KaConstructorSymbol) return true
|
||||
val containingSymbol = resolvedSymbol?.containingSymbol
|
||||
val containingSymbol = resolvedSymbol?.containingDeclaration
|
||||
if (resolvedSymbol is KaPackageSymbol) return false // ignore packages
|
||||
if (containingSymbol == null) return true // top levels are static
|
||||
if (containingSymbol is KaClassSymbol) {
|
||||
|
||||
@@ -275,8 +275,8 @@ private fun createQualifiedExpression(callExpression: KtExpression, newName: Str
|
||||
}
|
||||
|
||||
fun getExplicitQualifier(receiverValue: KaExplicitReceiverValue): String? {
|
||||
val containingSymbol = appliedSymbol?.symbol?.containingSymbol
|
||||
val enumClassSymbol = containingSymbol?.containingSymbol
|
||||
val containingSymbol = appliedSymbol?.symbol?.containingDeclaration
|
||||
val enumClassSymbol = containingSymbol?.containingDeclaration
|
||||
//add companion qualifier to avoid clashes with enum entries
|
||||
return if (containingSymbol is KaNamedClassOrObjectSymbol && containingSymbol.classKind == KaClassKind.COMPANION_OBJECT &&
|
||||
enumClassSymbol is KaNamedClassOrObjectSymbol && enumClassSymbol.classKind == KaClassKind.ENUM_CLASS &&
|
||||
@@ -305,7 +305,7 @@ private fun createQualifiedExpression(callExpression: KtExpression, newName: Str
|
||||
|
||||
null -> {
|
||||
val symbol = appliedSymbol?.symbol
|
||||
val containingSymbol = symbol?.containingSymbol
|
||||
val containingSymbol = symbol?.containingDeclaration
|
||||
val containerFQN =
|
||||
if (containingSymbol is KaClassSymbol) {
|
||||
containingSymbol.classId?.asSingleFqName()?.parent()
|
||||
|
||||
Reference in New Issue
Block a user