diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-06-10 18:17:59 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-08-19 15:37:25 +0200 |
commit | 091272744ac958e847b408cd30b3bc9978136d0e (patch) | |
tree | 2424cc79a0d3d66bd15c51de79d2da4009572b2d /dottydoc | |
parent | a099344f81ddb0463bbc6da99c376df9f70667df (diff) | |
download | dotty-091272744ac958e847b408cd30b3bc9978136d0e.tar.gz dotty-091272744ac958e847b408cd30b3bc9978136d0e.tar.bz2 dotty-091272744ac958e847b408cd30b3bc9978136d0e.zip |
Add type parameters to rendered entity
Diffstat (limited to 'dottydoc')
7 files changed, 46 insertions, 20 deletions
diff --git a/dottydoc/js/src/html/Member.scala b/dottydoc/js/src/html/Member.scala index c4989e762..8b6a85e59 100644 --- a/dottydoc/js/src/html/Member.scala +++ b/dottydoc/js/src/html/Member.scala @@ -48,7 +48,10 @@ trait MemberLayout { onclick := { () => toggleBetween(shortComment, and = fullComment) }, div( cls := "mdl-cell mdl-cell--12-col", - span(cls := "member-name", m.modifiers.mkString(" ") + " " + m.kind + " " + m.name), + span( + cls := "member-name", + m.modifiers.mkString(" ") + " " + m.kind + " " + m.name + typeParams(m) + ), returnValue(m, parent) ), shortComment, @@ -59,6 +62,11 @@ trait MemberLayout { } } + def typeParams(m: Entity): String = m match { + case d: Def if d.typeParams.nonEmpty => d.typeParams.mkString("[", ", ", "]") + case _ => "" + } + def returnValue(m: Entity with Modifiers, parent: Entity) = { // shortens: "Option.this.A" => "A" def shorten(s: String): String = s.split('.').toList match { diff --git a/dottydoc/js/src/model/entities.scala b/dottydoc/js/src/model/entities.scala index 4a4984a34..1d8c00b2c 100644 --- a/dottydoc/js/src/model/entities.scala +++ b/dottydoc/js/src/model/entities.scala @@ -21,9 +21,7 @@ import sjs.annotation.ScalaJSDefined @ScalaJSDefined trait Entity extends sjs.Object { val kind: String - val name: String - val path: sjs.Array[String] } @@ -53,13 +51,15 @@ trait Object extends Class trait Trait extends Class @ScalaJSDefined -trait Def extends Entity with Modifiers +trait Def extends Entity with Modifiers { + val typeParams: sjs.Array[String] +} @ScalaJSDefined -trait Val extends Def +trait Val extends Entity with Modifiers @ScalaJSDefined -trait Var extends Def +trait Var extends Entity with Modifiers object ops { val EntitiesWithMembers = @@ -79,4 +79,11 @@ object ops { val members = mbrs } } + + implicit class EntityOps(val ent: Entity) { + def typeParams: sjs.Array[String] = + if (ent.kind == "def") + ent.asInstanceOf[Def].typeParams + else sjs.Array() + } } diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala index e4da0a971..f620c53c8 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/core/Phases.scala @@ -80,7 +80,7 @@ object Phases { /** def */ case d: DefDef => - DefImpl(filteredName(d.name.toString), flags(d), path(d), returnType(d, d.tpt)) + DefImpl(filteredName(d.name.toString), flags(d), path(d), returnType(d, d.tpt), typeParams(d), paramLists(d)) /** val */ case v: ValDef if !v.symbol.is(Flags.ModuleVal) => diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala index fef880351..4a33e5773 100644 --- a/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala +++ b/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala @@ -57,7 +57,7 @@ object json extends DefaultJsonProtocol { } implicit val valFormat: JsonFormat[ValImpl] = lazyFormat(jsonFormat(ValImpl, "name", "modifiers", "path", "returnValue", "comment")) - implicit val defFormat: JsonFormat[DefImpl] = lazyFormat(jsonFormat(DefImpl, "name", "modifiers", "path", "returnValue", "comment")) + implicit val defFormat: JsonFormat[DefImpl] = lazyFormat(jsonFormat(DefImpl, "name", "modifiers", "path", "returnValue", "paramTypes", "paramLists", "comment")) implicit val objFormat: JsonFormat[ObjectImpl] = lazyFormat(jsonFormat(ObjectImpl, "name", "members", "modifiers", "path", "comment")) implicit val traitormat: JsonFormat[TraitImpl] = lazyFormat(jsonFormat(TraitImpl, "name", "members", "modifiers", "path", "comment")) implicit val cclassFormat: JsonFormat[CaseClassImpl] = lazyFormat(jsonFormat(CaseClassImpl, "name", "members", "modifiers", "path", "comment")) 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 index 0ecfd04be..f2f4d9eef 100644 --- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/entities.scala +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/entities.scala @@ -44,13 +44,13 @@ trait ReturnValue { } trait Package extends Entity with Members { - override val kind = "package" + val kind = "package" def children: List[Entity with Members] } trait Class extends Entity with Members with Modifiers { - override val kind = "class" + val kind = "class" } trait CaseClass extends Class { @@ -66,23 +66,25 @@ trait Object extends Class { } trait Def extends Entity with Modifiers with ReturnValue { - override val kind = "def" + def typeParams: List[String] + def paramLists: List[List[(String, MaterializableLink)]] + val kind = "def" } -trait Val extends Def { - override val kind = "val" +trait Val extends Entity with Modifiers with ReturnValue { + val kind = "val" } -trait Var extends Def { - override val kind = "var" +trait Var extends Entity with Modifiers with ReturnValue { + 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 + val name = "" + val comment = None + val path = Nil + val kind = "" + val parent = NonEntity } final case object NonEntity extends NonEntity diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala index 3e5745a18..a97ee2bb5 100644 --- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala @@ -58,6 +58,13 @@ object factories { UnsetLink(Text(cleanTitle(tpt.show)), cleanQuery(tpt.show)) } + def typeParams(t: DefDef)(implicit ctx: Context): List[String] = + t.tparams.map(_.symbol.name.toString) + + def paramLists(t: DefDef)(implicit ctx: Context): List[List[(String, MaterializableLink)]] = { + Nil + } + def filteredName(str: String) = str .replaceAll("\\$colon", ":") .replaceAll("\\$plus", "+") 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 index 7535504b6..5d431782e 100644 --- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/internal.scala +++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/internal.scala @@ -56,6 +56,8 @@ object internal { modifiers: List[String], path: List[String], var returnValue: MaterializableLink, + var typeParams: List[String] = Nil, + var paramLists: List[List[(String, MaterializableLink)]] = Nil, var comment: Option[Comment] = None ) extends Def with Impl |