Skip to content

Commit 46f6f85

Browse files
committed
Add table cells for deprecation params
1 parent 8ec8a2a commit 46f6f85

File tree

10 files changed

+40
-52
lines changed

10 files changed

+40
-52
lines changed
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package tests
22
package deprecated
33

4-
@Deprecated
54
class A:
65
def defInt: Int = 1
6+
@deprecated(message = "1")
77
def def1: 1 = 1
8+
@deprecated
89
val valInt: Int = 1
910
val val1: 1 = 1
1011
var varInt: Int = 1
1112
var var1: 1 = 1
1213
class InnerA:
1314
val innerVal: Int = 1
1415

15-
class B:
16-
@Deprecated
16+
class B extends A:
17+
@deprecated(since = "1", message = "some reason")
1718
def x: Int = 1
1819
val y: Int = 1

scala3doc/src/dotty/dokka/DottyDokkaPlugin.scala

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,6 @@ class DottyDokkaPlugin extends DokkaJavaPlugin:
125125
.name("implicitMembersExtensionTransformer")
126126
)
127127

128-
val deprecatedTransfomer = extend(
129-
_.extensionPoint(CoreExtensions.INSTANCE.getDocumentableTransformer)
130-
.fromInstance(DeprecatedTransformer)
131-
.name("deprecatedTransformer")
132-
)
133-
134128
val customDocumentationProvider = extend(
135129
_.extensionPoint(dokkaBase.getHtmlPreprocessors)
136130
.fromRecipe(c => SitePagesCreator(c.siteContext))

scala3doc/src/dotty/dokka/model/api/api.scala

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,12 @@ enum Origin:
8080
case class Annotation(val dri: DRI, val params: List[Annotation.AnnotationParameter])
8181

8282
object Annotation:
83-
sealed trait AnnotationParameter
84-
case class PrimitiveParameter(val name: Option[String] = None, val value: String) extends AnnotationParameter
85-
case class LinkParameter(val name: Option[String] = None, val dri: DRI, val value: String) extends AnnotationParameter
86-
case class UnresolvedParameter(val name: Option[String] = None, val unresolvedText: String) extends AnnotationParameter
83+
sealed trait AnnotationParameter {
84+
val name: Option[String]
85+
}
86+
case class PrimitiveParameter(name: Option[String] = None, value: String) extends AnnotationParameter
87+
case class LinkParameter(name: Option[String] = None, dri: DRI, value: String) extends AnnotationParameter
88+
case class UnresolvedParameter(name: Option[String] = None, unresolvedText: String) extends AnnotationParameter
8789

8890
// TODO (longterm) properly represent signatures
8991
case class Link(name: String, dri: DRI)
@@ -124,7 +126,7 @@ extension[T] (member: Member):
124126

125127
def signature: Signature = memberExt.fold(Signature(name))(_.signature)
126128
def asLink: LinkToType = LinkToType(signature, dri, kind)
127-
def isDeprecated: Boolean = memberExt.fold(false)(_.deprecated)
129+
def deprecated: Option[Annotation] = memberExt.flatMap(_.annotations.find(a => a.dri.getPackageName == "scala" && a.dri.getClassNames == "deprecated"))
128130

129131
def modifiers: Seq[dotty.dokka.model.api.Modifier] = memberExt.fold(Nil)(_.modifiers)
130132
def kind: Kind = memberExt.fold(Kind.Unknown)(_.kind)

scala3doc/src/dotty/dokka/model/api/internalExtensions.scala

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ private [model] case class MemberExtension(
2929
sources: Option[TastyDocumentableSource] = None,
3030
origin: Origin = Origin.DefinedWithin,
3131
graph: HierarchyGraph = HierarchyGraph.empty,
32-
deprecated: Boolean = false, // directly or indirectly
3332
) extends ExtraProperty[Documentable]:
3433
override def getKey = MemberExtension
3534

@@ -72,10 +71,6 @@ extension (member: Member):
7271
val ext = MemberExtension.getFrom(member).getOrElse(MemberExtension.empty).copy(kind = kind)
7372
putInMember(ext)
7473

75-
def withDeprecated(deprecated: Boolean): Member =
76-
val ext = MemberExtension.getFrom(member).getOrElse(MemberExtension.empty).copy(deprecated = deprecated)
77-
putInMember(ext)
78-
7974
def withMembers(newMembers: Seq[Member]): Member =
8075
val original = member.compositeMemberExt.getOrElse(CompositeMemberExtension())
8176
val newExt = original.copy(members = newMembers)

scala3doc/src/dotty/dokka/tasty/BasicSupport.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ trait BasicSupport:
2222
case s: String => "\"" + s"$s" + "\""
2323
case other => other.toString()
2424
})
25-
case Select(qual, name) =>
25+
case NamedArg(name, Literal(constant)) => Annotation.PrimitiveParameter(Some(name), constant.value match
26+
case s: String => "\"" + s"$s" + "\""
27+
case other => other.toString()
28+
)
29+
case x @ Select(qual, name) =>
2630
val dri = qual.tpe.termSymbol.companionClass.dri
2731
Annotation.LinkParameter(None, dri, s"${dri.getClassNames}.$name") // TODO this is a nasty hack!
28-
2932
case other => Annotation.UnresolvedParameter(None, other.show)
3033
}
3134
}

