Skip to content

Commit c2bad51

Browse files
committed
Pass separate CState in doc-tool
1 parent f678629 commit c2bad51

27 files changed

+171
-163
lines changed

compiler/src/dotty/tools/dotc/typer/FrontEnd.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ class FrontEnd extends Phase {
9191
case _ => NoSymbol
9292
}
9393

94-
protected def discardAfterTyper(unit: CompilationUnit)(using Context, CState): Boolean =
94+
protected def discardAfterTyper(unit: CompilationUnit)(using Context): Boolean =
9595
unit.isJava || unit.suspended
9696

9797
override def runOn(units: List[CompilationUnit])(using Context): List[CompilationUnit] = {

doc-tool/src/dotty/tools/dottydoc/DocCompiler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package dottydoc
33

44
import core._
55
import core.transform._
6-
import dotc.core.Contexts.{Context, ctx}
6+
import dotc.core.Contexts.{Context, CState, ctx}
77
import dotc.core.Phases.Phase
88
import dotc.core.Mode
99
import dotc.{Compiler, CompilationUnit, Run}

doc-tool/src/dotty/tools/dottydoc/DocDriver.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ class DocDriver extends Driver {
3838
override def process(args: Array[String], rootCtx: Context): Reporter = {
3939
val (filesToDocument, ictx) = setup(args, initCtx.fresh)
4040

41-
implicit val ctx: Context = ictx
41+
given Context = ictx
42+
given CState = ctx.cstate
4243
val reporter = doCompile(newCompiler, filesToDocument)
4344

4445
val siteRoot = File(ctx.settings.siteRoot.value)

doc-tool/src/dotty/tools/dottydoc/core/AlternateConstructorsPhase.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package dotty.tools
22
package dottydoc
33
package core
44

5-
import dotc.core.Contexts.{Context, ctx}
5+
import dotc.core.Contexts.{Context, CState, ctx}
66

77
import transform.DocMiniPhase
88
import model._
@@ -22,12 +22,12 @@ class AlternateConstructors extends DocMiniPhase {
2222
(ent.constructors ++ paramLists, members)
2323
}
2424

25-
override def transformClass(using Context) = { case cls: ClassImpl =>
25+
override def transformClass(using Context, CState) = { case cls: ClassImpl =>
2626
val (constructors, members) = partitionMembers(cls)
2727
cls.copy(members = members, constructors = constructors) :: Nil
2828
}
2929

30-
override def transformCaseClass(using Context) = { case cc: CaseClassImpl =>
30+
override def transformCaseClass(using Context, CState) = { case cc: CaseClassImpl =>
3131
val (constructors, members) = partitionMembers(cc)
3232
cc.copy(members = members, constructors = constructors) :: Nil
3333
}

doc-tool/src/dotty/tools/dottydoc/core/ContextDottydoc.scala

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import dotc.core.Comments.ContextDocstrings
99
import model.{ Package, Entity }
1010
import model.comment.Comment
1111

12-
import dotc.core.Contexts.{Context, ctx}
12+
import dotc.core.Contexts.{Context, CState, ctx}
1313
import dotc.printing.Highlighting._
1414
import dotc.printing.Formatting.hl
1515
import dotc.util.{ SourcePosition, NoSourcePosition }
@@ -36,32 +36,34 @@ class ContextDottydoc extends ContextDocstrings {
3636
s -> _defs.get(s).map(xs => xs + d).getOrElse(Set(d))
3737
})
3838

39-
def error(msg: String, pos: SourcePosition)(using Context): Unit = report.error({
39+
def error(msg: String, pos: SourcePosition)(using Context, CState): Unit = report.error({
4040
NoColor("[") + Red("doc error") + "] " + msg
4141
}.toString, pos)
4242

43-
def error(msg: String)(using Context): Unit = error(msg, NoSourcePosition)
43+
def error(msg: String)(using Context, CState): Unit = error(msg, NoSourcePosition)
4444

45-
def warn(msg: String, pos: SourcePosition)(using Context): Unit = report.warning({
46-
NoColor("[") + Yellow("doc warn") + "] " + msg
47-
}.toString, pos)
45+
def warn(msg: String, pos: SourcePosition)(using Context, CState): Unit =
46+
report.warning({
47+
NoColor("[") + Yellow("doc warn") + "] " + msg
48+
}.toString, pos)
4849

49-
def warn(msg: String)(using Context): Unit = warn(msg, NoSourcePosition)
50+
def warn(msg: String)(using Context, CState): Unit = warn(msg, NoSourcePosition)
5051

51-
def echo(msg: String, pos: SourcePosition)(using Context): Unit = report.echo({
52-
"[doc info] " + msg
53-
}.toString, pos)
52+
def echo(msg: String, pos: SourcePosition)(using Context, CState): Unit =
53+
report.echo({
54+
"[doc info] " + msg
55+
}.toString, pos)
5456

55-
def echo(msg: String)(using Context): Unit = echo(msg, NoSourcePosition)
57+
def echo(msg: String)(using Context, CState): Unit = echo(msg, NoSourcePosition)
5658

57-
def debug(msg: String, pos: SourcePosition)(using Context): Unit =
59+
def debug(msg: String, pos: SourcePosition)(using Context, CState): Unit =
5860
if (ctx.settings.Ydebug.value) report.inform({
5961
"[doc debug] " + msg
6062
}.toString, pos)
6163

62-
def debug(msg: String)(using Context): Unit = debug(msg, NoSourcePosition)
64+
def debug(msg: String)(using Context, CState): Unit = debug(msg, NoSourcePosition)
6365

64-
def printSummary()(using Context): Unit = {
66+
def printSummary()(using Context, CState): Unit = {
6567
def colored(part: Int, total: Int) =
6668
if (total == 0) "0"
6769
else {

doc-tool/src/dotty/tools/dottydoc/core/DocASTPhase.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ package core
55
/** Dotty and Dottydoc imports */
66
import dotc.ast.Trees._
77
import dotc.CompilationUnit
8-
import dotc.core.Contexts.{Context, ctx}
8+
import dotc.core.Contexts.{Context, ctx, CState}
99
import dotc.core.Types.PolyType
1010
import dotc.core.Phases.Phase
1111
import dotc.core.Symbols.{ Symbol, NoSymbol }
@@ -25,7 +25,7 @@ class DocASTPhase extends Phase {
2525
def phaseName = "docASTPhase"
2626

2727
/** Build documentation hierarchy from existing tree */
28-
def collect(tree: Tree)(using Context): List[Entity] = {
28+
def collect(tree: Tree)(using Context, CState): List[Entity] = {
2929
val implicitConversions = ctx.docbase.defs(tree.symbol)
3030

3131
def collectList(xs: List[Tree]): List[Entity] =
@@ -34,7 +34,7 @@ class DocASTPhase extends Phase {
3434
def collectEntityMembers(xs: List[Tree]) =
3535
collectList(xs).asInstanceOf[List[Entity with Members]]
3636

37-
def collectMembers(tree: Tree)(using Context): List[Entity] = {
37+
def collectMembers(tree: Tree)(using Context, CState): List[Entity] = {
3838
val defs = tree match {
3939
case t: Template => collectList(t.body)
4040
case _ => Nil
@@ -230,7 +230,8 @@ class DocASTPhase extends Phase {
230230
private[this] var totalRuns = 0
231231
private[this] var currentRun = 0
232232

233-
override def run(using Context): Unit = {
233+
override def run(using Context, CState): Unit = {
234+
given CState = ctx.cstate
234235
currentRun += 1
235236
report.echo(s"Compiling ($currentRun/$totalRuns): ${ctx.compilationUnit.source.file.name}")
236237
collect(ctx.compilationUnit.tpdTree) // Will put packages in `packages` var

doc-tool/src/dotty/tools/dottydoc/core/DocImplicitsPhase.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ package core
44

55
import dotty.tools.dotc.transform.MegaPhase.MiniPhase
66
import dotty.tools.dotc.core.Flags
7-
import dotc.core.Contexts.{Context, ctx}
7+
import dotc.core.Contexts.{Context, CState, ctx}
88
import util.syntax._
99

1010
class DocImplicitsPhase extends MiniPhase {
1111
import dotty.tools.dotc.ast.tpd._
1212

1313
def phaseName = "addImplicitsPhase"
1414

15-
override def transformDefDef(tree: DefDef)(using Context): Tree = {
15+
override def transformDefDef(tree: DefDef)(using Context, CState): Tree = {
16+
given CState = ctx.cstate
1617
if (
1718
tree.symbol.isOneOf(Flags.GivenOrImplicit) && // has to have an implicit flag
1819
tree.symbol.owner.isStaticOwner && // owner has to be static (e.g. top-level `object`)

doc-tool/src/dotty/tools/dottydoc/core/DocstringPhase.scala

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package dotty.tools
22
package dottydoc
33
package core
44

5-
import dotc.core.Contexts.{Context, ctx}
5+
import dotc.core.Contexts.{Context, CState, ctx}
66
import dotc.core.Symbols.Symbol
77
import dotc.core.Comments.{ Comment => CompilerComment }
88
import transform.DocMiniPhase
@@ -14,7 +14,7 @@ import util.syntax._
1414
/** Phase to add docstrings to the Dottydoc AST */
1515
class DocstringPhase extends DocMiniPhase with CommentParser with CommentCleaner {
1616

17-
private def getComment(sym: Symbol)(using Context): Option[CompilerComment] = {
17+
private def getComment(sym: Symbol)(using Context, CState): Option[CompilerComment] = {
1818
ctx.docbase.docstring(sym)
1919
.orElse {
2020
// If the symbol doesn't have a docstring, look for an overridden
@@ -27,7 +27,7 @@ class DocstringPhase extends DocMiniPhase with CommentParser with CommentCleaner
2727
}
2828
}
2929

30-
private def parsedComment(ent: Entity)(using Context): Option[Comment] = {
30+
private def parsedComment(ent: Entity)(using Context, CState): Option[Comment] = {
3131
for {
3232
comment <- getComment(ent.symbol)
3333
text <- comment.expandedBody
@@ -40,35 +40,35 @@ class DocstringPhase extends DocMiniPhase with CommentParser with CommentCleaner
4040
}
4141
}
4242

43-
override def transformPackage(using Context) = { case ent: PackageImpl =>
43+
override def transformPackage(using Context, CState) = { case ent: PackageImpl =>
4444
ent.copy(comment = parsedComment(ent)) :: Nil
4545
}
4646

47-
override def transformClass(using Context) = { case ent: ClassImpl =>
47+
override def transformClass(using Context, CState) = { case ent: ClassImpl =>
4848
ent.copy(comment = parsedComment(ent)) :: Nil
4949
}
5050

51-
override def transformCaseClass(using Context) = { case ent: CaseClassImpl =>
51+
override def transformCaseClass(using Context, CState) = { case ent: CaseClassImpl =>
5252
ent.copy(comment = parsedComment(ent)) :: Nil
5353
}
5454

55-
override def transformTrait(using Context) = { case ent: TraitImpl =>
55+
override def transformTrait(using Context, CState) = { case ent: TraitImpl =>
5656
ent.copy(comment = parsedComment(ent)) :: Nil
5757
}
5858

59-
override def transformObject(using Context) = { case ent: ObjectImpl =>
59+
override def transformObject(using Context, CState) = { case ent: ObjectImpl =>
6060
ent.copy(comment = parsedComment(ent)) :: Nil
6161
}
6262

63-
override def transformDef(using Context) = { case ent: DefImpl =>
63+
override def transformDef(using Context, CState) = { case ent: DefImpl =>
6464
ent.copy(comment = parsedComment(ent)) :: Nil
6565
}
6666

67-
override def transformVal(using Context) = { case ent: ValImpl =>
67+
override def transformVal(using Context, CState) = { case ent: ValImpl =>
6868
ent.copy(comment = parsedComment(ent)) :: Nil
6969
}
7070

71-
override def transformTypeAlias(using Context) = { case ent: TypeAliasImpl =>
71+
override def transformTypeAlias(using Context, CState) = { case ent: TypeAliasImpl =>
7272
ent.copy(comment = parsedComment(ent)) :: Nil
7373
}
7474
}

doc-tool/src/dotty/tools/dottydoc/core/LinkCompanionsPhase.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ package dotty.tools
22
package dottydoc
33
package core
44

5-
import dotc.core.Contexts.{Context, ctx}
5+
import dotc.core.Contexts.{Context, CState, ctx}
66

77
import transform.DocMiniPhase
88
import model.internal._
99
import model._
1010

1111
class LinkCompanions extends DocMiniPhase {
12-
private def linkCompanions(ent: Entity)(using Context): ent.type = {
12+
private def linkCompanions(ent: Entity)(using Context, CState): ent.type = {
1313
ent.children.groupBy(_.name).foreach {
1414
case (_, List(x1: Companion, x2: Companion)) =>
1515
x1.companionPath = x2.path
@@ -20,23 +20,23 @@ class LinkCompanions extends DocMiniPhase {
2020
ent
2121
}
2222

23-
override def transformPackage(using Context) = { case ent: PackageImpl =>
23+
override def transformPackage(using Context, CState) = { case ent: PackageImpl =>
2424
linkCompanions(ent) :: Nil
2525
}
2626

27-
override def transformClass(using Context) = { case ent: ClassImpl =>
27+
override def transformClass(using Context, CState) = { case ent: ClassImpl =>
2828
linkCompanions(ent) :: Nil
2929
}
3030

31-
override def transformCaseClass(using Context) = { case ent: CaseClassImpl =>
31+
override def transformCaseClass(using Context, CState) = { case ent: CaseClassImpl =>
3232
linkCompanions(ent) :: Nil
3333
}
3434

35-
override def transformObject(using Context) = { case ent: ObjectImpl =>
35+
override def transformObject(using Context, CState) = { case ent: ObjectImpl =>
3636
linkCompanions(ent) :: Nil
3737
}
3838

39-
override def transformTrait(using Context) = { case ent: TraitImpl =>
39+
override def transformTrait(using Context, CState) = { case ent: TraitImpl =>
4040
linkCompanions(ent) :: Nil
4141
}
4242
}

doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ package dotty.tools
22
package dottydoc
33
package core
44

5-
import dotc.core.Contexts.{Context, ctx}
5+
import dotc.core.Contexts.{Context, CState, ctx}
66
import model._
77
import model.internal._
88
import transform.DocMiniPhase
99

1010
class PackageObjectsPhase extends DocMiniPhase {
1111

12-
override def transformPackage(using Context) = { case pkg: PackageImpl =>
12+
override def transformPackage(using Context, CState) = { case pkg: PackageImpl =>
1313
pkg
1414
.members
1515
.collectFirst { case o: Object if o.symbol.isPackageObject => o }
@@ -23,7 +23,7 @@ class PackageObjectsPhase extends DocMiniPhase {
2323
.getOrElse(pkg) :: Nil
2424
}
2525

26-
override def transformObject(using Context) = { case obj: Object =>
26+
override def transformObject(using Context, CState) = { case obj: Object =>
2727
if (obj.symbol.isPackageObject) Nil
2828
else obj :: Nil
2929
}

doc-tool/src/dotty/tools/dottydoc/core/RemoveEmptyPackagesPhase.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package dotty.tools
22
package dottydoc
33
package core
44

5-
import dotc.core.Contexts.{Context, ctx}
5+
import dotc.core.Contexts.{Context, CState, ctx}
66

77
import transform.DocMiniPhase
88
import model._
99

1010
class RemoveEmptyPackages extends DocMiniPhase {
11-
override def transformPackage(using Context) = { case p: Package =>
11+
override def transformPackage(using Context, CState) = { case p: Package =>
1212
if (p.members.exists(_.kind != "package")) p :: Nil
1313
else Nil
1414
}

doc-tool/src/dotty/tools/dottydoc/core/SortMembersPhase.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package dotty.tools
22
package dottydoc
33
package core
44

5-
import dotc.core.Contexts.{Context, ctx}
5+
import dotc.core.Contexts.{Context, CState, ctx}
66

77
import transform.DocMiniPhase
88
import model._
@@ -33,23 +33,23 @@ class SortMembers extends DocMiniPhase {
3333
pkgs ++ nested ++ typs ++ vals ++ defs
3434
}
3535

36-
override def transformPackage(using Context) = { case p: PackageImpl =>
36+
override def transformPackage(using Context, CState) = { case p: PackageImpl =>
3737
p.copy(members = sort(p.members)) :: Nil
3838
}
3939

40-
override def transformClass(using Context) = { case c: ClassImpl =>
40+
override def transformClass(using Context, CState) = { case c: ClassImpl =>
4141
c.copy(members = sort(c.members)) :: Nil
4242
}
4343

44-
override def transformCaseClass(using Context) = { case cc: CaseClassImpl =>
44+
override def transformCaseClass(using Context, CState) = { case cc: CaseClassImpl =>
4545
cc.copy(members = sort(cc.members)) :: Nil
4646
}
4747

48-
override def transformTrait(using Context) = { case t: TraitImpl =>
48+
override def transformTrait(using Context, CState) = { case t: TraitImpl =>
4949
t.copy(members = sort(t.members)) :: Nil
5050
}
5151

52-
override def transformObject(using Context) = { case o: ObjectImpl =>
52+
override def transformObject(using Context, CState) = { case o: ObjectImpl =>
5353
o.copy(members = sort(o.members)) :: Nil
5454
}
5555
}

0 commit comments

Comments
 (0)