Skip to content

Commit 598b8d3

Browse files
committed
Fix some inherited members not showing in searchbar in Scaladoc
Allows to search for public members inherited from hidden classlikes in Scaladoc. Additionally, to avoid confusing users about the missing link in the "Inherited from:" field, a "(hidden)" adnotation was also added. A "inheritedMembersFromHidden" Signature Test was also added.
1 parent 48c65c4 commit 598b8d3

File tree

7 files changed

+18
-5
lines changed

7 files changed

+18
-5
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package tests
2+
package inheritedMembersFromHidden
3+
4+
private[inheritedMembersFromHidden] trait HiddenTrait { //unexpected
5+
def method: Unit
6+
= ???
7+
}
8+
9+
object PublicObject extends HiddenTrait //expected: object PublicObject

scaladoc/src/dotty/tools/scaladoc/api.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ enum Origin:
8282

8383
case class Overridden(name: String, dri: DRI)
8484

85-
case class InheritedFrom(name: String, dri: DRI)
85+
case class InheritedFrom(name: String, dri: DRI, isSourceSuperclassHidden: Boolean)
8686

8787
case class Annotation(val dri: DRI, val params: List[Annotation.AnnotationParameter])
8888

scaladoc/src/dotty/tools/scaladoc/renderers/MemberRenderer.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
2929
case _ => Nil
3030

3131
def inheritedFrom(m: Member) = m.inheritedFrom match
32-
case Some(InheritedFrom(name, dri)) => tableRow("Inherited from:", signatureRenderer.renderLink(name, dri))
32+
case Some(InheritedFrom(name, dri, isSourceSuperclassHidden)) =>
33+
val hiddenNameSuffix = if isSourceSuperclassHidden then " (hidden)" else ""
34+
tableRow("Inherited from:", signatureRenderer.renderLink(name + hiddenNameSuffix, dri))
3335
case _ => Nil
3436

3537
def docAttributes(m: Member): Seq[AppliedTag] =

scaladoc/src/dotty/tools/scaladoc/renderers/Resources.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ trait Resources(using ctx: DocContext) extends Locations, Writer:
150150
val entry = mkEntry(member.dri, member.name, flattenToText(sig), descr, member.kind.name)
151151
val children = member
152152
.membersBy(m => m.kind != Kind.Package && !m.kind.isInstanceOf[Classlike])
153-
.filter(m => m.origin == Origin.RegularlyDefined && m.inheritedFrom.isEmpty)
153+
.filter(m => m.origin == Origin.RegularlyDefined && m.inheritedFrom.fold(false)(_.isSourceSuperclassHidden))
154154
Seq(entry) ++ children.flatMap(processMember)
155155

156156
processMember(m)

scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ trait ClassLikeSupport:
183183
}
184184

185185
private def parseInheritedMember(c: ClassDef)(s: Tree): Option[Member] =
186-
def inheritance = Some(InheritedFrom(s.symbol.owner.normalizedName, s.symbol.dri))
186+
def inheritance = Some(InheritedFrom(s.symbol.owner.normalizedName, s.symbol.dri, s.symbol.owner.isHiddenByVisibility))
187187
processTreeOpt(s)(s match
188188
case c: ClassDef if c.symbol.shouldDocumentClasslike => Some(parseClasslike(c, signatureOnly = true))
189189
case other => {

scaladoc/src/dotty/tools/scaladoc/translators/FilterAttributes.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ object FilterAttributes:
1414
Map("visibility" -> m.visibility.name)
1515

1616
private def inheritedFrom(m: Member): Map[String, String] = m.inheritedFrom match
17-
case Some(InheritedFrom(name, _)) => Map("inherited" -> name)
17+
case Some(InheritedFrom(name, _, _)) => Map("inherited" -> name)
1818
case _ => Map.empty
1919

2020
private def origin(m: Member): Map[String, String] = m.origin match

scaladoc/test/dotty/tools/scaladoc/signatures/TranslatableSignaturesTestCases.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ class InheritanceLoop extends SignatureTest("inheritanceLoop", SignatureTest.all
5858
class InheritedMembers extends SignatureTest("inheritedMembers2", SignatureTest.all.filter(_ != "class"),
5959
sourceFiles = List("inheritedMembers1", "inheritedMembers2"))
6060

61+
class InheritedFromHiddenClasslike extends SignatureTest("inheritedMembersFromHidden", SignatureTest.all)
62+
6163
class ComplexNames extends SignatureTest("complexNames", Seq("def", "class"))
6264

6365
class WrongDocumentationLinks extends SignatureTest("links", Seq("def"))

0 commit comments

Comments
 (0)