aboutsummaryrefslogtreecommitdiff
path: root/doc-tool/src/dotty/tools/dottydoc/core
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-01-19 16:38:48 +0100
committerFelix Mulder <felix.mulder@gmail.com>2017-01-31 14:32:40 +0100
commit384f5a0dba5c2102327015c67781462ba475e43a (patch)
tree895076c663f35006b9069d0433f1b1ab1678655b /doc-tool/src/dotty/tools/dottydoc/core
parent821b3faa52dff3850016c4620ee0cef6f7b3897f (diff)
downloaddotty-384f5a0dba5c2102327015c67781462ba475e43a.tar.gz
dotty-384f5a0dba5c2102327015c67781462ba475e43a.tar.bz2
dotty-384f5a0dba5c2102327015c67781462ba475e43a.zip
Link companions in doc AST
Diffstat (limited to 'doc-tool/src/dotty/tools/dottydoc/core')
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala2
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala46
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala12
3 files changed, 55 insertions, 5 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala b/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala
index f8ffdc0aa..411818614 100644
--- a/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala
@@ -111,7 +111,7 @@ class DocASTPhase extends Phase {
/** class / case class */
case c @ TypeDef(n, rhs) if c.symbol.isClass =>
//TODO: should not `collectMember` from `rhs` - instead: get from symbol, will get inherited members as well
- (c.symbol, annotations(c.symbol), n.show, collectMembers(rhs), flags(c), path(c.symbol), typeParams(c.symbol), constructors(c.symbol), superTypes(c), None) match {
+ (c.symbol, annotations(c.symbol), n.show, collectMembers(rhs), flags(c), path(c.symbol), typeParams(c.symbol), constructors(c.symbol), superTypes(c), None, Nil) match {
case x if c.symbol.is(Flags.CaseClass) => CaseClassImpl.tupled(x)
case x => ClassImpl.tupled(x)
}
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)
+ }
+}
diff --git a/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala b/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
index a35da579e..1cfcec09a 100644
--- a/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
@@ -121,7 +121,8 @@ object transform {
cls.typeParams,
cls.constructors,
cls.superTypes,
- cls.comment
+ cls.comment,
+ cls.companionPath
)
}
case cc: CaseClass => transformEntity(cc, _.caseClassTransformation) { cc =>
@@ -135,7 +136,8 @@ object transform {
cc.typeParams,
cc.constructors,
cc.superTypes,
- cc.comment
+ cc.comment,
+ cc.companionPath
)
}
case trt: Trait => transformEntity(trt, _.traitTransformation) { trt =>
@@ -149,7 +151,8 @@ object transform {
trt.typeParams,
trt.traitParams,
trt.superTypes,
- trt.comment
+ trt.comment,
+ trt.companionPath
)
}
case obj: Object => transformEntity(obj, _.objectTransformation) { obj =>
@@ -161,7 +164,8 @@ object transform {
obj.modifiers,
obj.path,
obj.superTypes,
- obj.comment
+ obj.comment,
+ obj.companionPath
)
}
case df: Def => transformEntity(df, _.defTransformation) { df =>