From ae31c8397d6acbe13959beb39fae11de178c620e Mon Sep 17 00:00:00 2001 From: "evgeny.bovykin" Date: Sun, 14 Dec 2025 17:23:16 +0100 Subject: [PATCH] refactor pycharm: Remove `mainElement` property from PyTypeMember. `element` should be used instead GitOrigin-RevId: e9dce24833d0770d44926d51b7eae03b8975ebe7 --- .../src/com/jetbrains/python/psi/types/PyTypeMember.kt | 8 ++++++-- .../jetbrains/python/codeInsight/typing/PyProtocols.kt | 2 +- .../jetbrains/python/inspections/PyProtocolInspection.kt | 4 ++-- .../src/com/jetbrains/python/psi/types/PyTypeChecker.java | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/python/python-psi-api/src/com/jetbrains/python/psi/types/PyTypeMember.kt b/python/python-psi-api/src/com/jetbrains/python/psi/types/PyTypeMember.kt index ac9f302fa8b8..1c774a7c10c2 100644 --- a/python/python-psi-api/src/com/jetbrains/python/psi/types/PyTypeMember.kt +++ b/python/python-psi-api/src/com/jetbrains/python/psi/types/PyTypeMember.kt @@ -16,7 +16,7 @@ import org.jetbrains.annotations.ApiStatus */ @ApiStatus.Experimental class PyTypeMember @JvmOverloads @ApiStatus.Internal constructor( - val mainElement: PsiElement?, + mainElement: PsiElement?, val type: PyType?, val isClassVar: Boolean = false, val getter: PsiElement? = mainElement, @@ -35,7 +35,11 @@ class PyTypeMember @JvmOverloads @ApiStatus.Internal constructor( val isWritable: Boolean get() = setter != null val isDeletable: Boolean get() = deleter != null - val name: String? get() = if (mainElement is PsiNamedElement) mainElement.name else null + val name: String? + get() { + val e = element + return if (e is PsiNamedElement) e.name else null + } private companion object { fun getSetterFromMainElement(element: PsiElement?): PsiElement? { diff --git a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyProtocols.kt b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyProtocols.kt index b2043645ae48..5c0f4a190072 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyProtocols.kt +++ b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyProtocols.kt @@ -36,7 +36,7 @@ fun inspectProtocolSubclass(protocol: PyClassType, subclass: PyClassType, contex protocolMembers.addAll(superClassesMembers) for (protocolMember in protocolMembers) { - val protocolElement = protocolMember.mainElement ?: continue + val protocolElement = protocolMember.element ?: continue if (protocolElement is PyPossibleClassMember) { val cls = protocolElement.containingClass if (cls != null && !isProtocol(cls, context)) { diff --git a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyProtocolInspection.kt b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyProtocolInspection.kt index 838f584b9648..9c5b2919b587 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyProtocolInspection.kt +++ b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyProtocolInspection.kt @@ -131,9 +131,9 @@ class PyProtocolInspection : PyInspection() { ) { subclassMembers .asSequence() - .filter { it.mainElement?.containingFile == type.pyClass.containingFile } + .filter { it.element?.containingFile == type.pyClass.containingFile } .forEach { - val element = it.mainElement + val element = it.element val place = if (element is PsiNameIdentifierOwner) element.nameIdentifier else element ?: return@forEach val elementName = if (element is PsiNameIdentifierOwner) element.name else return@forEach diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypeChecker.java b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypeChecker.java index 97148fe996b6..4b450d2110ad 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypeChecker.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyTypeChecker.java @@ -686,7 +686,7 @@ public final class PyTypeChecker { GenericSubstitutions substitutions = collectTypeSubstitutions(expectedProtocol, matchContext.context); for (kotlin.Pair> pair : protocolElements) { - PsiElement pm = pair.getFirst().getMainElement(); + PsiElement pm = pair.getFirst().getElement(); if (!(pm instanceof PsiNamedElement protocolMember)) { continue; }