|
From: Christopher W. <caw...@us...> - 2005-11-29 19:37:40
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4395/src/org/rubypeople/rdt/internal/core Modified Files: RubyScriptStructureBuilder.java Log Message: set the super class name for classes and modules Index: RubyScriptStructureBuilder.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/RubyScriptStructureBuilder.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** RubyScriptStructureBuilder.java 17 Oct 2005 04:31:55 -0000 1.12 --- RubyScriptStructureBuilder.java 29 Nov 2005 19:37:28 -0000 1.13 *************** *** 475,480 **** ISourcePosition pos = iVisited.getPosition(); setKeywordRange("class", pos, info, name); ! ! // TODO Set the superclass! info.setIncludedModuleNames(new String[] {"Kernel"}); infoStack.push(info); --- 475,482 ---- ISourcePosition pos = iVisited.getPosition(); setKeywordRange("class", pos, info, name); ! ! Node superNode = iVisited.getSuperNode(); ! String superClass = getSuperClassName(superNode); ! info.setSuperclassName(superClass); info.setIncludedModuleNames(new String[] {"Kernel"}); infoStack.push(info); *************** *** 490,493 **** --- 492,513 ---- } + /** + * Build up the fully qualified name of the super class for a class declaration + * @param superNode + * @return + */ + 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 void setLocalVarRange( ISourcePosition pos, MemberElementInfo info, String name ){ int start = pos.getStartOffset() - name.length(); *************** *** 1191,1194 **** --- 1211,1215 ---- ISourcePosition pos = iVisited.getPosition(); setKeywordRange("module", pos, info, name); + info.setSuperclassName("Module"); // TODO Set more info! infoStack.push(info); |