diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2017-01-17 14:36:58 +0100 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2017-01-31 14:32:38 +0100 |
commit | e77fe63f98099caca481f74f3613c5814fff3020 (patch) | |
tree | eaa0aa56a4187dd34e9caadd90d4e3c83cbd45d0 /doc-tool/src/dotty/tools/dottydoc/core | |
parent | 8f85e18db4ba2be95f39ff080e988e430222d310 (diff) | |
download | dotty-e77fe63f98099caca481f74f3613c5814fff3020.tar.gz dotty-e77fe63f98099caca481f74f3613c5814fff3020.tar.bz2 dotty-e77fe63f98099caca481f74f3613c5814fff3020.zip |
Implement remainder of type members
Diffstat (limited to 'doc-tool/src/dotty/tools/dottydoc/core')
-rw-r--r-- | doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala | 5 | ||||
-rw-r--r-- | doc-tool/src/dotty/tools/dottydoc/core/SortMembersPhase.scala | 25 |
2 files changed, 24 insertions, 6 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala b/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala index a3e71340c..f8ffdc0aa 100644 --- a/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala +++ b/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala @@ -92,7 +92,10 @@ class DocASTPhase extends Phase { /** type alias */ case t: TypeDef if !t.isClassDef => val sym = t.symbol - TypeAliasImpl(sym, annotations(sym), flags(t), t.name.show.split("\\$\\$").last, path(sym), None) + if (sym.is(Flags.Synthetic | Flags.Param)) + NonEntity + else + TypeAliasImpl(sym, annotations(sym), flags(t), t.name.show.split("\\$\\$").last, path(sym), alias(t.rhs.tpe)) /** trait */ case t @ TypeDef(n, rhs) if t.symbol.is(Flags.Trait) => diff --git a/doc-tool/src/dotty/tools/dottydoc/core/SortMembersPhase.scala b/doc-tool/src/dotty/tools/dottydoc/core/SortMembersPhase.scala index c8de532bb..29898b140 100644 --- a/doc-tool/src/dotty/tools/dottydoc/core/SortMembersPhase.scala +++ b/doc-tool/src/dotty/tools/dottydoc/core/SortMembersPhase.scala @@ -10,23 +10,38 @@ import model.internal._ /** This DocMiniPhase sorts the members of all classes, traits, objects and packages */ class SortMembers extends DocMiniPhase { + private def sort(xs: List[Entity]): List[Entity] = { + def sortOrNil(xs: Option[List[Entity]]*) = + xs.map(_.getOrElse(Nil)).reduceLeft(_ ++ _).sortBy(_.name) + + val map = xs.groupBy(_.kind) + + val pkgs = sortOrNil(map.get("package")) + val typs = sortOrNil(map.get("type")) + val vals = sortOrNil(map.get("val"), map.get("var")) + val nested = sortOrNil(map.get("object"), map.get("class"), map.get("case class"), map.get("trait")) + val defs = sortOrNil(map.get("def")) + + pkgs ++ nested ++ typs ++ vals ++ defs + } + override def transformPackage(implicit ctx: Context) = { case p: PackageImpl => - p.copy(members = p.members.sortBy(_.name)) + p.copy(members = sort(p.members)) } override def transformClass(implicit ctx: Context) = { case c: ClassImpl => - c.copy(members = c.members.sortBy(_.name)) + c.copy(members = sort(c.members)) } override def transformCaseClass(implicit ctx: Context) = { case cc: CaseClassImpl => - cc.copy(members = cc.members.sortBy(_.name)) + cc.copy(members = sort(cc.members)) } override def transformTrait(implicit ctx: Context) = { case t: TraitImpl => - t.copy(members = t.members.sortBy(_.name)) + t.copy(members = sort(t.members)) } override def transformObject(implicit ctx: Context) = { case o: ObjectImpl => - o.copy(members = o.members.sortBy(_.name)) + o.copy(members = sort(o.members)) } } |