From 85c6eee40233d7bea5df92f415a9a020c228c483 Mon Sep 17 00:00:00 2001 From: Pavel Karateev Date: Wed, 2 Oct 2024 15:01:14 +0000 Subject: [PATCH] PY-75714 Fold single line match case clauses Merge-request: IJ-MR-144163 Merged-by: Pavel Karateev GitOrigin-RevId: 352d1111988371b6edd9fa1af71b345dbb7aee38 --- .../jetbrains/python/PythonFoldingBuilder.java | 12 +++++------- python/testData/folding/blocksFolding.py | 16 ++++++++-------- python/testData/folding/matchFolding.py | 8 ++++---- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/python/src/com/jetbrains/python/PythonFoldingBuilder.java b/python/src/com/jetbrains/python/PythonFoldingBuilder.java index 63a596427dc8..63302d18897b 100644 --- a/python/src/com/jetbrains/python/PythonFoldingBuilder.java +++ b/python/src/com/jetbrains/python/PythonFoldingBuilder.java @@ -176,14 +176,12 @@ public class PythonFoldingBuilder extends CustomFoldingBuilder implements DumbAw } private static boolean checkFoldBlocks(@NotNull ASTNode statementList, @NotNull IElementType parentType) { - if (!PyElementTypes.PARTS.contains(parentType) && parentType != PyElementTypes.WITH_STATEMENT && parentType != PyElementTypes.CASE_CLAUSE) { - return false; - } PsiElement element = statementList.getPsi(); - if (element instanceof PyStatementList) { - return StringUtil.countNewLines(element.getText()) > 0; - } - return false; + assert element instanceof PyStatementList; + + return PyElementTypes.PARTS.contains(parentType) || + parentType == PyElementTypes.WITH_STATEMENT || + parentType == PyElementTypes.CASE_CLAUSE; } private static void foldLongStrings(ASTNode node, List descriptors) { diff --git a/python/testData/folding/blocksFolding.py b/python/testData/folding/blocksFolding.py index 6925d1857bfc..2c864ee44fbf 100644 --- a/python/testData/folding/blocksFolding.py +++ b/python/testData/folding/blocksFolding.py @@ -1,7 +1,7 @@ -if True: - pass -else: - pass +if True: + pass +else: + pass if True: pass @@ -15,8 +15,8 @@ else: x = [] -for i in x: - pass +for i in x: + pass for i in x: pass @@ -39,8 +39,8 @@ except ValueError: print('') print('') print('') -except Exception: - print('') +except Exception: + print('') else: print('') print('') diff --git a/python/testData/folding/matchFolding.py b/python/testData/folding/matchFolding.py index 959b69a6bbca..7e730a79ba82 100644 --- a/python/testData/folding/matchFolding.py +++ b/python/testData/folding/matchFolding.py @@ -3,8 +3,8 @@ def f(data): case 1: pass pass - case 2: - pass + case 2: + pass case 3: pass pass @@ -15,5 +15,5 @@ match p: case 0: pass pass - case 1: - pass + case 1: + pass