From 90fac13e8c4fd735cf3b6113d318f426ca579064 Mon Sep 17 00:00:00 2001 From: Petr Date: Thu, 20 Nov 2025 23:40:57 +0100 Subject: [PATCH] PY-50642 Use a more generic name for `PyVersionAwareElementVisitor` so it can be used with arbitrary if-conditions GitOrigin-RevId: 55f6afe70f9b8ed0a2170c7279b5a57252ce865f --- ...wareElementVisitor.kt => PyTypeCheckedElementVisitor.kt} | 5 +---- ...entVisitor.kt => PyTypeCheckedTopLevelElementVisitor.kt} | 2 +- .../python/codeInsight/dataflow/scope/impl/ScopeImpl.java | 6 +++--- .../src/com/jetbrains/python/psi/impl/PyClassImpl.java | 2 +- .../src/com/jetbrains/python/psi/impl/PyFileImpl.java | 4 ++-- 5 files changed, 8 insertions(+), 11 deletions(-) rename python/python-psi-api/src/com/jetbrains/python/psi/impl/{PyVersionAwareElementVisitor.kt => PyTypeCheckedElementVisitor.kt} (81%) rename python/python-psi-api/src/com/jetbrains/python/psi/impl/{PyVersionAwareTopLevelElementVisitor.kt => PyTypeCheckedTopLevelElementVisitor.kt} (86%) diff --git a/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionAwareElementVisitor.kt b/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyTypeCheckedElementVisitor.kt similarity index 81% rename from python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionAwareElementVisitor.kt rename to python/python-psi-api/src/com/jetbrains/python/psi/impl/PyTypeCheckedElementVisitor.kt index 5d4a015eb2df..3fec4f471012 100644 --- a/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionAwareElementVisitor.kt +++ b/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyTypeCheckedElementVisitor.kt @@ -7,11 +7,8 @@ import com.jetbrains.python.psi.PyIfStatement import com.jetbrains.python.psi.PyRecursiveElementVisitor import org.jetbrains.annotations.ApiStatus -/** - * @see [Version and Platform Checks](https://typing.readthedocs.io/en/latest/source/stubs.html.version-and-platform-checks) - */ @ApiStatus.Internal -open class PyVersionAwareElementVisitor(languageLevel: LanguageLevel?) : PyRecursiveElementVisitor() { +open class PyTypeCheckedElementVisitor(languageLevel: LanguageLevel?) : PyRecursiveElementVisitor() { private val version = languageLevel?.let { Version(it.majorVersion, it.minorVersion, 0) } override fun visitPyIfStatement(node: PyIfStatement) { diff --git a/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionAwareTopLevelElementVisitor.kt b/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyTypeCheckedTopLevelElementVisitor.kt similarity index 86% rename from python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionAwareTopLevelElementVisitor.kt rename to python/python-psi-api/src/com/jetbrains/python/psi/impl/PyTypeCheckedTopLevelElementVisitor.kt index a5f549742482..c19a57e491fd 100644 --- a/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionAwareTopLevelElementVisitor.kt +++ b/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyTypeCheckedTopLevelElementVisitor.kt @@ -9,7 +9,7 @@ import com.jetbrains.python.psi.PyFunction import org.jetbrains.annotations.ApiStatus @ApiStatus.Internal -abstract class PyVersionAwareTopLevelElementVisitor(languageLevel: LanguageLevel) : PyVersionAwareElementVisitor(languageLevel) { +abstract class PyTypeCheckedTopLevelElementVisitor(languageLevel: LanguageLevel) : PyTypeCheckedElementVisitor(languageLevel) { override fun visitPyElement(node: PyElement) { super.visitPyElement(node) checkAddElement(node) diff --git a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/dataflow/scope/impl/ScopeImpl.java b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/dataflow/scope/impl/ScopeImpl.java index a856c1b8dcdf..405ab3849728 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/dataflow/scope/impl/ScopeImpl.java +++ b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/dataflow/scope/impl/ScopeImpl.java @@ -20,7 +20,7 @@ import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyAugAssignmentStatementNavigator; import com.jetbrains.python.psi.impl.PyCodeFragmentWithHiddenImports; import com.jetbrains.python.psi.impl.PyPsiUtils; -import com.jetbrains.python.psi.impl.PyVersionAwareElementVisitor; +import com.jetbrains.python.psi.impl.PyTypeCheckedElementVisitor; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -229,7 +229,7 @@ public class ScopeImpl implements Scope { if (myFlowOwner instanceof PyCodeFragmentWithHiddenImports fragment) { var pseudoImports = fragment.getPseudoImports(); for (PyImportStatementBase importStmt : pseudoImports) { - importStmt.accept(new PyVersionAwareElementVisitor(languageLevel) { + importStmt.accept(new PyTypeCheckedElementVisitor(languageLevel) { @Override public void visitPyElement(@NotNull PyElement node) { if (node instanceof PyImportedNameDefiner definer) { @@ -240,7 +240,7 @@ public class ScopeImpl implements Scope { }); } } - myFlowOwner.acceptChildren(new PyVersionAwareElementVisitor(languageLevel) { + myFlowOwner.acceptChildren(new PyTypeCheckedElementVisitor(languageLevel) { @Override public void visitPyTargetExpression(@NotNull PyTargetExpression node) { targetExpressions.add(node); diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyClassImpl.java b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyClassImpl.java index a164b6c5c25d..467de5bf1252 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyClassImpl.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyClassImpl.java @@ -1083,7 +1083,7 @@ public class PyClassImpl extends PyBaseElementImpl implements PyCla } else { getStatementList().acceptChildren( - new PyVersionAwareTopLevelElementVisitor(PyLanguageFacadeKt.getEffectiveLanguageLevel(getContainingFile())) { + new PyTypeCheckedTopLevelElementVisitor(PyLanguageFacadeKt.getEffectiveLanguageLevel(getContainingFile())) { @Override protected void checkAddElement(PsiElement psiElement) { if (psiElement instanceof PyAssignmentStatement assignmentStatement) { diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyFileImpl.java b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyFileImpl.java index 7bce917d2f50..eb5fad3f8fcd 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyFileImpl.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyFileImpl.java @@ -779,7 +779,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression { } } else { - acceptChildren(new PyVersionAwareTopLevelElementVisitor(languageLevel) { + acceptChildren(new PyTypeCheckedTopLevelElementVisitor(languageLevel) { @Override protected void checkAddElement(PsiElement node) { if (type.isInstance(node)) { @@ -810,7 +810,7 @@ public class PyFileImpl extends PsiFileBase implements PyFile, PyExpression { } } else { - element.acceptChildren(new PyVersionAwareTopLevelElementVisitor(languageLevel) { + element.acceptChildren(new PyTypeCheckedTopLevelElementVisitor(languageLevel) { @Override protected void checkAddElement(PsiElement node) { result.add(node);