Skip to content

Commit 55e03b8

Browse files
committed
Self types appear as inherited in docs
fixes #13204
1 parent fe9dd23 commit 55e03b8

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ case class Member(
155155
members : Seq[Member] = Nil,
156156
directParents: Seq[LinkToType] = Nil,
157157
parents: Seq[LinkToType] = Nil,
158+
selfType: Option[LinkToType] = None,
158159
knownChildren: Seq[LinkToType] = Nil,
159160
companion: Option[DRI] = None,
160161
deprecated: Option[Annotation] = None,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,12 +351,14 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
351351

352352
val supertypes = signatureList(m.parents)
353353
val subtypes = signatureList(m.knownChildren)
354+
val selfType = signatureList(m.selfType.toSeq)
354355

355356
renderTabs(
356357
singleSelection = true,
357358
Tab("Graph", "graph", graphHtml, "showGraph"),
358359
Tab("Supertypes", "supertypes", supertypes),
359360
Tab("Known subtypes", "subtypes", subtypes),
361+
Tab("Self type", "selftype", selfType)
360362
)
361363

362364
private def buildDocumentableFilter = div(cls := "documentableFilter")(

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,18 @@ trait ClassLikeSupport:
8282
case (symbol, tpe) =>
8383
LinkToType(tpe.asSignature, symbol.dri, bareClasslikeKind(symbol))
8484
}
85-
val selfSiangture: DSignature = typeForClass(classDef).asSignature
85+
val selfType = classDef.self.map { (valdef: ValDef) =>
86+
val symbol = valdef.symbol
87+
val tpe = valdef.tpt.tpe
88+
LinkToType(tpe.asSignature, symbol.dri, bareClasslikeKind(symbol))
89+
}
90+
val selfSignature: DSignature = typeForClass(classDef).asSignature
8691

8792
val graph = HierarchyGraph.withEdges(
88-
getSupertypesGraph(classDef, LinkToType(selfSiangture, classDef.symbol.dri, bareClasslikeKind(classDef.symbol)))
93+
getSupertypesGraph(classDef, LinkToType(selfSignature, classDef.symbol.dri, bareClasslikeKind(classDef.symbol)))
8994
)
9095

91-
val baseMember = mkMember(classDef.symbol, kindForClasslike(classDef), selfSiangture)(
96+
val baseMember = mkMember(classDef.symbol, kindForClasslike(classDef), selfSignature)(
9297
modifiers = modifiers,
9398
graph = graph,
9499
deprecated = classDef.symbol.isDeprecated()
@@ -226,6 +231,7 @@ trait ClassLikeSupport:
226231
members = classDef.extractPatchedMembers.sortBy(m => (m.name, m.kind.name)),
227232
directParents = classDef.getParentsAsLinkToTypes,
228233
parents = supertypes,
234+
selfType = selfType,
229235
companion = classDef.getCompanion
230236
)
231237

0 commit comments

Comments
 (0)