Skip to content

Commit 12a130d

Browse files
committed
SI-6424 Scaladoc: Use mapNodes.get(_) to avoid NoSuchElementException
Use mapNodes.get(_) instead of mapNodes(_) to avoid NoSuchElementException.
1 parent 76b8724 commit 12a130d

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

src/compiler/scala/tools/nsc/doc/model/diagram/DiagramFactory.scala

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)