From 80613b32239521765f953d1f91d671d329346ff0 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Thu, 24 Jan 2008 12:08:37 +0000 Subject: [PATCH] Follow up on 174597 --- .../resources/folding/FoldingTest.cpp | 3 ++- .../eclipse/cdt/ui/tests/text/FoldingTest.java | 16 ++++++++-------- .../DefaultCFoldingStructureProvider.java | 17 ++++++++++------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/core/org.eclipse.cdt.ui.tests/resources/folding/FoldingTest.cpp b/core/org.eclipse.cdt.ui.tests/resources/folding/FoldingTest.cpp index 3be9bcbfb7d..092260f710a 100644 --- a/core/org.eclipse.cdt.ui.tests/resources/folding/FoldingTest.cpp +++ b/core/org.eclipse.cdt.ui.tests/resources/folding/FoldingTest.cpp @@ -97,7 +97,8 @@ int MyI = 0,j = 0; puts("tryagain"); } while (0); - if (MyI==0) { + if (MyI==0) + { return 1; } return 0; diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingTest.java index 54618607553..47866ad719d 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/FoldingTest.java @@ -216,7 +216,7 @@ public class FoldingTest extends TestCase { createPosition(57, 59), createPosition(61, 63), createPosition(65, 67), - createPosition(70, 103, 71), + createPosition(70, 104, 71), createPosition(75, 76), createPosition(77, 79), createPosition(80, 82), @@ -226,10 +226,10 @@ public class FoldingTest extends TestCase { createPosition(90, 91), createPosition(92, 93), createPosition(95, 97), - createPosition(99, 101), - createPosition(105, 109), + createPosition(99, 102), + createPosition(106, 110), }; -// assertEquals(toString(expected), toString(actual)); + assertEquals(toString(expected), toString(actual)); assertEqualPositions(expected, actual); } @@ -251,7 +251,7 @@ public class FoldingTest extends TestCase { createPosition(57, 59), createPosition(61, 63), createPosition(65, 67), - createPosition(70, 103, 71), + createPosition(70, 104, 71), createPosition(75, 76), createPosition(77, 79), createPosition(80, 82), @@ -261,10 +261,10 @@ public class FoldingTest extends TestCase { createPosition(90, 91), createPosition(92, 93), createPosition(95, 97), - createPosition(99, 101), - createPosition(105, 109), + createPosition(99, 102), + createPosition(106, 110), }; -// assertEquals(toString(expected), toString(actual)); + assertEquals(toString(expected), toString(actual)); assertEqualPositions(expected, actual); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java index 54f5dffc776..1b087fa95d4 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/folding/DefaultCFoldingStructureProvider.java @@ -51,7 +51,6 @@ import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTBreakStatement; import org.eclipse.cdt.core.dom.ast.IASTCaseStatement; @@ -1127,13 +1126,16 @@ public class DefaultCFoldingStructureProvider implements ICFoldingStructureProvi IASTFileLocation fl; if (statement instanceof IASTIfStatement) { IASTIfStatement ifstmt = (IASTIfStatement) statement; + fl = ifstmt.getFileLocation(); + if (fl==null) return PROCESS_CONTINUE; + int ifOffset= fl.getNodeOffset(); IASTStatement tmp; mr = new ModifiableRegionExtra(); tmp = ifstmt.getThenClause(); if (tmp==null) return PROCESS_CONTINUE; fl = tmp.getFileLocation(); - mr.setLength(fl.getNodeLength()); - mr.setOffset(fl.getNodeOffset()); + mr.setLength(fl.getNodeOffset() + fl.getNodeLength() - ifOffset); + mr.setOffset(ifOffset); mr.inclusive = false; tmp = ifstmt.getElseClause(); if (tmp==null) { @@ -1148,6 +1150,7 @@ public class DefaultCFoldingStructureProvider implements ICFoldingStructureProvi mr.setOffset(fl.getNodeOffset()); mr.inclusive = true; iral.push(mr); + return PROCESS_CONTINUE; } mr = new ModifiableRegionExtra(); mr.inclusive = true; @@ -1186,7 +1189,7 @@ public class DefaultCFoldingStructureProvider implements ICFoldingStructureProvi iral.push(tmpmr); pushedMR = true; } - } + } } if (statement instanceof IASTForStatement || statement instanceof IASTWhileStatement || @@ -1198,9 +1201,9 @@ public class DefaultCFoldingStructureProvider implements ICFoldingStructureProvi iral.push(mr); } return PROCESS_CONTINUE; - } catch (Throwable e) { - CCorePlugin.log(e); - return PROCESS_CONTINUE; + } catch (Exception e) { + CUIPlugin.getDefault().log(e); + return PROCESS_ABORT; } } });