|
From: Christopher W. <caw...@us...> - 2006-01-27 17:08:35
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10170/src/org/rubypeople/rdt/internal/core Modified Files: RubyTypeElementInfo.java RubyScriptStructureBuilder.java Log Message: handle scoped class names, particularly with duplicate last sections being equal (Ticket #66) Example: class Aa::Cc end class Bb::Cc end Index: RubyTypeElementInfo.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyTypeElementInfo.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** RubyTypeElementInfo.java 12 Mar 2005 15:30:03 -0000 1.4 --- RubyTypeElementInfo.java 27 Jan 2006 17:08:23 -0000 1.5 *************** *** 49,53 **** * The name of the package this type is contained in. */ ! protected String packageName; /** --- 49,53 ---- * The name of the package this type is contained in. */ ! protected String namespaceName; /** *************** *** 235,240 **** * @see IType */ ! public String getPackageName() { ! return this.packageName; } --- 235,240 ---- * @see IType */ ! public String getNamespace() { ! return this.namespaceName; } *************** *** 260,265 **** * Sets the name of the package this type is declared in. */ ! protected void setPackageName(String name) { ! this.packageName = name; } --- 260,265 ---- * Sets the name of the package this type is declared in. */ ! protected void setNamespaceName(String name) { ! this.namespaceName = name; } Index: RubyScriptStructureBuilder.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptStructureBuilder.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** RubyScriptStructureBuilder.java 24 Dec 2005 01:43:57 -0000 1.14 --- RubyScriptStructureBuilder.java 27 Jan 2006 17:08:23 -0000 1.15 *************** *** 483,488 **** // This resets the visibility when opening or declaring a class to public currentVisibility = Visibility.PUBLIC; ! ! String name = iVisited.getCPath().getName(); RubyType handle = new RubyType(modelStack.peek(), name); modelStack.push(handle); --- 483,488 ---- // This resets the visibility when opening or declaring a class to public currentVisibility = Visibility.PUBLIC; ! ! String name = getFullyQualifiedName(iVisited.getCPath()); RubyType handle = new RubyType(modelStack.peek(), name); modelStack.push(handle); *************** *** 496,501 **** setKeywordRange("class", pos, info, name); ! Node superNode = iVisited.getSuperNode(); ! String superClass = getSuperClassName(superNode); info.setSuperclassName(superClass); info.setIncludedModuleNames(new String[] {"Kernel"}); --- 496,500 ---- setKeywordRange("class", pos, info, name); ! String superClass = getSuperClassName(iVisited.getSuperNode()); info.setSuperclassName(superClass); info.setIncludedModuleNames(new String[] {"Kernel"}); *************** *** 520,534 **** private String getSuperClassName(Node superNode) { if (superNode == null) return "Object"; ! if (superNode instanceof ConstNode) { ! ConstNode superClassNode = (ConstNode) superNode; ! return superClassNode.getName(); ! } ! if (superNode instanceof Colon2Node) { ! Colon2Node superClassNode = (Colon2Node) superNode; ! return getSuperClassName(superClassNode.getLeftNode()) + "::" + superClassNode.getName(); ! } ! return "Object"; } private Instruction setLocalVarRange( ISourcePosition pos, MemberElementInfo info, String name ){ int start = pos.getStartOffset() - name.length(); --- 519,540 ---- private String getSuperClassName(Node superNode) { if (superNode == null) return "Object"; ! return getFullyQualifiedName(superNode); } + private String getFullyQualifiedName(Node node) { + if (node == null) return ""; + if (node instanceof ConstNode) { + ConstNode constNode = (ConstNode) node; + return constNode.getName(); + } + if (node instanceof Colon2Node) { + Colon2Node colonNode = (Colon2Node) node; + String prefix = getFullyQualifiedName(colonNode.getLeftNode()); + if (prefix.length() > 0) prefix = prefix + "::"; + return prefix + colonNode.getName(); + } + return ""; + } + private Instruction setLocalVarRange( ISourcePosition pos, MemberElementInfo info, String name ){ int start = pos.getStartOffset() - name.length(); |