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/PyVersionAwareElementVisitor.kt
index e1dda10b6beb..5d4a015eb2df 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/PyVersionAwareElementVisitor.kt
@@ -21,7 +21,7 @@ open class PyVersionAwareElementVisitor(languageLevel: LanguageLevel?) : PyRecur
}
val ifParts = sequenceOf(node.ifPart) + node.elifParts.asSequence()
for (ifPart in ifParts) {
- val versions = ifPart.condition?.let(PyVersionCheck::convertToVersionRanges)
+ val versions = PyVersionCheck.convertToVersionRanges(ifPart)
if (versions == null) {
super.visitPyIfStatement(node)
return
diff --git a/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionCheck.kt b/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionCheck.kt
index f232f560fdd8..330f0a9a876b 100644
--- a/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionCheck.kt
+++ b/python/python-psi-api/src/com/jetbrains/python/psi/impl/PyVersionCheck.kt
@@ -6,11 +6,7 @@ import com.google.common.collect.Range
import com.intellij.openapi.util.Version
import com.intellij.psi.util.QualifiedName
import com.jetbrains.python.PyTokenTypes
-import com.jetbrains.python.psi.PyBinaryExpression
-import com.jetbrains.python.psi.PyExpression
-import com.jetbrains.python.psi.PyNumericLiteralExpression
-import com.jetbrains.python.psi.PyReferenceExpression
-import com.jetbrains.python.psi.PyTupleExpression
+import com.jetbrains.python.psi.*
import org.jetbrains.annotations.ApiStatus
import java.math.BigInteger
@@ -22,7 +18,11 @@ object PyVersionCheck {
* @see Version and Platform Checks
*/
@JvmStatic
- fun convertToVersionRanges(expression: PyExpression): ImmutableRangeSet? {
+ fun convertToVersionRanges(ifPart: PyIfPart): ImmutableRangeSet? {
+ return ifPart.condition?.let(PyVersionCheck::convertToVersionRanges)
+ }
+
+ private fun convertToVersionRanges(expression: PyExpression): ImmutableRangeSet? {
val binaryExpr = PyPsiUtils.flattenParens(expression) as? PyBinaryExpression ?: return null
when (val operator = binaryExpr.operator) {
PyTokenTypes.AND_KEYWORD, PyTokenTypes.OR_KEYWORD -> {
diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyVersionSpecificStubBase.kt b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyVersionSpecificStubBase.kt
index 2fb8cd444d28..8057296b3501 100644
--- a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyVersionSpecificStubBase.kt
+++ b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyVersionSpecificStubBase.kt
@@ -53,7 +53,7 @@ internal fun evaluateVersionsForElement(element: PsiElement): ImmutableRangeSet<
private fun evaluateVersionRangeForIfStatementPart(ifStatement: PyIfStatement, ifStatementPart: PsiElement): RangeSet? {
assert(ifStatementPart is PyIfPart || ifStatementPart is PyElsePart)
val result = if (ifStatementPart is PyIfPart) {
- val versionRanges = ifStatementPart.condition?.let(PyVersionCheck::convertToVersionRanges) ?: return null
+ val versionRanges = PyVersionCheck.convertToVersionRanges(ifStatementPart) ?: return null
TreeRangeSet.create(versionRanges)
}
else {
@@ -61,7 +61,7 @@ private fun evaluateVersionRangeForIfStatementPart(ifStatement: PyIfStatement, i
}
val ifParts = sequenceOf(ifStatement.ifPart) + ifStatement.elifParts.asSequence()
for (ifPart in ifParts.takeWhile { it !== ifStatementPart }) {
- val versionRanges = ifPart.condition?.let(PyVersionCheck::convertToVersionRanges) ?: return null
+ val versionRanges = PyVersionCheck.convertToVersionRanges(ifPart) ?: return null
result.removeAll(versionRanges)
}
return result