@@ -68,7 +68,7 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
6868
6969 def source (m : Member ): Seq [AppliedTag ] =
7070 summon[DocContext ].sourceLinks.pathTo(m).fold(Nil ){ link =>
71- tableRow(" Source" , a(href := link)(" (source)" ))
71+ tableRow(" Source" , a(href := link)(m.sources.fold( " (source)" )(_.path.getFileName().toString()) ))
7272 }
7373
7474 def deprecation (m : Member ): Seq [AppliedTag ] = m.deprecated.fold(Nil ){ a =>
@@ -202,22 +202,34 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
202202 case m : Member => m.inheritedFrom.nonEmpty
203203 case g : MGroup => g.members.exists(isInherited)
204204
205+ private def isAbstract (m : Member | MGroup ): Boolean = m match
206+ case m : Member => m.modifiers.contains(Modifier .Abstract )
207+ case g : MGroup => g.members.exists(isAbstract)
208+
205209 private type SubGroup = (String , Seq [Member | MGroup ])
206210 private def buildGroup (name : String , subgroups : Seq [SubGroup ]): Tab =
207211 val all = subgroups.map { case (name, members) =>
208212 val (allInherited, allDefined) = members.partition(isInherited)
209213 val (depDefined, defined) = allDefined.partition(isDeprecated)
210214 val (depInherited, inherited) = allInherited.partition(isDeprecated)
211- (
212- actualGroup(name, defined),
213- actualGroup(s " Deprecated ${name.toLowerCase}" , depDefined),
214- actualGroup(s " Inherited ${name.toLowerCase}" , inherited),
215- actualGroup(s " Deprecated and Inherited ${name.toLowerCase}" , depInherited)
215+ val normalizedName = name.toLowerCase
216+ val definedWithGroup = if Set (" methods" , " fields" ).contains(normalizedName) then
217+ val (abstr, concr) = defined.partition(isAbstract)
218+ Seq (
219+ actualGroup(s " Abstract ${normalizedName}" , abstr),
220+ actualGroup(s " Concrete ${normalizedName}" , concr)
221+ )
222+ else
223+ Seq (actualGroup(name, defined))
224+
225+ definedWithGroup ++ List (
226+ actualGroup(s " Deprecated ${normalizedName}" , depDefined),
227+ actualGroup(s " Inherited ${normalizedName}" , inherited),
228+ actualGroup(s " Deprecated and Inherited ${normalizedName}" , depInherited)
216229 )
217230 }
218231
219- val children =
220- all.flatMap(_._1) ++ all.flatMap(_._2) ++ all.flatMap(_._3) ++ all.flatMap(_._4)
232+ val children = all.flatten.flatten
221233 if children.isEmpty then emptyTab
222234 else Tab (name, name, h2(tabAttr(name))(name) +: children, " selected" )
223235
0 commit comments