@@ -117,18 +117,27 @@ trait DiagramFactory extends DiagramDirectiveParser {
117117 case d : TemplateEntity if ((! diagramFilter.hideInheritedNodes) || (d.inTemplate == pack)) => d
118118 }
119119
120+ def listSuperClasses (member : MemberTemplateImpl ) = {
121+ // TODO: Everyone should be able to use the @{inherit,content}Diagram annotation to add nodes to diagrams.
122+ (pack.sym, member.sym) match {
123+ case (ScalaPackage , NullClass ) =>
124+ List (makeTemplate(AnyRefClass ))
125+ case (ScalaPackage , NothingClass ) =>
126+ (List (NullClass ) ::: ScalaValueClasses ) map { makeTemplate(_) }
127+ case _ =>
128+ member.parentTypes map {
129+ case (template, tpe) => template
130+ } filter {
131+ nodesAll.contains(_)
132+ }
133+ }
134+ }
135+
120136 // for each node, add its subclasses
121137 for (node <- nodesAll if ! classExcluded(node)) {
122138 node match {
123139 case dnode : MemberTemplateImpl =>
124- var superClasses = dnode.parentTypes.map(_._1).filter(nodesAll.contains(_))
125-
126- // TODO: Everyone should be able to use the @{inherit,content}Diagram annotation to add nodes to diagrams.
127- if (pack.sym == ScalaPackage )
128- if (dnode.sym == NullClass )
129- superClasses = List (makeTemplate(AnyRefClass ))
130- else if (dnode.sym == NothingClass )
131- superClasses = (List (NullClass ) ::: ScalaValueClasses ).map(makeTemplate(_))
140+ val superClasses = listSuperClasses(dnode)
132141
133142 if (! superClasses.isEmpty) {
134143 nodesShown += dnode
@@ -150,7 +159,14 @@ trait DiagramFactory extends DiagramDirectiveParser {
150159 None
151160 else {
152161 val nodes = nodesAll.filter(nodesShown.contains(_)).flatMap(mapNodes.get(_))
153- val edges = edgesAll.map(pair => (mapNodes(pair._1), pair._2.map(mapNodes(_)))).filterNot(pair => pair._2.isEmpty)
162+ val edges = edgesAll.map {
163+ case (entity, superClasses) => {
164+ (mapNodes(entity), superClasses flatMap { mapNodes.get(_) })
165+ }
166+ } filterNot {
167+ case (node, superClassNodes) => superClassNodes.isEmpty
168+ }
169+
154170 val diagram =
155171 // TODO: Everyone should be able to use the @{inherit,content}Diagram annotation to change the diagrams.
156172 if (pack.sym == ScalaPackage ) {
0 commit comments