[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] minor changes to rename refactoring
|
* adds correct warning in case of renaming inside comments.
* adds testcases for bugs marked as fixed in bugzilla.
Markus.
Index: src/org/eclipse/cdt/internal/refactoring/CRenameProcessorDelegate.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring/src/org/eclipse/cdt/internal/refactoring/CRenameProcessorDelegate.java,v
retrieving revision 1.2
diff -u -r1.2 CRenameProcessorDelegate.java
--- src/org/eclipse/cdt/internal/refactoring/CRenameProcessorDelegate.java 21 May 2005 19:09:19 -0000 1.2
+++ src/org/eclipse/cdt/internal/refactoring/CRenameProcessorDelegate.java 2 Jun 2005 14:15:06 -0000
@@ -154,9 +154,15 @@
HashSet fileset= new HashSet();
int potentialMatchCount= 0;
+ int commentCount=0;
for (Iterator iter = fMatches.iterator(); iter.hasNext();) {
CRefactoringMatch tm = (CRefactoringMatch) iter.next();
- switch(tm.getAstInformation()) {
+ if (tm.isInComment()) {
+ commentCount++;
+ fileset.add(tm.getFile());
+ }
+ else {
+ switch(tm.getAstInformation()) {
case CRefactoringMatch.AST_REFERENCE_OTHER:
iter.remove();
break;
@@ -166,7 +172,8 @@
break;
default:
fileset.add(tm.getFile());
- break;
+ break;
+ }
}
}
if (potentialMatchCount != 0) {
@@ -181,6 +188,18 @@
}
result.addWarning(msg);
}
+ if (commentCount != 0) {
+ String msg= null;
+ if (commentCount == 1) {
+ msg= Messages.getString("CRenameProcessorDelegate.warning.commentMatch.singular"); //$NON-NLS-1$
+ }
+ else {
+ msg= MessageFormat.format(
+ Messages.getString("CRenameProcessorDelegate.warning.commentMatch.plural"), //$NON-NLS-1$
+ new Object[]{new Integer(commentCount)});
+ }
+ result.addWarning(msg);
+ }
IFile[] files= (IFile[]) fileset.toArray(new IFile[fileset.size()]);
if (context != null) {
ValidateEditChecker editChecker=
Index: src/org/eclipse/cdt/internal/refactoring/TextSearchWrapper.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring/src/org/eclipse/cdt/internal/refactoring/TextSearchWrapper.java,v
retrieving revision 1.3
diff -u -r1.3 TextSearchWrapper.java
--- src/org/eclipse/cdt/internal/refactoring/TextSearchWrapper.java 21 May 2005 19:09:19 -0000 1.3
+++ src/org/eclipse/cdt/internal/refactoring/TextSearchWrapper.java 2 Jun 2005 14:15:06 -0000
@@ -219,8 +219,14 @@
state= CRefactory.OPTION_IN_STRING_LITERAL;
break;
case Token.tPREPROCESSOR:
- state= categorizePreprocessor(token.getText());
- break;
+ state= CRefactory.OPTION_IN_PREPROCESSOR_DIRECTIVE;
+ break;
+ case Token.tPREPROCESSOR_DEFINE:
+ state= CRefactory.OPTION_IN_MACRO_DEFINITION;
+ break;
+ case Token.tPREPROCESSOR_INCLUDE:
+ state= CRefactory.OPTION_IN_INCLUDE_DIRECTIVE;
+ break;
}
if (state != lastState) {
locations.add(new int[] {token.getOffset(), state});
Index: src/org/eclipse/cdt/internal/refactoring/messages.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring/src/org/eclipse/cdt/internal/refactoring/messages.properties,v
retrieving revision 1.6
diff -u -r1.6 messages.properties
--- src/org/eclipse/cdt/internal/refactoring/messages.properties 31 May 2005 15:11:23 -0000 1.6
+++ src/org/eclipse/cdt/internal/refactoring/messages.properties 2 Jun 2005 14:15:06 -0000
@@ -36,6 +36,8 @@
CRenameProcessorDelegate.task.checkFinalCondition=Checking final conditions
CRenameProcessorDelegate.warning.potentialMatch.singular=Refactoring contains 1 potential match.
CRenameProcessorDelegate.warning.potentialMatch.plural=Refactoring contains {0} potential matches.
+CRenameProcessorDelegate.warning.commentMatch.singular=Refactoring contains 1 match within a comment.
+CRenameProcessorDelegate.warning.commentMatch.plural=Refactoring contains {0} matches within comments.
CRenameProcessorDelegate.error.conflictingDecl=New name conflicts with other declarations
CRenameTopProcessor.wizard.backup.title=Rename
CRenameTopProcessor.filelocalFunction=file local function
Index: src/org/eclipse/cdt/refactoring/CRefactoringMatch.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring/src/org/eclipse/cdt/refactoring/CRefactoringMatch.java,v
retrieving revision 1.2
diff -u -r1.2 CRefactoringMatch.java
--- src/org/eclipse/cdt/refactoring/CRefactoringMatch.java 15 Apr 2005 13:55:27 -0000 1.2
+++ src/org/eclipse/cdt/refactoring/CRefactoringMatch.java 2 Jun 2005 14:15:06 -0000
@@ -67,9 +67,13 @@
if (fAstInformation == AST_REFERENCE) {
return LABELS[AST_REFERENCE];
}
- if ((fLocation & CRefactory.OPTION_IN_COMMENT) != 0) {
+ if (isInComment()) {
return LABELS[IN_COMMENT];
}
return LABELS[POTENTIAL];
}
+
+ public boolean isInComment() {
+ return (fLocation & CRefactory.OPTION_IN_COMMENT) != 0;
+ }
}
Index: plugin.xml
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring.tests/plugin.xml,v
retrieving revision 1.2
diff -u -r1.2 plugin.xml
--- plugin.xml 15 Apr 2005 13:55:35 -0000 1.2
+++ plugin.xml 2 Jun 2005 14:15:26 -0000
@@ -25,6 +25,7 @@
<import plugin="org.eclipse.jface.text"/>
<import plugin="org.eclipse.ui.workbench.texteditor"/>
<import plugin="org.eclipse.cdt.core.tests"/>
+ <import plugin="org.eclipse.search"/>
</requires>
<extension point="org.eclipse.ltk.core.refactoring.renameParticipants">
Index: src/org/eclipse/cdt/refactoring/tests/RefactoringTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring.tests/src/org/eclipse/cdt/refactoring/tests/RefactoringTests.java,v
retrieving revision 1.5
diff -u -r1.5 RefactoringTests.java
--- src/org/eclipse/cdt/refactoring/tests/RefactoringTests.java 21 May 2005 19:08:33 -0000 1.5
+++ src/org/eclipse/cdt/refactoring/tests/RefactoringTests.java 2 Jun 2005 14:15:26 -0000
@@ -17,12 +17,15 @@
import org.eclipse.cdt.internal.core.dom.SavedCodeReaderFactory;
import org.eclipse.core.resources.IFile;
import org.eclipse.ltk.core.refactoring.*;
+import org.eclipse.search.internal.core.text.FileCharSequenceProvider;
import org.eclipse.text.edits.*;
/**
* @author markus.schorn@xxxxxxxxxxxxx
*/
public class RefactoringTests extends BaseTestFramework {
+ private int fBufferSize;
+
public RefactoringTests() {
}
@@ -33,11 +36,14 @@
protected void setUp() throws Exception {
super.setUp();
disableIndexing();
+ fBufferSize= FileCharSequenceProvider.BUFFER_SIZE;
+ FileCharSequenceProvider.BUFFER_SIZE= 1024*4;
}
protected void tearDown() throws Exception {
super.tearDown();
SavedCodeReaderFactory.getInstance().getCodeReaderCache().flush();
+ FileCharSequenceProvider.BUFFER_SIZE= fBufferSize;
}
protected void assertTotalChanges(int numChanges, Change changes) throws Exception {
Index: src/org/eclipse/cdt/refactoring/tests/RenameFunctionTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring.tests/src/org/eclipse/cdt/refactoring/tests/RenameFunctionTests.java,v
retrieving revision 1.3
diff -u -r1.3 RenameFunctionTests.java
--- src/org/eclipse/cdt/refactoring/tests/RenameFunctionTests.java 12 May 2005 14:39:20 -0000 1.3
+++ src/org/eclipse/cdt/refactoring/tests/RenameFunctionTests.java 2 Jun 2005 14:15:27 -0000
@@ -32,12 +32,7 @@
return suite(true);
}
public static Test suite( boolean cleanup ) {
- TestSuite suite = new TestSuite("RenameFunctionTests"); //$NON-NLS-1$
- suite.addTest(new RenameFunctionTests("testFunctionNameConflicts") ); //$NON-NLS-1$
- suite.addTest(new RenameFunctionTests("testFunctionsPlainC") ); //$NON-NLS-1$
- suite.addTest(new RenameFunctionTests("testFunctionNameConflictsPlainC") ); //$NON-NLS-1$
- suite.addTest(new RenameFunctionTests("testMethodNameConflicts1") ); //$NON-NLS-1$
- suite.addTest(new RenameFunctionTests("testMethodNameConflicts2") ); //$NON-NLS-1$
+ TestSuite suite = new TestSuite(RenameFunctionTests.class); //$NON-NLS-1$
if (cleanup) {
suite.addTest( new RefactoringTests("cleanupProject") ); //$NON-NLS-1$
@@ -596,4 +591,37 @@
status= checkConditions(cpp, offset3, "un_member"); //$NON-NLS-1$
assertRefactoringOk(status);
}
+
+ public void testBug72605() throws Exception {
+ StringWriter writer = new StringWriter();
+ writer.write("class Foo { \n"); //$NON-NLS-1$
+ writer.write(" void m1(int x=0); \n"); //$NON-NLS-1$
+ writer.write("}; \n"); //$NON-NLS-1$
+ writer.write("void Foo::m1(int x) {} \n"); //$NON-NLS-1$
+ String contents = writer.toString();
+ IFile cpp= importFile("test.cpp", contents ); //$NON-NLS-1$
+
+ int offset = contents.indexOf("m1") ; //$NON-NLS-1$
+ int offset2= contents.indexOf("m1", offset+1) ; //$NON-NLS-1$
+ Change changes = getRefactorChanges(cpp, offset, "z"); //$NON-NLS-1$
+ assertTotalChanges( 2, changes );
+ changes = getRefactorChanges(cpp, offset2, "z"); //$NON-NLS-1$
+ assertTotalChanges( 2, changes );
+ }
+
+ public void testBug72732() throws Exception {
+ StringWriter writer = new StringWriter();
+ writer.write("class Foo { \n"); //$NON-NLS-1$
+ writer.write(" virtual void mthd() = 0;\n"); //$NON-NLS-1$
+ writer.write("}; \n"); //$NON-NLS-1$
+ writer.write("class Moo: public Foo{ \n"); //$NON-NLS-1$
+ writer.write(" void mthd() = 0; \n"); //$NON-NLS-1$
+ writer.write("}; \n"); //$NON-NLS-1$
+ String contents = writer.toString();
+ IFile cpp= importFile("test.cpp", contents ); //$NON-NLS-1$
+ int offset = contents.indexOf("mthd") ; //$NON-NLS-1$
+ offset= contents.indexOf("mthd", offset+1) ; //$NON-NLS-1$
+ RefactoringStatus status= checkConditions(cpp, offset, "xxx"); //$NON-NLS-1$
+ assertRefactoringWarning(status, "Renaming a virtual method. Consider renaming the base and derived class methods (if any)."); //$NON-NLS-1$
+ }
}
Index: src/org/eclipse/cdt/refactoring/tests/RenameTypeTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring.tests/src/org/eclipse/cdt/refactoring/tests/RenameTypeTests.java,v
retrieving revision 1.2
diff -u -r1.2 RenameTypeTests.java
--- src/org/eclipse/cdt/refactoring/tests/RenameTypeTests.java 21 May 2005 19:08:33 -0000 1.2
+++ src/org/eclipse/cdt/refactoring/tests/RenameTypeTests.java 2 Jun 2005 14:15:27 -0000
@@ -1642,4 +1642,24 @@
Change ch= getRefactorChanges(cpp, offset1, "CString"); //$NON-NLS-1$
assertTotalChanges(countOccurrences(contents, "String"), ch); //$NON-NLS-1$
}
+
+ public void testBug72888() throws Exception {
+ StringWriter writer = new StringWriter();
+ writer.write("class MyEx {}; \n"); //$NON-NLS-1$
+ writer.write("void someFunc() { \n"); //$NON-NLS-1$
+ writer.write(" throw MyEx(); \n"); //$NON-NLS-1$
+ writer.write("}; \n"); //$NON-NLS-1$
+ writer.write("int main(){ \n"); //$NON-NLS-1$
+ writer.write(" try{ \n"); //$NON-NLS-1$
+ writer.write(" someFunc(); \n"); //$NON-NLS-1$
+ writer.write(" } catch(MyEx &e) {} \n"); //$NON-NLS-1$
+ writer.write(" return 0; \n"); //$NON-NLS-1$
+ writer.write("} \n"); //$NON-NLS-1$
+ String contents = writer.toString();
+ IFile cpp= importFile("test.cpp", contents ); //$NON-NLS-1$
+
+ int offset = contents.indexOf("MyEx") ; //$NON-NLS-1$
+ Change changes = getRefactorChanges(cpp, offset, "xx"); //$NON-NLS-1$
+ assertTotalChanges( 3, changes );
+ }
}
Index: src/org/eclipse/cdt/refactoring/tests/RenameVariableTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.refactoring.tests/src/org/eclipse/cdt/refactoring/tests/RenameVariableTests.java,v
retrieving revision 1.4
diff -u -r1.4 RenameVariableTests.java
--- src/org/eclipse/cdt/refactoring/tests/RenameVariableTests.java 21 May 2005 19:08:33 -0000 1.4
+++ src/org/eclipse/cdt/refactoring/tests/RenameVariableTests.java 2 Jun 2005 14:15:28 -0000
@@ -33,23 +33,8 @@
return suite(true);
}
public static Test suite( boolean cleanup ) {
- TestSuite suite = new TestSuite("RenameVariableTests"); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testLocalNameConflicts") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testLocalNameConflictsPlainC") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testParameterNameConflicts") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testParameterNameConflictsPlainC") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testVaribleNameConflicts") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testVaribleNameConflictsPlainC") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testEnumeratorNameConflicts") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testEnumeratorNameConflictsPlainC") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testMemberNameConflicts1") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testMemberNameConflicts2") ); //$NON-NLS-1$
-
- suite.addTest(new RenameVariableTests("testReferenceViaMacro") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testReferenceViaMacro2") ); //$NON-NLS-1$
- suite.addTest(new FailingTest(new RenameVariableTests("testReferenceViaMacro3"), 90956) ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testReferenceViaMacro4") ); //$NON-NLS-1$
- suite.addTest(new RenameVariableTests("testReferenceViaMacro5") ); //$NON-NLS-1$
+ TestSuite suite = new TestSuite(RenameVariableTests.class); //$NON-NLS-1$
+ suite.addTest(new FailingTest(new RenameVariableTests("failReferenceViaMacro3"), 90956) ); //$NON-NLS-1$
if (cleanup) {
suite.addTest( new RefactoringTests("cleanupProject") ); //$NON-NLS-1$
@@ -1392,7 +1377,7 @@
assertChange( changes, cpp, offset2, 2, "z" ); //$NON-NLS-1$
}
- public void testReferenceViaMacro3() throws Exception {
+ public void failReferenceViaMacro3() throws Exception {
StringWriter writer = new StringWriter();
writer.write("#define INC(x,y) x+=y \n"); //$NON-NLS-1$
writer.write("void f() { \n"); //$NON-NLS-1$
@@ -1448,5 +1433,25 @@
assertTotalChanges( 1, changes );
assertChange( changes, cpp, offset, 2, "z" ); //$NON-NLS-1$
}
-
+
+ public void testBug72646() throws Exception {
+ StringWriter writer = new StringWriter();
+ writer.write("class C2: public C1 { \n"); //$NON-NLS-1$
+ writer.write(" C2(int x, int y); \n"); //$NON-NLS-1$
+ writer.write(" int y; \n"); //$NON-NLS-1$
+ writer.write("}; \n"); //$NON-NLS-1$
+ writer.write("C2::C2(int x, int y) \n"); //$NON-NLS-1$
+ writer.write(" :C1(x), y(y) {} \n"); //$NON-NLS-1$
+ String contents = writer.toString();
+ IFile cpp= importFile("test.cpp", contents ); //$NON-NLS-1$
+
+ int offset = contents.indexOf("y") ; //$NON-NLS-1$
+ offset= contents.indexOf("y", offset+1) ; //$NON-NLS-1$
+ Change changes = getRefactorChanges(cpp, offset, "z"); //$NON-NLS-1$
+ assertTotalChanges( 2, changes );
+ assertChange( changes, cpp, offset, 1, "z" ); //$NON-NLS-1$
+ offset= contents.indexOf("y", offset+1) ; //$NON-NLS-1$
+ offset= contents.indexOf("y", offset+1) ; //$NON-NLS-1$
+ assertChange( changes, cpp, offset, 1, "z" ); //$NON-NLS-1$
+ }
}