scala3doc/src/dotty/dokka/transformers/DeprecatedTransformer.scala

Lines changed: 0 additions & 27 deletions
This file was deleted.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ class ScalaPageContentBuilder(
496496
Signature("Exported from ", signatureName)
497497
case _ => Nil
498498
}
499-
val styles: Set[Style] = if documentable.isDeprecated then Set(TextStyle.Strikethrough) else Set.empty
499+
val styles: Set[Style] = if documentable.deprecated.isDefined then Set(TextStyle.Strikethrough) else Set.empty
500500
DocumentableElement(
501501
buildAnnotations(documentable),
502502
signatureBuilder.preName.reverse,

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,14 +323,34 @@ class ScalaPageCreator(
323323
case _ => withCompanion
324324
}
325325

326-
d match
326+
val withSource = d match
327327
case null => withExtensionInformation
328328
case m: Member =>
329329
sourceLinks.pathTo(m).fold(withCompanion){ link =>
330330
val sourceSets = m.getSourceSets.asScala.toSet
331331
withExtensionInformation.cell(sourceSets = sourceSets)(_.text("Source"))
332332
.cell(sourceSets = sourceSets)(_.resolvedLink("(source)", link))
333+
333334
}
335+
336+
d.deprecated match
337+
case None => withSource
338+
case Some(a) =>
339+
extension (b: ScalaPageContentBuilder#ScalaDocumentableContentBuilder)
340+
def annotationParameter(p: Option[Annotation.AnnotationParameter]): ScalaPageContentBuilder#ScalaDocumentableContentBuilder =
341+
p match
342+
case Some(Annotation.PrimitiveParameter(_, value)) => b.text(value.stripPrefix("\"").stripSuffix("\""))
343+
case Some(Annotation.LinkParameter(_, dri, text)) => b.driLink(text.stripPrefix("\"").stripSuffix("\""), dri)
344+
case Some(Annotation.UnresolvedParameter(_, value)) => b.text(value.stripPrefix("\"").stripSuffix("\""))
345+
case _ => b
346+
val since = a.params.find(_.name.contains("since"))
347+
val message = a.params.find(_.name.contains("message"))
348+
val sourceSets = d.getSourceSets.asScala.toSet
349+
withSource.cell(sourceSets = sourceSets)(_.text("Deprecated"))
350+
.cell(sourceSets = sourceSets) { b =>
351+
val withPossibleSince = if (since.isDefined) b.text("(Since version ").annotationParameter(since).text(") ") else b
352+
withPossibleSince.annotationParameter(message)
353+
}
334354
}
335355
}
336356
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class ScalaSignatureProvider(contentConverter: CommentsToContentConverter, logge
4545
})
4646

4747
private def stylesIfDeprecated(m: Member): Set[Style] =
48-
if m.isDeprecated then styles ++ Set(TextStyle.Strikethrough) else styles
48+
if m.deprecated.isDefined then styles ++ Set(TextStyle.Strikethrough) else styles
4949

5050

5151
object ScalaSignatureProvider:

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ trait SignatureBuilder extends ScalaSignatureUtils {
5555
else this
5656

5757
private def addParameterName(txt: Option[String]): SignatureBuilder = txt match {
58-
case Some(name) => this.text(s"$txt = ")
58+
case Some(name) => this.text(s"$name = ")
5959
case _ => this
6060
}
6161

0 commit comments

Comments
 (0)