Skip to content

Commit f8e2559

Browse files
committed
Add proper flag exported handling in compiler and fix type presentation for constant types
1 parent 35c1c90 commit f8e2559

File tree

5 files changed

+23
-6
lines changed

5 files changed

+23
-6
lines changed

compiler/src/scala/quoted/runtime/impl/printers/Extractors.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ object Extractors {
2929
if (flags.is(Flags.Enum)) flagList += "Flags.Enum"
3030
if (flags.is(Flags.Erased)) flagList += "Flags.Erased"
3131
if (flags.is(Flags.ExtensionMethod)) flagList += "Flags.ExtensionMethod"
32+
if (flags.is(Flags.Exported)) flagList += "Flags.Exported"
3233
if (flags.is(Flags.FieldAccessor)) flagList += "Flags.FieldAccessor"
3334
if (flags.is(Flags.Final)) flagList += "Flags.Final"
3435
if (flags.is(Flags.HasDefault)) flagList += "Flags.HasDefault"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ enum Origin:
7474
case InheritedFrom(name: String, dri: DRI)
7575
case ImplicitlyAddedBy(name: String, dri: DRI)
7676
case ExtensionFrom(name: String, dri: DRI)
77-
case ExportedFrom(name: String, dri: DRI)
77+
case ExportedFrom(name: String, dri: Option[DRI])
7878
case DefinedWithin
7979

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

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,22 @@ trait ClassLikeSupport:
127127
case dd: DefDef if !dd.symbol.isHiddenByVisibility && dd.symbol.isExported =>
128128
val exportedTarget = dd.rhs.flatMap {
129129
case a: Apply => Some(a.fun)
130+
case s: Select => Some(s)
130131
case _ => None
131132
}.map {
132133
case s: Select => s
133134
}
134135
val functionName = exportedTarget.fold("instance")(_.name)
135136
val instanceName = exportedTarget.fold("function")(_.qualifier.asInstanceOf[Select].name)
136-
Some(parseMethod(dd.symbol, kind = Kind.Exported).withOrigin(Origin.ExportedFrom(s"$instanceName.$functionName", dd.symbol.dri)))
137+
val dri = dd.rhs.flatMap {
138+
case a: Apply => None
139+
case s: Select =>
140+
val dri = s.symbol.dri
141+
dri.getCallable match
142+
case null => None
143+
case _ => Some(dri)
144+
}.orElse(exportedTarget.map(_.qualifier.tpe.typeSymbol.dri))
145+
Some(parseMethod(dd.symbol, kind = Kind.Exported).withOrigin(Origin.ExportedFrom(s"$instanceName.$functionName", dri)))
137146

138147
case dd: DefDef if !dd.symbol.isHiddenByVisibility && !dd.symbol.isGiven && !dd.symbol.isSyntheticFunc && !dd.symbol.isExtensionMethod =>
139148
Some(parseMethod(dd.symbol))

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,12 @@ trait TypesSupport:
215215
// case _ =>
216216
// throw Exception("Match error in TypeRef. This should not happen, please open an issue. " + convertTypeOrBoundsToReference(reflect)(qual))
217217
// }
218-
case tr @ TermRef(qual, typeName) => qual match {
219-
case _ => link(tr.termSymbol)
220-
}
218+
case tr @ TermRef(qual, typeName) =>
219+
tr.termSymbol.tree match
220+
case vd: ValDef => inner(vd.tpt.tpe)
221+
case _ => link(tr.termSymbol)
222+
223+
221224
// convertTypeOrBoundsToReference(reflect)(qual) match {
222225
// case TypeReference(label, link, xs, _) => TypeReference(typeName + "$", link + "/" + label, xs)
223226
// case EmptyReference => TypeReference(typeName, "", Nil)

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,11 @@ class ScalaPageContentBuilder(
489489
val originInfo = documentable.origin match {
490490
case Origin.ImplicitlyAddedBy(name, dri) => Signature("Implicitly added by ", SLink(name, dri))
491491
case Origin.ExtensionFrom(name, dri) => Signature("Extension method from ", SLink(name, dri))
492-
case Origin.ExportedFrom(name, dri) => Signature("Exported from ", SLink(name, dri))
492+
case Origin.ExportedFrom(name, dri) =>
493+
val signatureName: String | dotty.dokka.model.api.Link = dri match
494+
case Some(dri: DRI) => SLink(name, dri)
495+
case None => name
496+
Signature("Exported from ", signatureName)
493497
case _ => Nil
494498
}
495499

0 commit comments

Comments
 (0)