From 5fa744f0a15986e9129797b7d2f364a141af366f Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 14 Feb 2019 14:20:38 +0300 Subject: [PATCH] EA-108926 - assert: TextRange. fix another case when invalidated folding region is not removed from group --- .../openapi/editor/impl/FoldingModelImpl.java | 1 + .../intellij/openapi/editor/impl/FoldingTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java index 5dc22888ccd2..3a2996e92815 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FoldingModelImpl.java @@ -723,6 +723,7 @@ public class FoldingModelImpl extends InlayModel.SimpleAdapter FoldRegionImpl otherRegion = getRegion(otherNode); if (otherRegion.mySizeBeforeUpdate > region.mySizeBeforeUpdate) { setNode(region, null); + removeRegionFromGroup(region); removeIntervalInternal(0); super.addIntervalsFrom(otherNode); } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/FoldingTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/FoldingTest.java index 3ae75f036a95..dc4eb23490d2 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/FoldingTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/FoldingTest.java @@ -398,4 +398,18 @@ public class FoldingTest extends AbstractEditorTest { FoldRegion region = addFoldRegion(0, 0, "."); assertNull(region); } + + public void testRegionBecomingInvalidIsRemovedFromGroup() { + FoldingGroup group = FoldingGroup.newGroup("test"); + + myEditor.getFoldingModel().runBatchFoldingOperation( + () -> myModel.createFoldRegion(0, 10, "...", group, false) + ); + addCollapsedFoldRegion(1, 10, "..."); + + WriteCommandAction.runWriteCommandAction(getProject(), () -> myEditor.getDocument().deleteString(0, 1)); + + List regions = myModel.getGroupedRegions(group); + assertEmpty(regions); + } }