From 216762f395f7248ff90b3db76214fc091c4b6502 Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Mon, 18 Jan 2021 17:46:32 +0300 Subject: [PATCH] Fixed IDEA-208441 "//region" matches a wrong "//endregion" sometimes GitOrigin-RevId: f2980e2d92050c5d4c90485955afe4365a033439 --- .../codeInsight/folding/CustomFoldingIdea208441.java | 9 +++++++++ .../intellij/openapi/editor/impl/JavaFoldingTest.groovy | 4 +++- .../customFolding/VisualStudioCustomFoldingProvider.java | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/folding/CustomFoldingIdea208441.java diff --git a/java/java-tests/testData/codeInsight/folding/CustomFoldingIdea208441.java b/java/java-tests/testData/codeInsight/folding/CustomFoldingIdea208441.java new file mode 100644 index 000000000000..96ab651b1194 --- /dev/null +++ b/java/java-tests/testData/codeInsight/folding/CustomFoldingIdea208441.java @@ -0,0 +1,9 @@ +public class Test { + // region First + // void foo() { + // // region MyRegion + // System.out.print("Text"); + // // endregion + // } + // endregion +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/openapi/editor/impl/JavaFoldingTest.groovy b/java/java-tests/testSrc/com/intellij/openapi/editor/impl/JavaFoldingTest.groovy index b14109c7d23b..7923a8d3016d 100644 --- a/java/java-tests/testSrc/com/intellij/openapi/editor/impl/JavaFoldingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/openapi/editor/impl/JavaFoldingTest.groovy @@ -16,7 +16,6 @@ import com.intellij.openapi.editor.ex.DocumentEx import com.intellij.openapi.editor.ex.EditorEx import com.intellij.openapi.editor.ex.FoldingListener import com.intellij.openapi.editor.ex.FoldingModelEx -import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiClass import com.intellij.psi.PsiMethod @@ -382,6 +381,9 @@ class Test { } public void testCustomFolding() { doTest() } + + public void testCustomFoldingIdea208441() {doTest()} + public void testEmptyMethod() { doTest() } private doTest() { diff --git a/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java b/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java index e3f3efc8edb2..655b69b98c76 100644 --- a/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java +++ b/platform/lang-impl/src/com/intellij/lang/customFolding/VisualStudioCustomFoldingProvider.java @@ -31,7 +31,7 @@ public class VisualStudioCustomFoldingProvider extends CustomFoldingProvider { @Override public boolean isCustomRegionEnd(String elementText) { - return elementText.contains("endregion"); + return elementText.contains("endregion") && elementText.matches("[/*#-]*\\s*endregion.*"); } @Override