From 43024c4c88586778d67bd111609b7718272690cc Mon Sep 17 00:00:00 2001 From: Petr Date: Tue, 8 Jul 2025 16:50:17 +0200 Subject: [PATCH] PY-81981 Deprecate PyPsiFacade#getLanguageLevel GitOrigin-RevId: edb0ec18aaaa55032e9e5b8f9ff713f07e22da04 --- .../com/jetbrains/python/psi/PyPsiFacade.java | 4 ++++ .../com/jetbrains/python/PyLanguageFacadeImpl.kt | 15 +++++++++++++-- .../python/psi/impl/PyPsiFacadeImpl.java | 16 +--------------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/python/python-psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java b/python/python-psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java index d7b19cd8082e..3170339f98ba 100644 --- a/python/python-psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java +++ b/python/python-psi-api/src/com/jetbrains/python/psi/PyPsiFacade.java @@ -48,5 +48,9 @@ public abstract class PyPsiFacade { public abstract @Nullable String findShortestImportableName(@NotNull VirtualFile targetFile, @NotNull PsiElement anchor); + /** + * @deprecated Use {@link LanguageLevel#forElement(PsiElement)} + */ + @Deprecated(forRemoval = true) public abstract @NotNull LanguageLevel getLanguageLevel(@NotNull PsiElement element); } diff --git a/python/python-psi-impl/src/com/jetbrains/python/PyLanguageFacadeImpl.kt b/python/python-psi-impl/src/com/jetbrains/python/PyLanguageFacadeImpl.kt index ec5f87e1d2fb..3e9989cf60c7 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/PyLanguageFacadeImpl.kt +++ b/python/python-psi-impl/src/com/jetbrains/python/PyLanguageFacadeImpl.kt @@ -1,11 +1,22 @@ package com.jetbrains.python +import com.intellij.psi.PsiDirectory import com.intellij.psi.PsiElement import com.jetbrains.python.psi.LanguageLevel -import com.jetbrains.python.psi.PyPsiFacade +import com.jetbrains.python.psi.PyFile +import com.jetbrains.python.psi.impl.PythonLanguageLevelPusher class PyLanguageFacadeImpl : PyLanguageFacade() { override fun forLanguage(psiElement: PsiElement): LanguageLevel { - return PyPsiFacade.getInstance(psiElement.project).getLanguageLevel(psiElement) + if (psiElement is PsiDirectory) { + return PythonLanguageLevelPusher.getLanguageLevelForVirtualFile(psiElement.getProject(), psiElement.getVirtualFile()) + } + + val containingFile = psiElement.getContainingFile() + if (containingFile is PyFile) { + return containingFile.getLanguageLevel() + } + + return LanguageLevel.getDefault() } } \ No newline at end of file diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java index 377c5ca94a62..85f250960b20 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyPsiFacadeImpl.java @@ -19,14 +19,11 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; import com.intellij.psi.util.QualifiedName; import com.intellij.util.ObjectUtils; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.psi.PyClass; -import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.PyPsiFacade; import com.jetbrains.python.psi.resolve.PyQualifiedNameResolveContext; import com.jetbrains.python.psi.resolve.PyResolveImportUtil; @@ -39,8 +36,6 @@ import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.List; -import static com.jetbrains.python.psi.LanguageLevel.getDefault; - public final class PyPsiFacadeImpl extends PyPsiFacade { private final Project myProject; @@ -105,15 +100,6 @@ public final class PyPsiFacadeImpl extends PyPsiFacade { @Override public @NotNull LanguageLevel getLanguageLevel(@NotNull PsiElement element) { - if (element instanceof PsiDirectory directory) { - return PythonLanguageLevelPusher.getLanguageLevelForVirtualFile(directory.getProject(), directory.getVirtualFile()); - } - - final PsiFile containingFile = element.getContainingFile(); - if (containingFile instanceof PyFile) { - return ((PyFile)containingFile).getLanguageLevel(); - } - - return getDefault(); + return LanguageLevel.forElement(element); } }