Skip to content

Commit a4bae35

Browse files
KacperFKorbantanishiking
authored andcommitted
Self types appear as inherited in docs
fixes scala#13204
1 parent 918bce5 commit a4bae35

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
@@ -83,13 +83,18 @@ trait ClassLikeSupport:
8383
case (symbol, tpe) =>
8484
LinkToType(tpe.asSignature, symbol.dri, bareClasslikeKind(symbol))
8585
}
86-
val selfSiangture: DSignature = typeForClass(classDef).asSignature
86+
val selfType = classDef.self.map { (valdef: ValDef) =>
87+
val symbol = valdef.symbol
88+
val tpe = valdef.tpt.tpe
89+
LinkToType(tpe.asSignature, symbol.dri, bareClasslikeKind(symbol))
90+
}
91+
val selfSignature: DSignature = typeForClass(classDef).asSignature
8792

8893
val graph = HierarchyGraph.withEdges(
89-
getSupertypesGraph(classDef, LinkToType(selfSiangture, classDef.symbol.dri, bareClasslikeKind(classDef.symbol)))
94+
getSupertypesGraph(classDef, LinkToType(selfSignature, classDef.symbol.dri, bareClasslikeKind(classDef.symbol)))
9095
)
9196

92-
val baseMember = mkMember(classDef.symbol, kindForClasslike(classDef), selfSiangture)(
97+
val baseMember = mkMember(classDef.symbol, kindForClasslike(classDef), selfSignature)(
9398
modifiers = modifiers,
9499
graph = graph,
95100
deprecated = classDef.symbol.isDeprecated()
@@ -227,6 +232,7 @@ trait ClassLikeSupport:
227232
members = classDef.extractPatchedMembers.sortBy(m => (m.name, m.kind.name)),
228233
directParents = classDef.getParentsAsLinkToTypes,
229234
parents = supertypes,
235+
selfType = selfType,
230236
companion = classDef.getCompanion
231237
)
232238

0 commit comments

Comments
 (0)