From bc9902ad42ffa45dc2941e0a0ef40a8eb9013c16 Mon Sep 17 00:00:00 2001 From: Daniil Kalinin Date: Wed, 18 Sep 2024 11:00:09 +0200 Subject: [PATCH] [python] fix StackOverflowError while calculating a generic definition type in PyTypingTypeProvider.java GitOrigin-RevId: 0ff3415886906cb29eb6bd3caa1fa140c0693ba7 --- .../python/codeInsight/typing/PyTypingTypeProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java index 671fa79ec44e..57c5c231732a 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java +++ b/python/python-psi-impl/src/com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.java @@ -1884,7 +1884,8 @@ public final class PyTypingTypeProvider extends PyTypeProviderWithCustomContext< @NotNull Context context) { PyClass pyClass = classType.getPyClass(); if (isGeneric(pyClass, context.getTypeContext())) { - PyCollectionType genericDefinitionType = PyTypeChecker.findGenericDefinitionType(pyClass, context.getTypeContext()); + PyCollectionType genericDefinitionType = + doPreventingRecursion(pyClass, false, () -> PyTypeChecker.findGenericDefinitionType(pyClass, context.getTypeContext())); if (genericDefinitionType != null && ContainerUtil.exists(genericDefinitionType.getElementTypes(), t -> t instanceof PyTypeParameterType typeParameterType && typeParameterType.getDefaultType() != null)) {