aboutsummaryrefslogtreecommitdiff
path: root/dottydoc
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-09-21 15:02:30 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-10-06 17:45:39 +0200
commit92536168e9fda4005a8eff54e5ca72cc70fb32e4 (patch)
tree285d92137cc5c33a0dba3b352b6fa252ed57ce13 /dottydoc
parent208232aba52903ae090711589e9c572dc5347651 (diff)
downloaddotty-92536168e9fda4005a8eff54e5ca72cc70fb32e4.tar.gz
dotty-92536168e9fda4005a8eff54e5ca72cc70fb32e4.tar.bz2
dotty-92536168e9fda4005a8eff54e5ca72cc70fb32e4.zip
Separate `ContextDocstrings` from `Context` and make it pluggable
Diffstat (limited to 'dottydoc')
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala3
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/ContextDottydoc.scala23
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala3
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala3
-rw-r--r--dottydoc/src/dotty/tools/dottydoc/util/syntax.scala17
-rw-r--r--dottydoc/test/BaseTest.scala8
6 files changed, 39 insertions, 18 deletions
diff --git a/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala b/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala
index a80efb165..0dea96134 100644
--- a/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/DottyDoc.scala
@@ -7,6 +7,7 @@ import core.transform._
import dotc.config.CompilerCommand
import dotc.config.Printers.dottydoc
import dotc.core.Contexts._
+import dotc.core.Comments.ContextDoc
import dotc.core.Phases.Phase
import dotc.typer.FrontEnd
import dotc.{ CompilationUnit, Compiler, Driver, Run }
@@ -57,7 +58,7 @@ abstract class DocDriver extends Driver {
ctx.setSettings(summary.sstate)
ctx.setSetting(ctx.settings.YkeepComments, true)
- ctx.setProperty(DocContext, new DocBase)
+ ctx.setProperty(ContextDoc, new ContextDottydoc)
val fileNames = CompilerCommand.checkUsage(summary, sourcesRequired)(ctx)
(fileNames, ctx)
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/ContextDottydoc.scala b/dottydoc/src/dotty/tools/dottydoc/core/ContextDottydoc.scala
new file mode 100644
index 000000000..c60038836
--- /dev/null
+++ b/dottydoc/src/dotty/tools/dottydoc/core/ContextDottydoc.scala
@@ -0,0 +1,23 @@
+package dotty.tools
+package dottydoc
+package core
+
+import dotc.core.Symbols.Symbol
+import dotc.core.Comments.ContextDocstrings
+import model.Package
+
+class ContextDottydoc extends ContextDocstrings {
+ import scala.collection.mutable
+
+ private[this] val _packages: mutable.Map[String, Package] = mutable.Map.empty
+ def packages: Map[String, Package] = _packages.toMap
+ def packagesMutable: mutable.Map[String, Package] = _packages
+
+ /** Should perhaps factorize this into caches that get flushed */
+ private var _defs: Map[Symbol, Set[Symbol]] = Map.empty
+ def defs(sym: Symbol): Set[Symbol] = _defs.get(sym).getOrElse(Set.empty)
+
+ def addDef(s: Symbol, d: Symbol): Unit = _defs = (_defs + {
+ s -> _defs.get(s).map(xs => xs + d).getOrElse(Set(d))
+ })
+}
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala b/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala
index c6e9d6190..806d9d0ae 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/DocASTPhase.scala
@@ -6,7 +6,8 @@ package core
import dotc.ast.Trees._
import dotc.CompilationUnit
import dotc.config.Printers.dottydoc
-import dotc.core.Contexts.{ Context, DocBase }
+import dotc.core.Contexts.Context
+import dotc.core.Comments.ContextDocstrings
import dotc.core.Phases.Phase
import dotc.core.Symbols.{ Symbol, NoSymbol }
diff --git a/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala b/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
index 201640e4a..150a4e08f 100644
--- a/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/core/MiniPhaseTransform.scala
@@ -3,7 +3,8 @@ package dottydoc
package core
import dotc.CompilationUnit
-import dotc.core.Contexts.{ Context, DocBase }
+import dotc.core.Contexts.Context
+import dotc.core.Comments.ContextDocstrings
import dotc.core.Phases.Phase
import model._
import model.internal._
diff --git a/dottydoc/src/dotty/tools/dottydoc/util/syntax.scala b/dottydoc/src/dotty/tools/dottydoc/util/syntax.scala
index 140b3e761..dd3d21f8d 100644
--- a/dottydoc/src/dotty/tools/dottydoc/util/syntax.scala
+++ b/dottydoc/src/dotty/tools/dottydoc/util/syntax.scala
@@ -2,20 +2,15 @@ package dotty.tools
package dottydoc
package util
-import dotc.core.Contexts.{ Context, DocBase }
+import dotc.core.Contexts.Context
+import dotc.core.Comments._
import model.Package
+import core.ContextDottydoc
object syntax {
- implicit class RichDocContext(val ctx: Context) extends AnyVal {
- def docbase: DocBase = ctx.getDocbase getOrElse {
+ implicit class ContextWithContextDottydoc(val ctx: Context) extends AnyVal {
+ def docbase: ContextDottydoc = ctx.docCtx.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]
+ }.asInstanceOf[ContextDottydoc]
}
}
diff --git a/dottydoc/test/BaseTest.scala b/dottydoc/test/BaseTest.scala
index 4dff1d4d1..dff112a7f 100644
--- a/dottydoc/test/BaseTest.scala
+++ b/dottydoc/test/BaseTest.scala
@@ -1,12 +1,12 @@
package dotty.tools
package dottydoc
-import dotc.core.Contexts
-import Contexts.{ Context, ContextBase, FreshContext, DocContext, DocBase }
+import dotc.core.Contexts.{ Context, ContextBase, FreshContext }
+import dotc.core.Comments.{ ContextDoc, ContextDocstrings }
import dotc.util.SourceFile
import dotc.core.Phases.Phase
import dotc.typer.FrontEnd
-import dottydoc.core.DocASTPhase
+import dottydoc.core.{ DocASTPhase, ContextDottydoc }
import model.Package
import dotty.tools.dottydoc.util.syntax._
@@ -20,7 +20,7 @@ trait DottyTest {
ctx.setSetting(ctx.settings.language, List("Scala2"))
ctx.setSetting(ctx.settings.YnoInline, true)
ctx.setSetting(ctx.settings.YkeepComments, true)
- ctx.setProperty(DocContext, new DocBase)
+ ctx.setProperty(ContextDoc, new ContextDottydoc)
base.initialize()(ctx)
ctx
}