aboutsummaryrefslogtreecommitdiff
path: root/doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala
diff options
context:
space:
mode:
Diffstat (limited to 'doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala')
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala46
1 files changed, 46 insertions, 0 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala b/doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala
new file mode 100644
index 000000000..82bd90da0
--- /dev/null
+++ b/doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala
@@ -0,0 +1,46 @@
+package dotty.tools
+package dottydoc
+package core
+
+import dotc.core.Contexts.Context
+import dotc.ast.tpd
+
+import transform.DocMiniPhase
+import model.internal._
+import model._
+import model.factories._
+import dotty.tools.dotc.core.Symbols.Symbol
+import util.syntax._
+
+class LinkCompanions extends DocMiniPhase {
+ private def linkCompanions(ent: Entity)(implicit ctx: Context): ent.type = {
+ ent.children.groupBy(_.name).foreach {
+ case (_, List(x1: Companion, x2: Companion)) => {
+ x1.companionPath = x2.path
+ x2.companionPath = x1.path
+ }
+ case _ => ()
+ }
+ ent
+ }
+
+ override def transformPackage(implicit ctx: Context) = { case ent: PackageImpl =>
+ linkCompanions(ent)
+ }
+
+ override def transformClass(implicit ctx: Context) = { case ent: ClassImpl =>
+ linkCompanions(ent)
+ }
+
+ override def transformCaseClass(implicit ctx: Context) = { case ent: CaseClassImpl =>
+ linkCompanions(ent)
+ }
+
+ override def transformObject(implicit ctx: Context) = { case ent: ObjectImpl =>
+ linkCompanions(ent)
+ }
+
+ override def transformTrait(implicit ctx: Context) = { case ent: TraitImpl =>
+ linkCompanions(ent)
+ }
+}