From d537c6030cabb87999a2a6617dcad948a70a5f7c Mon Sep 17 00:00:00 2001 From: Marc-Andre Laperle Date: Sat, 22 Sep 2018 00:08:58 -0400 Subject: [PATCH] Bug 486036 - Toggle Function Definition does not work when comment is involved Change-Id: I77a2c2fe0607ce098da4a4e7679fc3999ea7ebbf Signed-off-by: Marc-Andre Laperle --- .../togglefunction/ToggleRefactoringTest.java | 18 ++++++++++++++++++ ...mImplementationToHeaderOrClassStrategy.java | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java index d41289a42ef..77f4bee5d61 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/togglefunction/ToggleRefactoringTest.java @@ -3648,4 +3648,22 @@ public class ToggleRefactoringTest extends RefactoringTestBase { public void testToggleWithLambdaExpression_518271() throws Exception { assertRefactoringSuccess(); } + + //Test.cpp + //class MyClass { + // void MyMethod(); + //}; + // + //void MyClass::/*$*/MyMethod/*$$*/() { + //// A comment + //} + //==================== + //class MyClass { + // void MyMethod() { + // // A comment + // } + //}; + public void testToggleWithCommentsInSameFile_486036() throws Exception { + assertRefactoringSuccess(); + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFromImplementationToHeaderOrClassStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFromImplementationToHeaderOrClassStrategy.java index 48ea14176d9..a78096648d6 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFromImplementationToHeaderOrClassStrategy.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/togglefunction/ToggleFromImplementationToHeaderOrClassStrategy.java @@ -146,6 +146,10 @@ public class ToggleFromImplementationToHeaderOrClassStrategy implements IToggleR } private void copyAllCommentsToNewLocation(IASTNode node, final ASTRewrite oldRw, final ASTRewrite newRw) { + //Bug 486036: In case oldRw == newRw (same file), there's no need to copy anything, the comments will follow along. + if (oldRw == newRw) { + return; + } node.accept(new CPPASTAllVisitor() { @Override public int visitAll(IASTNode node){