aboutsummaryrefslogtreecommitdiff
path: root/dottydoc/src
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-09-08 20:25:51 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-10-06 17:45:39 +0200
commit208232aba52903ae090711589e9c572dc5347651 (patch)
tree886a60bfa36e690ee81c947bc7d50331affc1bf8 /dottydoc/src
parentaf27562040631d0bea38ec3ff8912fda9939f34e (diff)
downloaddotty-208232aba52903ae090711589e9c572dc5347651.tar.gz
dotty-208232aba52903ae090711589e9c572dc5347651.tar.bz2
dotty-208232aba52903ae090711589e9c572dc5347651.zip
Implement docbase as property
Diffstat (limited to 'dottydoc/src')
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala4
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala5
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/DocImplicitsPhase.scala1
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/DocstringPhase.scala3
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala9
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala13
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/UsecasePhase.scala1
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/util/syntax.scala21
8 files changed, 43 insertions, 14 deletions
diff --git a/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala b/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala
index 77ceb179d..a80efb165 100644
--- a/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala
@@ -1,6 +1,7 @@
package dotty.tools
package dottydoc
+import dotty.tools.dottydoc.util.syntax._
import core._
import core.transform._
import dotc.config.CompilerCommand
@@ -56,6 +57,7 @@ abstract class DocDriver extends Driver {
ctx.setSettings(summary.sstate)
ctx.setSetting(ctx.settings.YkeepComments, true)
+ ctx.setProperty(DocContext, new DocBase)
val fileNames = CompilerCommand.checkUsage(summary, sourcesRequired)(ctx)
(fileNames, ctx)
@@ -67,7 +69,7 @@ abstract class DocDriver extends Driver {
val (fileNames, ctx) = setup(args, initCtx.fresh)
doCompile(newCompiler(ctx), fileNames)(ctx)
- ctx.docbase.packages[Package]
+ ctx.docbase.packages
}
def compiledDocsJava(args: Array[String]): JMap[String, Package] =
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala b/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala
index 617afec51..c6e9d6190 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala
@@ -6,7 +6,7 @@ package core
import dotc.ast.Trees._
import dotc.CompilationUnit
import dotc.config.Printers.dottydoc
-import dotc.core.Contexts.Context
+import dotc.core.Contexts.{ Context, DocBase }
import dotc.core.Phases.Phase
import dotc.core.Symbols.{ Symbol, NoSymbol }
@@ -17,6 +17,7 @@ class DocASTPhase extends Phase {
import model.comment.Comment
import dotty.tools.dotc.core.Flags
import dotty.tools.dotc.ast.tpd._
+ import dotty.tools.dottydoc.util.syntax._
import util.traversing._
import util.internal.setters._
@@ -161,7 +162,7 @@ class DocASTPhase extends Phase {
} setParent(child, to = parent)
// (3) Update Doc AST in ctx.base
- for (kv <- packages) ctx.docbase.packages += kv
+ for (kv <- packages) ctx.docbase.packagesMutable += kv
// Return super's result
compUnits
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/DocImplicitsPhase.scala b/dottydoc/src/dotty/tools/dottydoc/core/DocImplicitsPhase.scala
index f322d7a5a..6577f0cb7 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/DocImplicitsPhase.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/DocImplicitsPhase.scala
@@ -5,6 +5,7 @@ package core
import dotty.tools.dotc.transform.TreeTransforms.{ MiniPhaseTransform, TransformerInfo }
import dotty.tools.dotc.core.Flags
import dotc.core.Contexts.Context
+import util.syntax._
class DocImplicitsPhase extends MiniPhaseTransform { thisTransformer =>
import dotty.tools.dotc.ast.tpd._
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/DocstringPhase.scala b/dottydoc/src/dotty/tools/dottydoc/core/DocstringPhase.scala
index 93d51503f..cff614528 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/DocstringPhase.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/DocstringPhase.scala
@@ -8,11 +8,12 @@ import model._
import model.internal._
import model.comment._
import BodyParsers._
+import util.syntax._
class DocstringPhase extends DocMiniPhase with CommentParser with CommentCleaner {
private def parsedComment[E <: Entity](ent: E)(implicit ctx: Context): Option[Comment] =
ctx.docbase.docstring(ent.symbol).map { cmt =>
- parse(ent, ctx.docbase.packages[Package].toMap, clean(cmt.raw), cmt.raw, cmt.pos)
+ parse(ent, ctx.docbase.packages, clean(cmt.raw), cmt.raw, cmt.pos)
.toComment(_.toHtml(ent))
}
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala b/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
index fc0b40955..201640e4a 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
@@ -3,10 +3,11 @@ package dottydoc
package core
import dotc.CompilationUnit
-import dotc.core.Contexts.Context
+import dotc.core.Contexts.{ Context, DocBase }
import dotc.core.Phases.Phase
import model._
import model.internal._
+import util.syntax._
object transform {
/**
@@ -43,9 +44,9 @@ object transform {
override def runOn(units: List[CompilationUnit])(implicit ctx: Context): List[CompilationUnit] = {
for {
rootName <- rootPackages
- pack = ctx.docbase.packages[Package](rootName)
+ pack = ctx.docbase.packages(rootName)
transformed = performPackageTransform(pack)
- } yield ctx.docbase.packages(rootName) = transformed
+ } yield ctx.docbase.packagesMutable(rootName) = transformed
super.runOn(units)
}
@@ -85,7 +86,7 @@ object transform {
)
// Update reference in context to newPackage
- ctx.docbase.packages[Package] += (newPackage.path.mkString(".") -> newPackage)
+ ctx.docbase.packagesMutable += (newPackage.path.mkString(".") -> newPackage)
newPackage
}
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala b/dottydoc/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala
index ae07effa9..1aecca9e1 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala
@@ -14,15 +14,16 @@ import BodyParsers._
import util.MemberLookup
import util.traversing._
import util.internal.setters._
+import util.syntax._
class LinkReturnTypes extends DocMiniPhase with TypeLinker {
override def transformDef(implicit ctx: Context) = { case df: DefImpl =>
- val returnValue = linkReference(df, df.returnValue, ctx.docbase.packages[Package].toMap)
+ val returnValue = linkReference(df, df.returnValue, ctx.docbase.packages)
df.copy(returnValue = returnValue)
}
override def transformVal(implicit ctx: Context) = { case vl: ValImpl =>
- val returnValue = linkReference(vl, vl.returnValue, ctx.docbase.packages[Package].toMap)
+ val returnValue = linkReference(vl, vl.returnValue, ctx.docbase.packages)
vl.copy(returnValue = returnValue)
}
}
@@ -31,7 +32,7 @@ class LinkParamListTypes extends DocMiniPhase with TypeLinker {
override def transformDef(implicit ctx: Context) = { case df: DefImpl =>
val newParamLists = for {
ParamListImpl(list, isImplicit) <- df.paramLists
- newList = list.map(linkReference(df, _, ctx.docbase.packages[Package].toMap))
+ newList = list.map(linkReference(df, _, ctx.docbase.packages))
} yield ParamListImpl(newList.asInstanceOf[List[NamedReference]], isImplicit)
df.copy(paramLists = newParamLists)
@@ -42,7 +43,7 @@ class LinkSuperTypes extends DocMiniPhase with TypeLinker {
def linkSuperTypes(ent: Entity with SuperTypes)(implicit ctx: Context): List[MaterializableLink] =
ent.superTypes.collect {
case UnsetLink(title, query) =>
- val packages = ctx.docbase.packages[Package].toMap
+ val packages = ctx.docbase.packages
val entityLink = makeEntityLink(ent, packages, Text(title), NoPosition, query).link
handleEntityLink(title, entityLink, ent)
}
@@ -67,13 +68,13 @@ class LinkSuperTypes extends DocMiniPhase with TypeLinker {
class LinkImplicitlyAddedTypes extends DocMiniPhase with TypeLinker {
override def transformDef(implicit ctx: Context) = {
case df: DefImpl if df.implicitlyAddedFrom.isDefined =>
- val implicitlyAddedFrom = linkReference(df, df.implicitlyAddedFrom.get, ctx.docbase.packages[Package].toMap)
+ val implicitlyAddedFrom = linkReference(df, df.implicitlyAddedFrom.get, ctx.docbase.packages)
df.copy(implicitlyAddedFrom = Some(implicitlyAddedFrom))
}
override def transformVal(implicit ctx: Context) = {
case vl: ValImpl if vl.implicitlyAddedFrom.isDefined =>
- val implicitlyAddedFrom = linkReference(vl, vl.implicitlyAddedFrom.get, ctx.docbase.packages[Package].toMap)
+ val implicitlyAddedFrom = linkReference(vl, vl.implicitlyAddedFrom.get, ctx.docbase.packages)
vl.copy(implicitlyAddedFrom = Some(implicitlyAddedFrom))
}
}
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/UsecasePhase.scala b/dottydoc/src/dotty/tools/dottydoc/core/UsecasePhase.scala
index 8e9e1fd57..47376eb26 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/UsecasePhase.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/UsecasePhase.scala
@@ -9,6 +9,7 @@ import transform.DocMiniPhase
import model.internal._
import model.factories._
import dotty.tools.dotc.core.Symbols.Symbol
+import util.syntax._
class UsecasePhase extends DocMiniPhase {
private def defdefToDef(d: tpd.DefDef, sym: Symbol)(implicit ctx: Context) = {
diff --git a/dottydoc/src/dotty/tools/dottydoc/util/syntax.scala b/dottydoc/src/dotty/tools/dottydoc/util/syntax.scala
new file mode 100644
index 000000000..140b3e761
--- /dev/null
+++ b/dottydoc/src/dotty/tools/dottydoc/util/syntax.scala
@@ -0,0 +1,21 @@
+package dotty.tools
+package dottydoc
+package util
+
+import dotc.core.Contexts.{ Context, DocBase }
+import model.Package
+
+object syntax {
+ implicit class RichDocContext(val ctx: Context) extends AnyVal {
+ def docbase: DocBase = ctx.getDocbase getOrElse {
+ throw new IllegalStateException("DocBase must be set before running dottydoc phases")
+ }
+ }
+
+ implicit class RichDocBase(val db: DocBase) {
+ def packages: Map[String, Package] = db.packagesAs[Package].toMap
+
+ def packagesMutable: collection.mutable.Map[String, Package] =
+ db.packagesAs[Package]
+ }
+}