diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-09-21 15:02:30 +0200 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-10-06 17:45:39 +0200 |
commit | 92536168e9fda4005a8eff54e5ca72cc70fb32e4 (patch) | |
tree | 285d92137cc5c33a0dba3b352b6fa252ed57ce13 /dottydoc | |
parent | 208232aba52903ae090711589e9c572dc5347651 (diff) | |
download | dotty-92536168e9fda4005a8eff54e5ca72cc70fb32e4.tar.gz dotty-92536168e9fda4005a8eff54e5ca72cc70fb32e4.tar.bz2 dotty-92536168e9fda4005a8eff54e5ca72cc70fb32e4.zip |
Separate `ContextDocstrings` from `Context` and make it pluggable
Diffstat (limited to 'dottydoc')
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 } |