From 8f126982806efc1c68ac717c7fd9dba70d85e787 Mon Sep 17 00:00:00 2001 From: cremet Date: Tue, 11 Nov 2003 13:25:09 +0000 Subject: - Fixing of bugs. --- sources/scala/tools/scaladoc/HTMLGenerator.java | 212 +++++++++++---------- sources/scala/tools/scaladoc/Location.java | 25 ++- sources/scala/tools/scaladoc/ScalaSearch.java | 3 +- .../scala/tools/scaladoc/SymbolTablePrinter.java | 135 ++++++------- 4 files changed, 179 insertions(+), 196 deletions(-) diff --git a/sources/scala/tools/scaladoc/HTMLGenerator.java b/sources/scala/tools/scaladoc/HTMLGenerator.java index 60ceb95a57..9f5233e9d4 100644 --- a/sources/scala/tools/scaladoc/HTMLGenerator.java +++ b/sources/scala/tools/scaladoc/HTMLGenerator.java @@ -62,31 +62,22 @@ public class HTMLGenerator { public static final String VERSION = System.getProperty("scala.version", "unknown version"); - public static final String DEFAULT_DOCTITLE = ""; - public static final String DEFAULT_WINDOWTITLE = "Generated Documentation"; - /* * Names of predefined page names. */ - protected final String PAGE_DEFAULT_SUFFIX = ".html"; - protected final String PAGE_OBJECT_SUFFIX = "-object" + PAGE_DEFAULT_SUFFIX; - - protected final String FRAME_PAGE_NAME = "index.html"; - protected final String INDEX_PAGE_NAME = "all.html"; - protected final String PAGE_HELP = "help-doc.html"; - protected final String PACKAGE_LIST_PAGE = "packageList.html"; - protected final String ROOT_PAGE = "root.html"; - protected final String PAGE_PACKAGE_FRAME = "package-frame.html"; - protected final String PAGE_PACKAGE_SUMMARY = "package-summary.html"; - protected final String PACKAGE_SUMMARY = "summary.html"; - protected final String PAGE_ALLCLASSES_FRAME = PACKAGE_SUMMARY; + protected final String FRAME_PAGE = "index.html"; + protected final String ROOT_PAGE = Location.ROOT_NAME + ".html"; + protected final String PACKAGE_LIST_PAGE = "package-list-page.html"; + protected final String HELP_PAGE = "help-page.html"; + protected final String INDEX_PAGE = "index-page.html"; + protected final String PACKAGE_PAGE = "package-page.html"; /* * Names of frames. */ - protected final String ROOT_FRAME_NAME = "rootFrame"; - protected final String PACKAGES_FRAME_NAME = "packagesFrame"; - protected final String CLASSES_FRAME_NAME = "classesFrame"; + protected final String ROOT_FRAME = "rootFrame"; + protected final String PACKAGES_FRAME = "packagesFrame"; + protected final String CLASSES_FRAME = "classesFrame"; /* * HTML meta information. @@ -223,15 +214,17 @@ public class HTMLGenerator { */ protected final Stack stack = new Stack(); - /** - * Dummy symbols used as markers for the generation of special HTML pages - */ - protected final Symbol indexPage = new NoSymbol(); - protected final Symbol helpPage = new NoSymbol(); - private final Symbol JAVALANG; // !!! remove ? private final Type ROOT_TYPE; // !!! remove ? + /** + * Navigation context. + */ + private final int ROOT_NAV_CONTEXT = 0; // on the root page + private final int INDEX_NAV_CONTEXT = 1; // on the index page + private final int HELP_NAV_CONTEXT = 2; // on the help page + private final int CONTAINER_NAV_CONTEXT = 3; // on a container page different from the root. + /** * Creates a new instance. * @@ -303,12 +296,12 @@ public class HTMLGenerator { else page = new HTMLPrinter(out, title, representation, stylesheet); symtab = new SymbolTablePrinter(this, page.getCodePrinter()); - } catch (IOException exception) { - throw Debug.abort(exception); // !!! reporting an error would be wiser + uri = new URI("."); + } catch (Exception e) { + throw Debug.abort(e); // !!! reporting an error would be wiser } } - /** * Closes the Writer object associated with both printer objects. */ @@ -396,17 +389,6 @@ public class HTMLGenerator { return anchors.containsKey(OneTree.symbol(sym)); } - - /** - * Give the HTML label of this symbol. - * - * @param sym - */ - protected String label(Symbol sym) { - String anchor = (String) anchors.get(OneTree.symbol(sym)); - return anchor.substring(anchor.indexOf('#') + 1); - } - /** * Returns the comment associated with a given symbol. * @@ -429,7 +411,8 @@ public class HTMLGenerator { */ protected Tree[][] members(Tree tree) { switch (tree) { - case ClassDef(int mods, Name name, AbsTypeDef[] tparams, ValDef[][] vparams, Tree tpe, Template impl): + case ClassDef(int mods, Name name, AbsTypeDef[] tparams, ValDef[][] vparams, + Tree tpe, Template impl): return members(impl.body); case ModuleDef(int mods, Name name, Tree tpe, Template impl): return members(impl.body); @@ -484,7 +467,10 @@ public class HTMLGenerator { page.printOpenBody(new XMLAttribute[]{ new XMLAttribute("onload", "setWindowTitle('" + windowTitle + "');") }); - addNavigationBar(sym); + if (sym.isRoot()) + addNavigationBar(ROOT_NAV_CONTEXT); + else + addNavigationBar(CONTAINER_NAV_CONTEXT); page.printlnHLine(); addTitle(sym); @@ -504,7 +490,10 @@ public class HTMLGenerator { addMemberDetail(members[i], titles[i] + " Detail"); page.printlnHLine(); - addNavigationBar(sym); + if (sym.isRoot()) + addNavigationBar(ROOT_NAV_CONTEXT); + else + addNavigationBar(CONTAINER_NAV_CONTEXT); if (validate) addValidationBar(); page.printFootpage(); @@ -537,11 +526,11 @@ public class HTMLGenerator { * * @param sym */ - protected void addNavigationBar(Symbol sym) { + protected void addNavigationBar(int navigationContext) { try { String overviewLink = Location.asSeenFrom(new URI(ROOT_PAGE), uri).toString(); - String indexLink = Location.asSeenFrom(new URI(INDEX_PAGE_NAME), uri).toString(); - String helpLink = Location.asSeenFrom(new URI(PAGE_HELP), uri).toString(); + String indexLink = Location.asSeenFrom(new URI(INDEX_PAGE), uri).toString(); + String helpLink = Location.asSeenFrom(new URI(HELP_PAGE), uri).toString(); page.printlnOTag("table", ATTRS_NAVIGATION).indent(); page.printlnOTag("tr").indent(); @@ -549,28 +538,29 @@ public class HTMLGenerator { page.printlnOTag("table").indent(); page.printlnOTag("tr").indent(); + // overview link - if (sym.isRoot()) + if (navigationContext == ROOT_NAV_CONTEXT) page.printlnTag("td", ATTRS_NAVIGATION_SELECTED, "Overview"); else { page.printOTag("td", ATTRS_NAVIGATION_ENABLED); - page.printAhref(overviewLink, ROOT_FRAME_NAME, "Overview"); + page.printAhref(overviewLink, ROOT_FRAME, "Overview"); page.printlnCTag("td"); } // index link - if (sym == indexPage) + if (navigationContext == INDEX_NAV_CONTEXT) page.printlnTag("td", ATTRS_NAVIGATION_SELECTED, "Index"); else { page.printOTag("td", ATTRS_NAVIGATION_ENABLED); - page.printAhref(indexLink, ROOT_FRAME_NAME, "Index"); + page.printAhref(indexLink, ROOT_FRAME, "Index"); page.printlnCTag("td"); } // help link - if (sym == helpPage) + if (navigationContext == HELP_NAV_CONTEXT) page.printlnTag("td", ATTRS_NAVIGATION_SELECTED, "Help"); else { page.printOTag("td", ATTRS_NAVIGATION_ENABLED); - page.printAhref(helpLink, ROOT_FRAME_NAME, "Help"); + page.printAhref(helpLink, ROOT_FRAME, "Help"); page.printlnCTag("td"); } @@ -602,7 +592,7 @@ public class HTMLGenerator { page.printlnOTag("div", ATTRS_VALIDATION); page.indent(); page.printlnAhref( - "http://validator.w3.org/check/referer", ROOT_FRAME_NAME, + "http://validator.w3.org/check/referer", ROOT_FRAME, "validate html"); page.undent(); page.printlnCTag("div"); @@ -626,9 +616,7 @@ public class HTMLGenerator { } else { // in page.print("in "); - String ownerName = removeHtmlSuffix(Location.getURI(sym.owner()).toString()); - String target = ref(sym.owner()); - page.printlnAhref(target, ROOT_FRAME_NAME, ownerName); + printPath(sym.owner()); // kind and name page.printlnOTag("div", ATTRS_ENTITY).indent(); @@ -642,7 +630,7 @@ public class HTMLGenerator { // complete signature // !!! page.println(printer().printTemplateHtmlSignature(sym, false).toString()); - symtab.printTemplateHtmlSignature(sym, sym.owner(), false); + symtab.printTemplateHtmlSignature(sym, false); // implementing classes or modules if (sym.isClass()) { @@ -658,10 +646,11 @@ public class HTMLGenerator { Symbol sub = (Symbol) p.fst; Type tipe = (Type) p.snd; page.printlnOTag("dd"); - defString(sub, sym, true /*addLink*/); + + defString(sub, true /*addLink*/); if (sub.owner() != sym.owner()) { page.print(" in "); - page.printlnAhref(ref(sub.owner()), ROOT_FRAME_NAME, + page.printlnAhref(ref(sub.owner()), ROOT_FRAME, sub.owner().fullNameString()); } page.printlnCTag("dd"); @@ -745,7 +734,7 @@ public class HTMLGenerator { // signature page.printlnOTag("td", ATTRS_SIGNATURE).indent(); page.printOTag("code"); - defString(sym, Symbol.NONE, true /*addLink*/); + defString(sym, true /*addLink*/); page.printlnCTag("code"); // short description @@ -807,7 +796,7 @@ public class HTMLGenerator { page.printlnOTag("pre"); String mods = Modifiers.Helper.toString(sym.flags); if (mods.length() > 0) page.print(mods + " "); - symtab.printSignature(sym, Symbol.NONE, false /*addLink*/); + symtab.printSignature(sym, false /*addLink*/); page.printlnCTag("pre"); // comment @@ -833,13 +822,9 @@ public class HTMLGenerator { // owner page.printlnOTag("tr").indent(); page.printlnOTag("td", new XMLAttribute[]{ - new XMLAttribute("class", "inherited-owner")}).indent(); + new XMLAttribute("class", "inherited-owner")}).indent(); page.print(inheritedMembers + " inherited from "); - String ownerName = owners[i].fullNameString(); - if (isReferenced(owners[i])) - page.printlnAhref(ref(owners[i]), ROOT_FRAME_NAME, ownerName); - else - page.println(ownerName); + printPath(owners[i]); page.undent(); page.printlnCTag("td").undent(); page.printlnCTag("tr"); @@ -851,11 +836,7 @@ public class HTMLGenerator { Symbol[] members = (Symbol[]) group.get(owners[i]); for (int j = 0; j < members.length; j++) { if (j > 0) page.print(", "); - String memberName = members[j].nameString(); - if (isReferenced(members[j])) - page.printAhref(ref(members[j]), ROOT_FRAME_NAME, memberName); - else - page.print(memberName); + printSymbol(members[j], true); } page.undent(); page.printlnCTag("td").undent(); @@ -873,15 +854,15 @@ public class HTMLGenerator { * @param addLink Generates an hypertext reference if the parameter * addLink is true */ - void defString(Symbol sym, Symbol user, boolean addLink) { + void defString(Symbol sym, boolean addLink) { if (sym.isRoot()) page.print("Root class"); else if (sym.isClass() || sym.isModule()) - symtab.printTemplateSignature(sym, user, addLink); + symtab.printTemplateSignature(sym, addLink); else if (sym.isType() && !sym.isParameter()) - symtab.printShortSignature(sym, user, addLink); + symtab.printShortSignature(sym, addLink); else - symtab.printSignature(sym, user, addLink); + symtab.printSignature(sym, addLink); } /** @@ -942,7 +923,7 @@ public class HTMLGenerator { * @param title The page title */ protected void createFramePage(String title) { - createPrinters(FRAME_PAGE_NAME, title); + createPrinters(FRAME_PAGE, title); page.printHeader(ATTRS_META, getGenerator()); page.printlnOTag("frameset", new XMLAttribute[] { @@ -952,14 +933,14 @@ public class HTMLGenerator { page.printlnOTag("frame", new XMLAttribute[] { new XMLAttribute("src", PACKAGE_LIST_PAGE), - new XMLAttribute("name", PACKAGES_FRAME_NAME)}); + new XMLAttribute("name", PACKAGES_FRAME)}); page.printlnOTag("frame", new XMLAttribute[] { - new XMLAttribute("src", PAGE_ALLCLASSES_FRAME), - new XMLAttribute("name", CLASSES_FRAME_NAME)}).undent(); + new XMLAttribute("src", PACKAGE_PAGE), + new XMLAttribute("name", CLASSES_FRAME)}).undent(); page.printlnCTag("frameset"); page.printlnOTag("frame", new XMLAttribute[] { new XMLAttribute("src", ROOT_PAGE), - new XMLAttribute("name", ROOT_FRAME_NAME)}); + new XMLAttribute("name", ROOT_FRAME)}); page.printlnOTag("noframes").indent(); page.printlnSTag("p"); @@ -1010,10 +991,10 @@ public class HTMLGenerator { /** Returns the summary page attached to a package symbol. */ private String packageSummaryPage(Symbol sym) { if (sym.isRoot()) - return PACKAGE_SUMMARY; + return PACKAGE_PAGE; else { String packagePage = Location.getURI(sym).toString(); - return removeHtmlSuffix(packagePage) + File.separator + PACKAGE_SUMMARY; + return removeHtmlSuffix(packagePage) + File.separator + PACKAGE_PAGE; } } @@ -1034,7 +1015,7 @@ public class HTMLGenerator { Symbol sym = trees[i].symbol(); page.printAhref( packageSummaryPage(sym), - CLASSES_FRAME_NAME, + CLASSES_FRAME, sym.fullNameString()); page.printlnSTag("br"); } @@ -1064,10 +1045,10 @@ public class HTMLGenerator { if (! sym.isRoot()) { String name = sym.nameString(); if (sym.isPackage()) - page.printAhref(ref(sym), CLASSES_FRAME_NAME, name); + page.printAhref(ref(sym), CLASSES_FRAME, name); else { Symbol user = (useFullName) ? global.definitions.ROOT : Symbol.NONE; - page.printAhref(ref(sym), ROOT_FRAME_NAME, name); + page.printAhref(ref(sym), ROOT_FRAME, name); } page.printlnSTag("br"); } @@ -1094,7 +1075,7 @@ public class HTMLGenerator { page.printOpenBody(); addDocumentationTitle(new XMLAttribute[]{ new XMLAttribute("class", "doctitle-larger")}); - page.printAhref(PACKAGE_SUMMARY, CLASSES_FRAME_NAME, "All objects, traits and classes"); + page.printAhref(PACKAGE_PAGE, CLASSES_FRAME, "All objects, traits and classes"); page.printlnSTag("p"); printPackagesTable(packages, "Packages"); if (validate) @@ -1126,7 +1107,7 @@ public class HTMLGenerator { page.printlnOTag("tr").indent(); page.printlnOTag("td", ATTRS_NAVIGATION_LINKS).indent(); - page.printlnAhref(ref(sym), ROOT_FRAME_NAME, sym.fullNameString()); + page.printlnAhref(ref(sym), ROOT_FRAME, sym.fullNameString()); page.printlnCTag("td"); page.printlnCTag("tr"); @@ -1151,14 +1132,14 @@ public class HTMLGenerator { * @param title The page title */ protected void createIndexPage(String title) { - createPrinters(INDEX_PAGE_NAME, title); + createPrinters(INDEX_PAGE, title); page.printHeader(ATTRS_META, getGenerator()); String windowTitle = title + " (" + doctitle.replaceAll("<.*>", " ") + ")"; page.printOpenBody(new XMLAttribute[]{ new XMLAttribute("onload", "setWindowTitle('" + windowTitle + "');") }); - addNavigationBar(indexPage); + addNavigationBar(INDEX_NAV_CONTEXT); page.printlnHLine(); page.printlnOTag("table", ATTRS_MEMBER).indent(); @@ -1174,7 +1155,7 @@ public class HTMLGenerator { Character[] chars = (Character[]) index.fst; Map map = (Map) index.snd; for (int i = 0; i < chars.length; i++) - page.printlnAhref("#" + i, ROOT_FRAME_NAME, HTMLPrinter.encode(chars[i])); + page.printlnAhref("#" + i, ROOT_FRAME, HTMLPrinter.encode(chars[i])); page.printlnHLine(); for (int i = 0; i < chars.length; i++) { Character car = chars[i]; @@ -1187,7 +1168,6 @@ public class HTMLGenerator { for (int j = 0; j < trees.length; j++) { page.printOTag("dt"); addIndexEntry(trees[j].symbol()); - // page.printlnTag("em", Location.getURI(trees[j].symbol()).toString()); // for debugging page.printlnCTag("dt"); page.printlnTag("dd", firstSentence(getComment(trees[j].symbol()))); } @@ -1195,7 +1175,7 @@ public class HTMLGenerator { } page.printlnHLine(); - addNavigationBar(indexPage); + addNavigationBar(INDEX_NAV_CONTEXT); if (validate) addValidationBar(); page.printFootpage(); @@ -1209,14 +1189,14 @@ public class HTMLGenerator { * @param title The page title */ protected void createHelpPage(String title) { - createPrinters(PAGE_HELP, title); + createPrinters(HELP_PAGE, title); page.printHeader(ATTRS_META, getGenerator()); String windowTitle = title + " (" + doctitle.replaceAll("<.*>", " ") + ")"; page.printOpenBody(new XMLAttribute[]{ new XMLAttribute("onload", "setWindowTitle('" + windowTitle + "');") }); - addNavigationBar(helpPage); + addNavigationBar(HELP_NAV_CONTEXT); page.printlnHLine(); XMLAttribute[] h3 = new XMLAttribute[]{ @@ -1235,7 +1215,7 @@ public class HTMLGenerator { page.printlnTag("div", h3, "Overview"); page.printlnOTag("blockquote").indent(); page.print("The "); - page.printAhref(ROOT_PAGE, ROOT_FRAME_NAME, "Overview"); + page.printAhref(ROOT_PAGE, ROOT_FRAME, "Overview"); page.println(" page is the front page of this API document and " + "provides a list of all top-level packages, classes, traits " + "and objects with a summary for each. " @@ -1288,7 +1268,7 @@ public class HTMLGenerator { page.printlnTag("div", h3, "Index"); page.printlnOTag("blockquote").indent(); page.print("The "); - page.printAhref(INDEX_PAGE_NAME, ROOT_FRAME_NAME, "Index"); + page.printAhref(INDEX_PAGE, ROOT_FRAME, "Index"); page.print(" contains an alphabetic list of all classes, interfaces, " + "constructors, methods, and fields."); page.printlnCTag("blockquote"); @@ -1299,7 +1279,7 @@ public class HTMLGenerator { page.printlnCTag("div"); page.printlnHLine(); - addNavigationBar(helpPage); + addNavigationBar(HELP_NAV_CONTEXT); if (validate) addValidationBar(); page.printFootpage(); @@ -1307,6 +1287,39 @@ public class HTMLGenerator { closePrinters(); } + /** + * Adds to the current page an hyperlinked path leading to a given + * symbol (including itself). + */ + protected void printPath(Symbol sym) { + String name = removeHtmlSuffix(Location.getURI(sym).toString()); + if (isReferenced(sym)) { + String target = ref(sym); + page.printlnAhref(target, ROOT_FRAME, name); + } + else + page.println(name); + } + + /** + * Adds to the current page an hyperlink leading to a given + * symbol. + */ + protected void printSymbol(Symbol sym, boolean addLink) { + String name = sym.nameString(); + if (global.debug) name = sym.name.toString(); + if (isReferenced(sym)) + if (addLink) + page.printAhref(ref(sym), ROOT_FRAME, name); + else { + page.printOTag("em"); + page.print(name); + page.printCTag("em"); + } + else + page.print(name); + } + /** * Writes the string representation of a symbol entry in the index. * @@ -1317,12 +1330,11 @@ public class HTMLGenerator { String keyword = symtab.getSymbolKeyword(symbol); if (keyword != null) page.print(keyword).space(); // name - symtab.printDefinedSymbolName(symbol, Symbol.NONE, true); + symtab.printDefinedSymbolName(symbol, true); // owner if (!symbol.isRoot()) { page.print(" in "); - page.printAhref(ref(symbol.owner()), ROOT_FRAME_NAME, //true), - ScalaSearch.getOwnersString(symbol.owner())); + printPath(symbol.owner()); } } @@ -1396,7 +1408,7 @@ public class HTMLGenerator { } else { String labl = label.equals("") ? sym.nameString() : label; - return ahref(ref(sym), ROOT_FRAME_NAME, labl); + return ahref(ref(sym), ROOT_FRAME, labl); } default: throw Debug.abort("illegal case", tag); diff --git a/sources/scala/tools/scaladoc/Location.java b/sources/scala/tools/scaladoc/Location.java index 2304c3568f..327dd70422 100644 --- a/sources/scala/tools/scaladoc/Location.java +++ b/sources/scala/tools/scaladoc/Location.java @@ -22,6 +22,10 @@ import scalac.util.Debug; */ public class Location { + static public final String ROOT_NAME = "root-page"; + static public final String HTML_SUFFIX = ".html"; + static public final String CLASS_SUFFIX = "-class"; + /////////////////// AS SEEN FROM ////////////////////// /** @@ -32,7 +36,6 @@ public class Location { * "A/B#R" as seen from "A" is "A/B#R" */ static public URI asSeenFrom(URI u, URI v) { - assert u != null : "HOUSTON, we have ..."; File f_u = new File(u.getPath()); File f_v = new File(v.getPath()); try { @@ -57,7 +60,7 @@ public class Location { /////////////////// UNIQUE URL ////////////////////// - /** Returns the URL of a given symbol. */ + /** Returns the URI of a given symbol. */ static private final Map/**/ uris = new HashMap(); static public URI getURI(Symbol sym) { if (uris.get(sym) == null) { @@ -66,11 +69,9 @@ public class Location { if (sym.isModuleClass()) uri = getURI(sym.module()); else if (sym.isRoot() || sym.isClass() || sym.isModule() || sym.isPackage()) - uri = new URI(getPath(sym).toString() + ".html"); + uri = new URI(getPath(sym).toString() + HTML_SUFFIX); else if (sym.isParameter()) uri = getURI(sym.classOwner()); - // else if (sym.isConstructor()) - //uri = getURI(sym.owner()); else uri = new URI(getURI(sym.owner()).toString() + "#" + nextFreeId(sym.owner())); uris.put(sym, uri); @@ -81,17 +82,19 @@ public class Location { // where static private URI getPath(Symbol sym) { try { - if (sym.isRoot()) - return new URI("root"); + if (sym.isModuleClass()) + return getPath(sym.module()); + else if (sym.isRoot()) + return new URI(ROOT_NAME); else if (sym.owner().isRoot()) return new URI(getName(sym)); else - return new URI(getPath(sym.owner()).toString() + "/" + getName(sym)); + return new URI(getPath(sym.owner()).toString() + File.separator + getName(sym)); } catch(Exception e) { return null; } } // where static public String getName(Symbol sym) { - return sym.isClass() ? sym.nameString() + "-class" : sym.nameString(); + return sym.isClass() ? sym.nameString() + CLASS_SUFFIX : sym.nameString(); } // where static private final Map/**/ ids = new HashMap(); @@ -103,8 +106,4 @@ public class Location { return i; } - /** Tests the function defined in this class. */ - public static void main(String[] args) { - } - } diff --git a/sources/scala/tools/scaladoc/ScalaSearch.java b/sources/scala/tools/scaladoc/ScalaSearch.java index cac508002a..e753c0f2b5 100644 --- a/sources/scala/tools/scaladoc/ScalaSearch.java +++ b/sources/scala/tools/scaladoc/ScalaSearch.java @@ -414,7 +414,8 @@ public class ScalaSearch { Symbol member = thistype.lookup(names[i]); if (member != Symbol.NONE) if (!member.isConstructor()) - members.add(member); + if (!isGenerated(member)) + members.add(member); } List unloadedMembers = new LinkedList(); Iterator it = members.iterator(); diff --git a/sources/scala/tools/scaladoc/SymbolTablePrinter.java b/sources/scala/tools/scaladoc/SymbolTablePrinter.java index 49a5112fc2..704a12e419 100644 --- a/sources/scala/tools/scaladoc/SymbolTablePrinter.java +++ b/sources/scala/tools/scaladoc/SymbolTablePrinter.java @@ -78,7 +78,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { if (first) print("{").indent(); else print(", "); first = false; line(); - printSignature(member, Symbol.NONE, false); + printSignature(member, false); } if (!first) line().undent().print("}"); @@ -116,16 +116,9 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * Prints the name of the given symbol usage. * * @param symbol - * @param user */ - public SymbolTablePrinter printUsedSymbolName(Symbol symbol, Symbol user) { - Name name = symbol.name; - if (!global.debug) name = NameTransformer.decode(name); - String s = name.toString(); - if (htmlGenerator.isReferenced(symbol)) - htmlGenerator.page.printAhref(htmlGenerator.ref(symbol), s); - else - htmlGenerator.page.print(s); + public SymbolTablePrinter printUsedSymbolName(Symbol symbol) { + htmlGenerator.printSymbol(symbol, true); printSymbolUniqueId(symbol); return this; } @@ -134,20 +127,10 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * Prints the name of the given symbol definition. * * @param symbol - * @param user * @param addLink */ - public SymbolTablePrinter printDefinedSymbolName(Symbol symbol, Symbol user, boolean addLink) { - Name name = symbol.name; - if (!global.debug) name = NameTransformer.decode(name); - String s = name.toString(); - if (htmlGenerator.isReferenced(symbol)) - if (addLink) - htmlGenerator.page.printAhref(htmlGenerator.ref(symbol), s); - else - htmlGenerator.page.printBold(s); - else - htmlGenerator.page.print(s); + public SymbolTablePrinter printDefinedSymbolName(Symbol symbol, boolean addLink) { + htmlGenerator.printSymbol(symbol, addLink); printSymbolUniqueId(symbol); return this; } @@ -158,7 +141,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param symbol * @param inner */ - public SymbolTablePrinter printSymbolType(Symbol symbol, String inner, Symbol user) { + public SymbolTablePrinter printSymbolType(Symbol symbol, String inner) { Type type = symbol.rawFirstInfo(); if (!(type instanceof Type.LazyType)) type = symbol.info(); boolean star = false; @@ -169,7 +152,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { type = type.typeArgs()[0]; star = true; } - printType(type, inner, user); + printType(type, inner); if (star) print("*"); return this; } @@ -180,17 +163,13 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param symbol * @param addLink */ - public SymbolTablePrinter printSignature(Symbol symbol, Symbol user, boolean addLink) { + public SymbolTablePrinter printSignature(Symbol symbol, boolean addLink) { String keyword = getSymbolKeyword(symbol); if (keyword != null) print(keyword).space(); String inner = getSymbolInnerString(symbol); - String name = symbol.nameString(); - if (addLink) - htmlGenerator.page.printAhref(htmlGenerator.ref(symbol), name); - else - htmlGenerator.page.print(name); - return printType(symbol.loBound(), ">:", user) - .printSymbolType(symbol, inner, user); + htmlGenerator.printSymbol(symbol, addLink); + return printType(symbol.loBound(), ">:") + .printSymbolType(symbol, inner); } /** @@ -199,16 +178,11 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param symbol * @param addLink */ - public SymbolTablePrinter printShortSignature(Symbol symbol, Symbol user, boolean addLink) { + public SymbolTablePrinter printShortSignature(Symbol symbol, boolean addLink) { String keyword = getSymbolKeyword(symbol); if (keyword != null) print(keyword).space(); - String inner = getSymbolInnerString(symbol); - String name = symbol.nameString(); - if (addLink) - htmlGenerator.page.printAhref(htmlGenerator.ref(symbol), name); - else - htmlGenerator.page.print(name); - return printType(symbol.loBound(), ">:", user); + htmlGenerator.printSymbol(symbol, addLink); + return printType(symbol.loBound(), ">:"); } /** @@ -218,14 +192,14 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param addLink * @return the current symbol table printer */ - public SymbolTablePrinter printTemplateSignature(Symbol symbol, Symbol user, boolean addLink) { + public SymbolTablePrinter printTemplateSignature(Symbol symbol, boolean addLink) { // kind String keyword = getSymbolKeyword(symbol); if (keyword != null) print(keyword).space(); String inner = getSymbolInnerString(symbol); // name - printDefinedSymbolName(symbol, user, addLink); + printDefinedSymbolName(symbol, addLink); if (symbol.isClass()) { // type parameters Symbol[] tparams = symbol.typeParams(); @@ -233,7 +207,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { print('['); for (int i = 0; i < tparams.length; i++) { if (i > 0) print(","); - printSignature(tparams[i], user, false); + printSignature(tparams[i], false); } print(']'); } @@ -243,7 +217,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { for (int i = 0; i < vparams.length; i++) { if (i > 0) print(", "); // vincent if (vparams[i].isDefParameter()) print("def "); - htmlGenerator.defString(vparams[i], user, false); + htmlGenerator.defString(vparams[i], false); } print(')'); } @@ -261,7 +235,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param symbol * @param addLink */ - public SymbolTablePrinter printTemplateHtmlSignature(Symbol symbol, Symbol user, boolean addLink) { + public SymbolTablePrinter printTemplateHtmlSignature(Symbol symbol, boolean addLink) { // modifiers String mods = Modifiers.Helper.toString(symbol.flags); htmlGenerator.page.printlnOTag("dl"); @@ -274,7 +248,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { String inner = getSymbolInnerString(symbol); // name - printDefinedSymbolName(symbol, user, addLink); + printDefinedSymbolName(symbol, addLink); if (symbol.isClass()) { // type parameters Symbol[] tparams = symbol.typeParams(); @@ -282,7 +256,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { print('['); for (int i = 0; i < tparams.length; i++) { if (i > 0) print(","); - printSignature(tparams[i], user, false); + printSignature(tparams[i], false); } print(']'); } @@ -292,7 +266,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { for (int i = 0; i < vparams.length; i++) { if (i > 0) print(", "); if (vparams[i].isDefParameter()) print("def "); - htmlGenerator.defString(vparams[i], user, false); + htmlGenerator.defString(vparams[i], false); } print(')'); } @@ -303,7 +277,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { for (int i = 0; i < parts.length; i++) { htmlGenerator.page.printOTag("dd"); print((i == 0) ? "extends " : "with "); - printType(parts[i], symbol); + printType(parts[i]); htmlGenerator.page.printlnCTag("dd"); } htmlGenerator.page.printCTag("dl"); @@ -319,10 +293,10 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param types * @param infix */ - public SymbolTablePrinter printTypes(Type[] types, String infix, Symbol user) { + public SymbolTablePrinter printTypes(Type[] types, String infix) { for (int i = 0; i < types.length; i++) { if (i > 0) print(infix); - printType(types[i], user); + printType(types[i]); } return this; } @@ -331,20 +305,18 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * Prints the given type. * * @param type - * @param user The symbol using the type type */ - public SymbolTablePrinter printType(Type type, Symbol user) { - return printType0(getTypeToPrintForType(type), user); + public SymbolTablePrinter printType(Type type) { + return printType0(getTypeToPrintForType(type)); } /** * .. * * @param type - * @param user */ - public SymbolTablePrinter printType0(Type type, Symbol user) { - printCommonPart(type, user); + public SymbolTablePrinter printType0(Type type) { + printCommonPart(type); switch (type) { case ThisType(_): case SingleType(_,_): @@ -361,12 +333,12 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param type * @param inner */ - public SymbolTablePrinter printType(Type type, String inner, Symbol user) { + public SymbolTablePrinter printType(Type type, String inner) { if ("<:".equals(inner) && type.symbol() == global.definitions.ANY_CLASS || ">:".equals(inner) && type.symbol() == global.definitions.ALL_CLASS) return this; else - return printType0(getTypeToPrintForType(type), inner, user); + return printType0(getTypeToPrintForType(type), inner); } /** @@ -375,35 +347,35 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param type * @param inner */ - public SymbolTablePrinter printType0(Type type, String inner, Symbol user) { + public SymbolTablePrinter printType0(Type type, String inner) { switch (type) { case MethodType(Symbol[] vparams, Type result): print('('); for (int i = 0; i < vparams.length; i++) { if (i > 0) print(", "); if (vparams[i].isDefParameter()) print("def "); - htmlGenerator.defString(vparams[i], user, false); + htmlGenerator.defString(vparams[i], false); //print(NameTransformer.decode(vparams[i].name.toString()) + ": ");// vincent //printSymbolType(vparams[i], null); } print(')'); - return printType(result, inner, user); + return printType(result, inner); case PolyType(Symbol[] tparams, Type result): if (tparams.length != 0 || global.debug) { print('['); for (int i = 0; i < tparams.length; i++) { if (i > 0) print(","); - printSignature(tparams[i], user, false); + printSignature(tparams[i], false); } print(']'); } - return printType(result, inner, user); + return printType(result, inner); default: if (inner != null) { if (!inner.startsWith(":")) space(); print(inner).space(); } - return printType0(type, user); + return printType0(type); } } @@ -416,9 +388,9 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { Type[] args = new Type[types.length - 1]; for (int i = 0; i < args.length; i++) args[i] = types[i]; print('('); - printTypes(args, ", ", Symbol.NONE); + printTypes(args, ", "); print(") => "); - printType(types[types.length - 1], Symbol.NONE); + printType(types[types.length - 1]); return this; } @@ -429,7 +401,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { */ public SymbolTablePrinter printTemplateType(Type[] types) { print(""); return this; } @@ -438,9 +410,8 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * Prints the type and prefix common part of the given type. * * @param type - * @param user The symbol using the type type */ - public SymbolTablePrinter printCommonPart(Type type, Symbol user) { + public SymbolTablePrinter printCommonPart(Type type) { switch (type) { case ErrorType: print(""); @@ -458,7 +429,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { if (sym == Symbol.NONE) print(".this"); if ((sym.isAnonymousClass() || sym.isCompoundSym()) && !global.debug) print("this"); - printUsedSymbolName(sym, user); + printUsedSymbolName(sym); print(".this"); // vincent return this; @@ -472,42 +443,42 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { printTemplateType(pre.memberInfo(sym).parents()); } printPrefix(pre, sym); - printUsedSymbolName(sym, user); + printUsedSymbolName(sym); if (args.length != 0) { print('['); - printTypes(args, ",", user); + printTypes(args, ","); print(']'); } return this; case SingleType(Type pre, Symbol sym): printPrefix(pre, sym); - printUsedSymbolName(sym, user); + printUsedSymbolName(sym); return this; case ConstantType(Type base, Object value): - printType(base, user); + printType(base); print("("); print(value.toString()); print(")"); return this; case CompoundType(Type[] parts, Scope members): - printTypes(parts," with ", user); + printTypes(parts," with "); space(); return printScope(members, true); // vincent case MethodType(_, _): - return printType0(type, user); + return printType0(type); case PolyType(_, _): - return printType0(type, user); + return printType0(type); case OverloadedType(Symbol[] alts, Type[] alttypes): - return printTypes(alttypes, " ", user); + return printTypes(alttypes, " "); case TypeVar(Type origin, Constraint constr): - printType(origin, user); + printType(origin); print("?"); return this; @@ -516,7 +487,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { return this; case UnboxedArrayType(Type elemtp): - printType(elemtp, user); + printType(elemtp); print("[]"); return this; @@ -586,7 +557,7 @@ public class SymbolTablePrinter extends scalac.symtab.SymbolTablePrinter { * @param prefix */ public SymbolTablePrinter printPrefix0(Type prefix) { - printCommonPart(prefix, Symbol.NONE); + printCommonPart(prefix); switch (prefix) { case ThisType(_): case SingleType(_,_): -- cgit v1.2.3