aboutsummaryrefslogtreecommitdiff
path: root/doc-tool/src
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-01-16 19:08:57 +0100
committerFelix Mulder <felix.mulder@gmail.com>2017-01-31 14:32:37 +0100
commitab09530d350a2a7b2576d06a870082b975cf6c4f (patch)
treee4f3785d1584a9a4febde3616eb0a540783f0877 /doc-tool/src
parent6f6dc9767badd4bcacd8f00ef0ed467bcabc6296 (diff)
downloaddotty-ab09530d350a2a7b2576d06a870082b975cf6c4f.tar.gz
dotty-ab09530d350a2a7b2576d06a870082b975cf6c4f.tar.bz2
dotty-ab09530d350a2a7b2576d06a870082b975cf6c4f.zip
Add `TypeAlias` to docs
Diffstat (limited to 'doc-tool/src')
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala5
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala14
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/model/entities.scala14
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/model/internal.scala15
4 files changed, 41 insertions, 7 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala b/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala
index 0ad199ca2..ed31eeb05 100644
--- a/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala
@@ -85,6 +85,11 @@ class DocASTPhase extends Phase {
val pkgPath = path(pd.symbol)
addEntity(PackageImpl(pd.symbol, annotations(pd.symbol), pd.symbol.showFullName, collectEntityMembers(st, pkgPath), pkgPath))
+ /** type alias */
+ case t: TypeDef if !t.isClassDef =>
+ val sym = t.symbol
+ TypeAliasImpl(sym, annotations(sym), flags(t), t.name.show, path(sym), None)
+
/** trait */
case t @ TypeDef(n, rhs) if t.symbol.is(Flags.Trait) =>
//TODO: should not `collectMember` from `rhs` - instead: get from symbol, will get inherited members as well
diff --git a/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala b/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
index 100e0af6b..80e2929f7 100644
--- a/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
@@ -92,6 +92,17 @@ object transform {
newPackage
}
+ case t: TypeAlias => transformEntity(t, _.typeAliasTransformation) { t =>
+ TypeAliasImpl(
+ t.symbol,
+ t.annotations,
+ t.modifiers,
+ t.name,
+ t.path,
+ t.alias,
+ t.comment
+ )
+ }
case c: Class => transformEntity(c, _.classTransformation) { cls =>
ClassImpl(
cls.symbol,
@@ -195,8 +206,8 @@ object transform {
case id => id
}
- // Partial functions instead????
def transformPackage(implicit ctx: Context): PartialFunction[Package, Package] = identity
+ def transformTypeAlias(implicit ctx: Context): PartialFunction[TypeAlias, TypeAlias] = identity
def transformClass(implicit ctx: Context): PartialFunction[Class, Class] = identity
def transformCaseClass(implicit ctx: Context): PartialFunction[CaseClass, CaseClass] = identity
def transformTrait(implicit ctx: Context): PartialFunction[Trait, Trait] = identity
@@ -205,6 +216,7 @@ object transform {
def transformVal(implicit ctx: Context): PartialFunction[Val, Val] = identity
private[transform] def packageTransformation(p: Package)(implicit ctx: Context) = (transformPackage orElse identity)(p)
+ private[transform] def typeAliasTransformation(alias: TypeAlias)(implicit ctx: Context) = (transformTypeAlias orElse identity)(alias)
private[transform] def classTransformation(cls: Class)(implicit ctx: Context) = (transformClass orElse identity)(cls)
private[transform] def caseClassTransformation(cc: CaseClass)(implicit ctx: Context) = (transformCaseClass orElse identity)(cc)
private[transform] def traitTransformation(trt: Trait)(implicit ctx: Context) = (transformTrait orElse identity)(trt)
diff --git a/doc-tool/src/dotty/tools/dottydoc/model/entities.scala b/doc-tool/src/dotty/tools/dottydoc/model/entities.scala
index aea09f745..6f6e8d3e8 100644
--- a/doc-tool/src/dotty/tools/dottydoc/model/entities.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/model/entities.scala
@@ -5,7 +5,7 @@ import comment._
import references._
import dotty.tools.dotc.core.Symbols.{ Symbol, NoSymbol }
-trait Entity {
+trait Entity { entity =>
def symbol: Symbol
def name: String
@@ -21,6 +21,12 @@ trait Entity {
def annotations: List[String]
+ def children: List[Entity with Members] = entity match {
+ case e: Entity with Members =>
+ e.members.collect { case e: Entity with Members if e.kind != "package" => e }
+ case _ => Nil
+ }
+
/** All parents from package level i.e. Package to Object to Member etc */
def parents: List[Entity] = parent match {
case NonEntity => Nil
@@ -72,8 +78,12 @@ trait ImplicitlyAddedEntity extends Entity {
trait Package extends Entity with Members {
val kind = "package"
+}
- def children: List[Entity with Members]
+trait TypeAlias extends Entity with Modifiers {
+ val kind = "type"
+ def alias: Option[Reference]
+ def isAbstract: Boolean = !alias.isDefined
}
trait Class extends Entity with Modifiers with TypeParams with Constructors with SuperTypes with Members {
diff --git a/doc-tool/src/dotty/tools/dottydoc/model/internal.scala b/doc-tool/src/dotty/tools/dottydoc/model/internal.scala
index 9787da7ce..dd592c2e1 100644
--- a/doc-tool/src/dotty/tools/dottydoc/model/internal.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/model/internal.scala
@@ -18,10 +18,17 @@ object internal {
var members: List[Entity],
path: List[String],
var comment: Option[Comment] = None
- ) extends Package with Impl {
- def children: List[Entity with Members] =
- members.collect { case x: Entity with Members => x }
- }
+ ) extends Package with Impl
+
+ final case class TypeAliasImpl (
+ symbol: Symbol,
+ annotations: List[String],
+ modifiers: List[String],
+ name: String,
+ path: List[String],
+ alias: Option[Reference],
+ var comment: Option[Comment] = None
+ ) extends TypeAlias with Impl
final case class ClassImpl(
symbol: Symbol,