aboutsummaryrefslogtreecommitdiff
path: root/dottydoc/jvm/src/dotty/tools/dottydoc/core/DocASTPhase.scala
diff options
context:
space:
mode:
Diffstat (limited to 'dottydoc/jvm/src/dotty/tools/dottydoc/core/DocASTPhase.scala')
-rw-r--r--dottydoc/jvm/src/dotty/tools/dottydoc/core/DocASTPhase.scala19
1 files changed, 9 insertions, 10 deletions
diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/core/DocASTPhase.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/core/DocASTPhase.scala
index 19ed0ce17..40e778059 100644
--- a/dottydoc/jvm/src/dotty/tools/dottydoc/core/DocASTPhase.scala
+++ b/dottydoc/jvm/src/dotty/tools/dottydoc/core/DocASTPhase.scala
@@ -8,7 +8,7 @@ import dotc.CompilationUnit
import dotc.config.Printers.dottydoc
import dotc.core.Contexts.Context
import dotc.core.Phases.Phase
-import dotc.core.Symbols.Symbol
+import dotc.core.Symbols.{ Symbol, NoSymbol }
class DocASTPhase extends Phase {
import model._
@@ -26,18 +26,18 @@ class DocASTPhase extends Phase {
private[this] val commentParser = new WikiParser
/** Saves the commentParser function for later evaluation, for when the AST has been filled */
- def track(symbol: Symbol, ctx: Context)(op: => Entity) = {
+ def track(symbol: Symbol, ctx: Context, parent: Symbol = NoSymbol)(op: => Entity) = {
val entity = op
if (entity != NonEntity)
- commentParser += (entity, symbol, ctx)
+ commentParser += (entity, symbol, parent, ctx)
entity
}
/** Build documentation hierarchy from existing tree */
def collect(tree: Tree, prev: List[String] = Nil)(implicit ctx: Context): Entity = track(tree.symbol, ctx) {
- val implicitlyAddedMembers = ctx.docbase.defs(tree.symbol)
+ val implicitConversions = ctx.docbase.defs(tree.symbol)
def collectList(xs: List[Tree], ps: List[String])(implicit ctx: Context): List[Entity] =
xs.map(collect(_, ps)).filter(_ != NonEntity)
@@ -45,25 +45,24 @@ class DocASTPhase extends Phase {
def collectEntityMembers(xs: List[Tree], ps: List[String])(implicit ctx: Context) =
collectList(xs, ps).asInstanceOf[List[Entity with Members]]
- /** TODO: should be a set, not a uniqued list */
def collectMembers(tree: Tree, ps: List[String] = prev)(implicit ctx: Context): List[Entity] = {
val defs = (tree match {
case t: Template => collectList(t.body, ps)
case _ => Nil
- }) ++ implicitlyAddedMembers.flatMap(addedFromSymbol)
+ })
- defs
+ defs ++ implicitConversions.flatMap(membersFromSymbol)
}
- def addedFromSymbol(sym: Symbol): List[Entity] = {
+ def membersFromSymbol(sym: Symbol): List[Entity] = {
val defs = sym.info.bounds.hi.membersBasedOnFlags(Flags.Method, Flags.Synthetic | Flags.Private).map { meth =>
- track(meth.symbol, ctx) {
+ track(meth.symbol, ctx, tree.symbol) {
DefImpl(meth.symbol.name.decode.toString, Nil, path(meth.symbol), returnType(meth.info), typeParams(meth.symbol), paramLists(meth.info))
}
}.toList
val vals = sym.info.fields.filterNot(_.symbol.is(Flags.Private | Flags.Synthetic)).map { value =>
- track(value.symbol, ctx) {
+ track(value.symbol, ctx, tree.symbol) {
ValImpl(value.symbol.name.decode.toString, Nil, path(value.symbol), returnType(value.info))
}
}