|
From: <mir...@us...> - 2007-04-04 14:36:02
|
Revision: 2273
http://svn.sourceforge.net/rubyeclipse/?rev=2273&view=rev
Author: mirkostocker
Date: 2007-04-04 07:35:34 -0700 (Wed, 04 Apr 2007)
Log Message:
-----------
Fix a bug with multiple, nested modules in the rename class refactoring.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java
Added Paths:
-----------
trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.result
trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.source
trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.test_properties
Modified: trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java 2007-04-04 14:25:31 UTC (rev 2272)
+++ trunk/org.rubypeople.rdt.refactoring/src/org/rubypeople/rdt/refactoring/core/SelectionNodeProvider.java 2007-04-04 14:35:34 UTC (rev 2273)
@@ -54,7 +54,6 @@
import org.jruby.ast.NewlineNode;
import org.jruby.ast.Node;
import org.jruby.ast.RootNode;
-import org.jruby.ast.SClassNode;
import org.jruby.ast.types.INameNode;
import org.jruby.lexer.yacc.ISourcePosition;
import org.rubypeople.rdt.refactoring.exception.NoClassNodeException;
@@ -250,21 +249,20 @@
public static final int CURSOR_TOLERANCE = 1;
public static ClassNodeWrapper getSelectedClassNode(Node rootNode, int position) throws NoClassNodeException {
- return getSelectedClassNode(rootNode, position, SClassNode.class, ClassNode.class);
- }
-
- private static ClassNodeWrapper getSelectedClassNode(Node rootNode, int position, Class... classes) throws NoClassNodeException {
-
- Node enclosingClassNode = getSelectedNodeOfType(rootNode, position, classes);
+ Node enclosingClassNode = getSelectedNodeOfType(rootNode, position, ClassNode.class);
PartialClassNodeWrapper partialClassNode = PartialClassNodeWrapper.getPartialClassNodeWrapper(enclosingClassNode, rootNode);
ArrayList<ModuleNode> moduleNodes = new ArrayList<ModuleNode>();
- ModuleNode moduleNode = (ModuleNode) SelectionNodeProvider.getSelectedNodeOfType(rootNode, position, ModuleNode.class);
- if (moduleNode != null) {
- moduleNodes.add(moduleNode);
- partialClassNode.setEnclosingModules(moduleNodes);
+ Collection<Node> subNodes = NodeProvider.getSubNodes(rootNode, ModuleNode.class);
+ for (Node node : subNodes) {
+ if(nodeContainsPosition(node, position)) {
+ moduleNodes.add((ModuleNode) node);
+ }
}
+
+ partialClassNode.setEnclosingModules(moduleNodes);
+
return new ClassNodeWrapper(partialClassNode);
}
Added: trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.result
===================================================================
--- trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.result (rev 0)
+++ trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.result 2007-04-04 14:35:34 UTC (rev 2273)
@@ -0,0 +1,8 @@
+module Spec
+ module Runner
+ module Formatter
+ class NewName
+ end
+ end
+ end
+end
\ No newline at end of file
Added: trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.source
===================================================================
--- trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.source (rev 0)
+++ trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.activeFile.rb.source 2007-04-04 14:35:34 UTC (rev 2273)
@@ -0,0 +1,8 @@
+module Spec
+ module Runner
+ module Formatter
+ class ProgressBarFormatter
+ end
+ end
+ end
+end
\ No newline at end of file
Added: trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.test_properties
===================================================================
--- trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.test_properties (rev 0)
+++ trunk/org.rubypeople.rdt.refactoring.tests/resources/core/renameclass/rename_class_test_9.test_properties 2007-04-04 14:35:34 UTC (rev 2273)
@@ -0,0 +1,3 @@
+name=NewName
+pos=74
+activeFile=activeFile.rb
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|