Skip to content

Commit 752cb1b

Browse files
committed
Add extension information in extension function pages
1 parent ed1ef0d commit 752cb1b

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

scala3doc/src/dotty/dokka/translators/ScalaContentBuilder.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,14 @@ class ScalaPageContentBuilder(
248248

249249
def signature(d: Documentable) = addChildren(signatureProvider.signature(d).asScala.toList)
250250

251+
private def buildSignature(d: Documentable, s: Signature) = signatureProvider.asInstanceOf[ScalaSignatureProvider].signature(d, s)
252+
253+
def signature(d: Documentable, s: Signature) = addChild(buildSignature(d, s))
254+
255+
def inlineSignature(d: Documentable, s: Signature) = addChildren(
256+
buildSignature(d, s).getChildren.asScala.toSeq
257+
)
258+
251259
def defaultHeaders = List(
252260
contentForDRIs(
253261
dris = mainDRI,

scala3doc/src/dotty/dokka/translators/ScalaPageCreator.scala

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,20 @@ class ScalaPageCreator(
317317
case _ => withNamedTags
318318
}
319319

320+
val withExtensionInformation = d.kind match {
321+
case Kind.Extension(on) =>
322+
val sourceSets = d.getSourceSets.asScala.toSet
323+
withCompanion.cell(sourceSets = sourceSets)(_.text("Extension"))
324+
.cell(sourceSets = sourceSets)(_.text(s"This function is an extension on (${on.name}: ").inlineSignature(d, on.signature).text(")"))
325+
case _ => withCompanion
326+
}
327+
320328
d match
321-
case null => withCompanion
329+
case null => withExtensionInformation
322330
case m: Member =>
323331
sourceLinks.pathTo(m).fold(withCompanion){ link =>
324332
val sourceSets = m.getSourceSets.asScala.toSet
325-
withCompanion.cell(sourceSets = sourceSets)(_.text("Source"))
333+
withExtensionInformation.cell(sourceSets = sourceSets)(_.text("Source"))
326334
.cell(sourceSets = sourceSets)(_.resolvedLink("(source)", link))
327335
}
328336
}

scala3doc/src/dotty/dokka/translators/ScalaSignatureProvider.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ class ScalaSignatureProvider(contentConverter: CommentsToContentConverter, logge
3131
def driLink(text: String, dri: DRI): SignatureBuilder = ContentNodeBuilder(builder.driLink(text, dri))
3232
}
3333

34+
def signature(d: Documentable, s: Signature) = signatureContent(d){ builder =>
35+
val res = ContentNodeBuilder(builder).signature(s)
36+
res.asInstanceOf[ContentNodeBuilder].builder
37+
}
38+
3439
override def signature(documentable: Documentable) =
3540
JList(signatureContent(documentable){ builder =>
3641
val withAnnotations = ContentNodeBuilder(builder).annotationsBlock(documentable)

0 commit comments

Comments
 (0)