Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 41691

Summary: Move static members fails if "//" is before member [refactoring]
Product: [Eclipse Project] JDT Reporter: Markus Keller <markus.kell.r>
Component: UIAssignee: Markus Keller <markus.kell.r>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: akiezun
Version: 3.0   
Target Milestone: 3.0 M3   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Tests.
none
Fix.
none
Test none

Description Markus Keller CLA 2003-08-19 11:20:56 EDT
Problem is that JavaElements and AstNodes have a different opinion whether
//Comments should belong to an adjacent memeber or not.

I'll attach tests.


To reproduce: Move odd to B.

A.java:
package p;
public class A {
	public final static String id= "Thing.id"; //$NON-NLS-1$
	public final static String odd= "Thing.odd"; //$NON-NLS-1$
}

B.java:
package p;
public class B {
}
Comment 1 Markus Keller CLA 2003-08-19 11:43:12 EDT
Created attachment 5798 [details]
Tests.

Tests are for this patch:

Index: MoveStaticMembersRefactoring.java
===================================================================
RCS file: /home/eclipse/org.eclipse.jdt.ui/core
refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveStaticMembersRefactoring.java,v

retrieving revision 1.12
diff -u -r1.12 MoveStaticMembersRefactoring.java
--- MoveStaticMembersRefactoring.java	13 Aug 2003 17:30:30 -0000	1.12
+++ MoveStaticMembersRefactoring.java	19 Aug 2003 15:39:33 -0000
@@ -711,8 +711,8 @@
		BodyDeclaration[] result= new BodyDeclaration[fMembers.length];

		for (int i= 0; i < fMembers.length; i++) {
			IMember member= fMembers[i];
-			ASTNode node= NodeFinder.perform(fSource.root,
member.getSourceRange());
-			result[i]= (BodyDeclaration)node;
+			ASTNode node= NodeFinder.perform(fSource.root,
member.getNameRange());
+			result[i]= (BodyDeclaration) (ASTNodes.getParent(node,
BodyDeclaration.class));
		}
		return result;
	}
Comment 2 Adam Kiezun CLA 2003-08-19 12:54:46 EDT
thanks Markus
tests released - we won't be seeing this one again
Comment 3 Markus Keller CLA 2003-08-21 05:34:22 EDT
Created attachment 5811 [details]
Fix.

Uses the ASTNode of the member declaration to extract the updated member from
source (previous implementation used JavaElements, which is unnecessary
overhead).
Comment 4 Markus Keller CLA 2003-08-21 05:36:22 EDT
Created attachment 5812 [details]
Test

Bug 41734 tells why test32 is disabled.