diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-05-03 10:55:02 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-08-19 15:37:20 +0200 |
commit | db659dc0a199a77466088aeaf0ad50d4815e9308 (patch) | |
tree | 132acffd64147ba68a9247babfdcb20259126f1c /dottydoc | |
parent | 80a907708e970c9871d17184cfd8b022913e3bd6 (diff) | |
download | dotty-db659dc0a199a77466088aeaf0ad50d4815e9308.tar.gz dotty-db659dc0a199a77466088aeaf0ad50d4815e9308.tar.bz2 dotty-db659dc0a199a77466088aeaf0ad50d4815e9308.zip |
Split implementation to internal mutable and external interface
Diffstat (limited to 'dottydoc')
19 files changed, 280 insertions, 228 deletions
diff --git a/dottydoc/js/src/DottyDoc.scala b/dottydoc/js/src/DottyDoc.scala index b9ad1d891..d08bd8cc8 100644 --- a/dottydoc/js/src/DottyDoc.scala +++ b/dottydoc/js/src/DottyDoc.scala @@ -6,12 +6,14 @@ import js.Dynamic.global import js.JSApp import js.annotation.{ JSExport, JSName } import org.scalajs.dom -import model.Entities._ +import dom.document +import dom.webworkers.Worker +import model._ import html.EntityLayout @JSExport object DottyDocJS { @JSExport def main(target: dom.html.Div) = { - global.document.title = "Dotty " + EntityIndex.currentEntity.path.mkString(".") + document.title = "Dotty " + EntityIndex.currentEntity.path.mkString(".") target.appendChild(EntityLayout(EntityIndex.currentEntity).html.render) hljs.initHighlightingOnLoad() } diff --git a/dottydoc/js/src/EntityIndex.scala b/dottydoc/js/src/EntityIndex.scala index 69bda283f..e58cdf88e 100644 --- a/dottydoc/js/src/EntityIndex.scala +++ b/dottydoc/js/src/EntityIndex.scala @@ -10,7 +10,8 @@ import js.annotation.JSName object EntityIndex { import microjson._ import prickle._ - import model.Entities._ + import model._ + import model.pickling._ lazy val packages: Map[String, Package] = //FIXME diff --git a/dottydoc/js/src/html/EntityLayout.scala b/dottydoc/js/src/html/EntityLayout.scala index 51fd000b7..58ca3df49 100644 --- a/dottydoc/js/src/html/EntityLayout.scala +++ b/dottydoc/js/src/html/EntityLayout.scala @@ -5,7 +5,7 @@ package html import scalatags.JsDom.all._ import org.scalajs.dom import org.scalajs.dom.html.{Anchor, Div} -import model.Entities._ +import model._ case class EntityLayout(entity: Entity) extends MemberLayout { def html = div( diff --git a/dottydoc/js/src/html/Member.scala b/dottydoc/js/src/html/Member.scala index 065626a1c..a862ffea4 100644 --- a/dottydoc/js/src/html/Member.scala +++ b/dottydoc/js/src/html/Member.scala @@ -8,7 +8,7 @@ import org.scalajs.dom import org.scalajs.dom.html.{Anchor, Div} trait MemberLayout { - import model.Entities._ + import model._ def member(m: Entity, parent: Entity) = { def toggleBetween(short: Div, and: Div): Unit = diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala index a0235e7c6..1670313e1 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala @@ -15,11 +15,13 @@ object Phases { class DocPhase extends Phase { import model.comment.Comment import model.CommentParsers.wikiParser - import model.Entities._ - import model.EntityFactories._ + import model.factories._ + import model._ + import model.internal._ import dotty.tools.dotc.core.Flags import dotty.tools.dotc.ast.tpd._ - import util.Traversing._ + import util.traversing._ + import util.internal.setters._ def phaseName = "docphase" @@ -29,11 +31,13 @@ object Phases { def track(symbol: Symbol, ctx: Context)(op: => Entity) = { val entity = op - val commentParser = { (entity: Entity, packs: Map[String, Package]) => - wikiParser.parseHtml(symbol, entity, packs)(ctx) - } + if (entity != NonEntity) { + val commentParser = { (entity: Entity, packs: Map[String, Package]) => + wikiParser.parseHtml(symbol, entity, packs)(ctx) + } - commentCache = commentCache + (entity.path.mkString(".") -> commentParser) + commentCache = commentCache + (entity.path.mkString(".") -> commentParser) + } entity } @@ -43,8 +47,8 @@ object Phases { def collectList(xs: List[Tree], ps: List[String])(implicit ctx: Context): List[Entity] = xs.map(collect(_, ps)).filter(_ != NonEntity) - def collectEntityMembers(xs: List[Tree], ps: List[String])(implicit ctx: Context): List[EntityMember] = - collectList(xs, ps).asInstanceOf[List[EntityMember]] + def collectEntityMembers(xs: List[Tree], ps: List[String])(implicit ctx: Context) = + collectList(xs, ps).asInstanceOf[List[Entity with Members]] def collectMembers(tree: Tree, ps: List[String] = prev)(implicit ctx: Context): List[Entity] = tree match { case t: Template => collectList(t.body, ps) @@ -55,34 +59,34 @@ object Phases { /** package */ case pd @ PackageDef(pid, st) => val newPath = prev :+ pid.name.toString - addEntity(Package(newPath.mkString("."), collectEntityMembers(st, newPath), newPath)) + addEntity(PackageImpl(newPath.mkString("."), collectEntityMembers(st, newPath), newPath)) /** trait */ case t @ TypeDef(n, rhs) if t.symbol.is(Flags.Trait) => val name = n.toString val newPath = prev :+ name - Trait(name, collectMembers(rhs), flags(t), newPath) + TraitImpl(name, collectMembers(rhs), flags(t), newPath) /** objects, on the format "Object$" so drop the last letter */ case o @ TypeDef(n, rhs) if o.symbol.is(Flags.Module) => val name = n.toString.dropRight(1) - Object(name, collectMembers(rhs, prev :+ name), flags(o), prev :+ (name + "$")) + ObjectImpl(name, collectMembers(rhs, prev :+ name), flags(o), prev :+ (name + "$")) /** class / case class */ case c @ TypeDef(name, rhs) if c.symbol.isClass => val newPath = prev :+ name.toString (name.toString, collectMembers(rhs), flags(c), newPath, None) match { - case x if c.symbol.is(Flags.CaseClass) => CaseClass.tupled(x) - case x => Class.tupled(x) + case x if c.symbol.is(Flags.CaseClass) => CaseClassImpl.tupled(x) + case x => ClassImpl.tupled(x) } /** def */ case d: DefDef => - Def(d.name.toString, flags(d), path(d), returnType(d.tpt)) + DefImpl(d.name.toString, flags(d), path(d), returnType(d.tpt)) /** val */ case v: ValDef if !v.symbol.is(Flags.ModuleVal) => - Val(v.name.toString, flags(v), path(v), returnType(v.tpt)) + ValImpl(v.name.toString, flags(v), path(v), returnType(v.tpt)) case x => { //dottydoc.println(s"Found unwanted entity: $x (${x.pos},\n${x.show}") @@ -97,7 +101,7 @@ object Phases { val path = p.path.mkString(".") val newPack = packages.get(path).map { ex => val children = (ex.children ::: p.children).distinct.sortBy(_.name) - Package(p.name, children, p.path, None) + PackageImpl(p.name, children, p.path, None) }.getOrElse(p) packages = packages + (path -> newPack) @@ -119,52 +123,18 @@ object Phases { val compUnits = super.runOn(units) // (2) Set parent of all package children - def setParent(ent: Entity, to: Entity): Unit = - ent match { - case e: Class => - e.parent = Some(to) - e.members.foreach(setParent(_, e)) - case e: CaseClass => - e.parent = Some(to) - e.members.foreach(setParent(_, e)) - case e: Object => - e.parent = Some(to) - e.members.foreach(setParent(_, e)) - case e: Trait => - e.parent = Some(to) - e.members.foreach(setParent(_, e)) - case e: Val => - e.parent = Some(to) - case e: Def => - e.parent = Some(to) - case _ => () - } - - println("Connecting parents to children...") + println("Connecting parents to children, finding companions...") for { parent <- packages.values child <- parent.children } setParent(child, to = parent) // (3) Create documentation template from docstrings, with internal links - packages.values.foreach { p => - mutateEntities(p) { - case e: Package => - e.comment = commentCache(e.path.mkString("."))(e, packages) - case e: Class => - e.comment = commentCache(e.path.mkString("."))(e, packages) - case e: CaseClass => - e.comment = commentCache(e.path.mkString("."))(e, packages) - case e: Object => - e.comment = commentCache(e.path.mkString("."))(e, packages) - case e: Trait => - e.comment = commentCache(e.path.mkString("."))(e, packages) - case e: Val => - e.comment = commentCache(e.path.mkString("."))(e, packages) - case e: Def => - e.comment = commentCache(e.path.mkString("."))(e, packages) - case _ => () - } + for { + pack <- packages.values + } mutateEntities(pack) { e => + val comment = commentCache(e.path.mkString("."))(e, packages) + setComment(e, to = comment) } // (4) Write the finished model to JSON diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/html/Html.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/html/Html.scala index aef86ffd8..91bf4d773 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/html/Html.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/html/Html.scala @@ -2,11 +2,13 @@ package dotty.tools.dottydoc package html import scalatags.Text.all._ -import model.Entities._ +import model.internal._ +import model._ case class EntityPage(entity: Entity, packages: Map[String, Package]) { - import prickle._ import CustomTags._ + import model.pickling._ + import prickle._ private def relPath(to: String, from: Entity) = "../" * from.path.length + to @@ -77,7 +79,7 @@ case class EntityPage(entity: Entity, packages: Map[String, Package]) { str.replaceAll("\\$colon", ":") private def relativePath(to: Entity) = - util.Traversing.relativePath(entity, to) + util.traversing.relativePath(entity, to) def packageView = nav( cls := "mdl-navigation packages", @@ -86,9 +88,16 @@ case class EntityPage(entity: Entity, packages: Map[String, Package]) { keys.flatMap { k => val pack = packages(k) val children = - pack.children.sortBy(_.name).filterNot(_.kind == "package").map { c => - a(cls := "mdl-navigation__link entity", href := relativePath(c), filteredName(c.name)) - } + pack.children + .sortBy(_.name) + .filterNot(_.kind == "package") + .map { entity => + a( + cls := "mdl-navigation__link entity", + href := relativePath(entity), + filteredName(entity.name) + ) + } if (children.length > 0) a(cls := "mdl-navigation__link package", href := relativePath(pack), filteredName(k)) :: children diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/model/CommentParsers.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/model/CommentParsers.scala index e47a17f49..e6adba977 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/model/CommentParsers.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/model/CommentParsers.scala @@ -8,7 +8,7 @@ import dotc.core.Contexts.Context object CommentParsers { import comment._ import BodyParsers._ - import Entities.{Entity, Package} + import model.internal._ sealed class WikiParser extends CommentCleaner with CommentParser with CommentExpander { diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyEntities.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyEntities.scala index 9f06a7a9a..f423cf8de 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyEntities.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyEntities.scala @@ -3,7 +3,6 @@ package model package comment import scala.collection._ -import Entities.Entity /** A body of text. A comment has a single body, which is composed of * at least one block. Inside every body is exactly one summary (see diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyParsers.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyParsers.scala index b43440dd1..725d83557 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyParsers.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/BodyParsers.scala @@ -3,7 +3,6 @@ package model package comment object BodyParsers { - import model.Entities.{Entity, Members} implicit class BodyToHtml(val body: Body) extends AnyVal { def toHtml(origin: Entity): String = { @@ -37,7 +36,7 @@ object BodyParsers { } def relativePath(target: Entity) = - util.Traversing.relativePath(origin, target) + util.traversing.relativePath(origin, target) def bodyToHtml(body: Body): String = (body.blocks map blockToHtml).mkString diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/CommentParser.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/CommentParser.scala index 3c5411c5c..fb2119fc0 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/CommentParser.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/model/comment/CommentParser.scala @@ -8,10 +8,10 @@ import dotty.tools.dotc.core.Contexts.Context import scala.collection.mutable import dotty.tools.dotc.config.Printers.dottydoc import scala.util.matching.Regex -import Entities.{Entity, Package} trait CommentParser extends util.MemberLookup { import Regexes._ + import model.internal._ /** Parses a raw comment string into a `Comment` object. * @param packages all packages parsed by Scaladoc tool, used for lookup diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/util/IndexWriters.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/util/IndexWriters.scala index 8ec62a7d4..70587e6b8 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/util/IndexWriters.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/util/IndexWriters.scala @@ -2,9 +2,10 @@ package dotty.tools.dottydoc package util object IndexWriters { - import prickle._ - import model.Entities._ import html.EntityPage + import model.Package + import model.pickling._ + import prickle._ def writeJs(packs: Map[String, Package], outPath: String): Unit = { for (pack <- packs.values) { diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/util/MemberLookup.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/util/MemberLookup.scala index 933ed682f..f95829caf 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/util/MemberLookup.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/util/MemberLookup.scala @@ -10,8 +10,9 @@ import dotc.core.Symbols._ import dotc.core.Types._ import dotc.core.Names._ import dotc.util.Positions._ +import model.internal._ import model.comment._ -import model.Entities._ +import model._ trait MemberLookup { /** Performs a lookup based on the provided (pruned) query string diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/util/mutate.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/util/mutate.scala new file mode 100644 index 000000000..b491fb161 --- /dev/null +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/util/mutate.scala @@ -0,0 +1,39 @@ +package dotty.tools.dottydoc +package util +package internal + +object setters { + import model._ + import model.comment.Comment + import model.internal._ + + def setComment(ent: Entity, to: Option[Comment]) = ent match { + case x: PackageImpl => x.comment = to + case x: ClassImpl => x.comment = to + case x: CaseClassImpl => x.comment = to + case x: TraitImpl => x.comment = to + case x: ObjectImpl => x.comment = to + case x: DefImpl => x.comment = to + case x: ValImpl => x.comment = to + } + + def setParent(ent: Entity, to: Entity): Unit = ent match { + case e: ClassImpl => + e.parent = to + e.members.foreach(setParent(_, e)) + case e: CaseClassImpl => + e.parent = to + e.members.foreach(setParent(_, e)) + case e: ObjectImpl => + e.parent = to + e.members.foreach(setParent(_, e)) + case e: TraitImpl => + e.parent = to + e.members.foreach(setParent(_, e)) + case e: ValImpl => + e.parent = to + case e: DefImpl => + e.parent = to + case _ => () + } +} diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala deleted file mode 100644 index f95190578..000000000 --- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala +++ /dev/null @@ -1,149 +0,0 @@ -package dotty.tools.dottydoc -package model - -import comment.Comment - -object Entities { - import prickle._ - - type EntityMember = Entity with Members - - sealed trait Entity { - def name: String - - /** Path from root, i.e. `scala.Option$` */ - def path: List[String] - - def comment: Option[Comment] - - def kind: String - - def parent: Option[Entity] - - /** All parents from package level i.e. Package to Object to Member etc */ - def parents: List[Entity] = - parent.map(p => p :: p.parents).getOrElse(Nil) - } - - sealed trait Members { - def members: List[Entity] - } - - sealed trait Modifiers { - def modifiers: List[String] - - val isPrivate: Boolean = - modifiers.contains("private") - } - - final case class Package( - name: String, - members: List[Entity], - path: List[String], - var comment: Option[Comment] = None - ) extends Entity with Members { - override val kind = "package" - - var parent: Option[Entity] = None - val children: List[EntityMember] = - members.collect { case x: EntityMember => x } - } - - final case class Class( - name: String, - members: List[Entity], - modifiers: List[String], - path: List[String], - var comment: Option[Comment] = None - ) extends Entity with Members with Modifiers { - override val kind = "class" - var parent: Option[Entity] = None - } - - final case class CaseClass( - name: String, - members: List[Entity], - modifiers: List[String], - path: List[String], - var comment: Option[Comment] = None - ) extends Entity with Members with Modifiers { - override val kind = "case class" - var parent: Option[Entity] = None - } - - final case class Trait( - name: String, - members: List[Entity], - modifiers: List[String], - path: List[String], - var comment: Option[Comment] = None - ) extends Entity with Members with Modifiers { - override val kind = "trait" - var parent: Option[Entity] = None - } - - final case class Object( - name: String, - members: List[Entity], - modifiers: List[String], - path: List[String], - var comment: Option[Comment] = None - ) extends Entity with Members with Modifiers { - override val kind = "object" - var parent: Option[Entity] = None - } - - final case class Def( - name: String, - modifiers: List[String], - path: List[String], - returnValue: String, - var comment: Option[Comment] = None - ) extends Entity with Modifiers { - override val kind = "def" - var parent: Option[Entity] = None - } - - final case class Val( - name: String, - modifiers: List[String], - path: List[String], - returnValue: String, - var comment: Option[Comment] = None - ) extends Entity with Modifiers { - override val kind = "val" - var parent: Option[Entity] = None - } - - /** This object is used to represent entities that are to be filtered out */ - final case object NonEntity extends Entity { - override val name = "" - override val comment = None - override val path = Nil - override val kind = "" - override val parent = None - } - - final case object RootEntity extends Entity { - override val name = "root" - override val comment = None - override val path = Nil - override val kind = "" - override val parent = None - } - - //implicit val pMPickler: PicklerPair[PackageMember] = CompositePickler[PackageMember] - // .concreteType[Class] - // .concreteType[CaseClass] - // .concreteType[Object] - // .concreteType[Trait] - - implicit val entityPickler: PicklerPair[Entity] = CompositePickler[Entity] - .concreteType[Val] - .concreteType[Def] - .concreteType[Class] - .concreteType[CaseClass] - .concreteType[Object] - .concreteType[Trait] - .concreteType[Package] -} diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/entities.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/entities.scala new file mode 100644 index 000000000..e62b8573a --- /dev/null +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/entities.scala @@ -0,0 +1,91 @@ +package dotty.tools.dottydoc +package model + +import comment.Comment + +trait Entity { + def name: String + + /** Path from root, i.e. `scala.Option$` */ + def path: List[String] + + def comment: Option[Comment] + + def kind: String + + def parent: Entity + + /** All parents from package level i.e. Package to Object to Member etc */ + def parents: List[Entity] = parent match { + case NonEntity => Nil + case e => e :: e.parents + } + + /** Applies `f` to entity if != `NonEntity` */ + def fold[A](nonEntity: A)(f: Entity => A) = this match { + case NonEntity => nonEntity + case x => f(x) + } +} + +trait Members { + def members: List[Entity] +} + +trait Modifiers { + def modifiers: List[String] + + val isPrivate: Boolean = + modifiers.contains("private") +} + +trait ReturnValue { + def returnValue: String +} + +trait Package extends Entity with Members { + override val kind = "package" + + def children: List[Entity with Members] +} + +trait Class extends Entity with Members with Modifiers { + override val kind = "class" +} + +trait CaseClass extends Class { + override val kind = "case class" +} + +trait Trait extends Class { + override val kind = "trait" +} + +trait Object extends Class { + override val kind = "object" +} + +trait Def extends Entity with Modifiers with ReturnValue { + override val kind = "def" +} + +trait Val extends Def { + override val kind = "val" +} + +trait Var extends Def { + override val kind = "var" +} + +trait NonEntity extends Entity { + override val name = "" + override val comment = None + override val path = Nil + override val kind = "" + override val parent = NonEntity +} + +final case object NonEntity extends NonEntity +final case object RootEntity extends NonEntity { + override val name = "root" +} diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/EntityFactories.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala index 9de1cf6ad..142895021 100644 --- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/EntityFactories.scala +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala @@ -9,7 +9,7 @@ import dotc.core.{ Flags => DottyFlags } import dotc.ast.Trees._ import DottyFlags.FlagSet -object EntityFactories { +object factories { import dotty.tools.dotc.ast.tpd._ import DottyFlags._ diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/internal.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/internal.scala new file mode 100644 index 000000000..f8707f692 --- /dev/null +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/internal.scala @@ -0,0 +1,69 @@ +package dotty.tools.dottydoc +package model + +import comment.Comment + +object internal { + + trait Impl { + var parent: Entity = NonEntity + } + + final case class PackageImpl( + name: String, + members: List[Entity], + path: List[String], + var comment: Option[Comment] = None + ) extends Package with Impl { + val children: List[Entity with Members] = + members.collect { case x: Entity with Members => x } + } + + final case class ClassImpl( + name: String, + members: List[Entity], + modifiers: List[String], + path: List[String], + var comment: Option[Comment] = None + ) extends Class with Impl + + final case class CaseClassImpl( + name: String, + members: List[Entity], + modifiers: List[String], + path: List[String], + var comment: Option[Comment] = None + ) extends CaseClass with Impl + + final case class TraitImpl( + name: String, + members: List[Entity], + modifiers: List[String], + path: List[String], + var comment: Option[Comment] = None + ) extends Trait with Impl + + final case class ObjectImpl( + name: String, + members: List[Entity], + modifiers: List[String], + path: List[String], + var comment: Option[Comment] = None + ) extends Object with Impl + + final case class DefImpl( + name: String, + modifiers: List[String], + path: List[String], + returnValue: String, + var comment: Option[Comment] = None + ) extends Def with Impl + + final case class ValImpl( + name: String, + modifiers: List[String], + path: List[String], + returnValue: String, + var comment: Option[Comment] = None + ) extends Val with Impl +} diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/pickling.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/pickling.scala new file mode 100644 index 000000000..ea33a05fd --- /dev/null +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/pickling.scala @@ -0,0 +1,20 @@ +package dotty.tools.dottydoc +package model + +object pickling { + import internal._ + import prickle._ + + implicit val entityPickler: PicklerPair[Entity] = CompositePickler[Entity] + .concreteType[NonEntity.type] + .concreteType[ValImpl] + .concreteType[DefImpl] + .concreteType[ClassImpl] + .concreteType[CaseClassImpl] + .concreteType[ObjectImpl] + .concreteType[TraitImpl] + .concreteType[PackageImpl] + + implicit val packagePickler: PicklerPair[Package] = CompositePickler[Package] + .concreteType[PackageImpl] +} diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala index 37c2f6e6b..aca5f41ea 100644 --- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala @@ -1,8 +1,8 @@ package dotty.tools.dottydoc package util -object Traversing { - import model.Entities._ +object traversing { + import model._ def mutateEntities(e: Entity)(trans: Entity => Unit): Unit = e match { case e: Entity with Members => |