From 77c047598b21fabcdf6e1d845e470f902f0f2136 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Tue, 27 Nov 2018 15:39:27 +0300 Subject: [PATCH] Deprecate `PyClassStub.getSubscriptedSuperClasses` (PY-29929) --- .../jetbrains/python/psi/stubs/PyClassStub.java | 14 +++++++++++--- .../python/psi/impl/stubs/PyClassElementType.java | 4 +--- .../python/psi/impl/stubs/PyClassStubImpl.java | 5 +++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java index 166aed72962f..324a27d8960b 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java +++ b/python/psi-api/src/com/jetbrains/python/psi/stubs/PyClassStub.java @@ -32,17 +32,21 @@ import java.util.Map; public interface PyClassStub extends NamedStub { /** - * @return a {@code Map} which contains imported class names as keys and their original names as values. - * Note: the returned {@code Map} could contain nulls as keys and as values. - */ + * @return a {@code Map} which contains imported class names as keys and their original names as values. + * Note: the returned {@code Map} could contain nulls as keys and as values. + */ @NotNull Map getSuperClasses(); /** * Returns literal text of the subscription expressions in the base classes list. * It's intended to be used for resolving generic types and type parameters in PEP 484 notation. + * + * @deprecated Use {@link PyClassStub#getSuperClassesText()} instead. + * This method will be removed in 2019.2. */ @NotNull + @Deprecated List getSubscriptedSuperClasses(); @Nullable @@ -54,6 +58,10 @@ public interface PyClassStub extends NamedStub { @Nullable String getDocString(); + /** + * @return literal text of expressions in the base classes list. + * @apiNote This method will be marked as abstract in 2019.2. + */ @NotNull default List getSuperClassesText() { return Collections.emptyList(); diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java index 51b9b7b9d22d..bf1fd04f4d5a 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java @@ -83,8 +83,6 @@ public class PyClassElementType extends PyStubElementType * their saved text chunks into {@link PyExpressionCodeFragment} and extracting top-level expressions * from them. Otherwise, get suitable expressions directly from AST, but process them in the same way as * if they were going to be saved in the stub. - * - * @see PyClassStub#getSubscriptedSuperClasses() */ @NotNull public static List getSubscriptedSuperClassesStubLike(@NotNull PyClass pyClass) { @@ -92,7 +90,7 @@ public class PyClassElementType extends PyStubElementType if (classStub == null) { return getSubscriptedSuperClasses(pyClass); } - return ContainerUtil.mapNotNull(classStub.getSubscriptedSuperClasses(), + return ContainerUtil.mapNotNull(classStub.getSuperClassesText(), x -> as(PyUtil.createExpressionFromFragment(x, pyClass.getContainingFile()), PySubscriptionExpression.class)); } diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java index 287c12932f31..30e8e72f2aed 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassStubImpl.java @@ -38,6 +38,11 @@ public class PyClassStubImpl extends StubBase implements PyClassStub { @NotNull private final List mySuperClassesText; + /** + * @deprecated Use {@link PyClassStubImpl#PyClassStubImpl(String, StubElement, Map, List, List, QualifiedName, List, String, IStubElementType)} instead. + * This constructor will be removed in 2019.2. + */ + @Deprecated public PyClassStubImpl(@Nullable String name, @Nullable StubElement parentStub, @NotNull Map superClasses,