Skip to content

Commit aba505b

Browse files
committed
Introduce DocContext and use it in TastyInspector
1 parent e226aa8 commit aba505b

File tree

6 files changed

+22
-17
lines changed

6 files changed

+22
-17
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package dotty.dokka
2+
3+
import dotty.tools.dotc.core.Contexts._
4+
5+
type DocContext = Context

scala3doc/src/dotty/dokka/DottyDokkaConfig.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import java.io.File
66
import collection.JavaConverters._
77
import dotty.dokka.site.StaticSiteContext
88

9-
case class DottyDokkaConfig(args: Scala3doc.Args) extends DokkaConfiguration:
9+
case class DottyDokkaConfig(args: Scala3doc.Args, docContext: DocContext) extends DokkaConfiguration:
1010
override def getOutputDir: File = args.output
1111
override def getCacheRoot: File = null
1212
override def getOfflineMode: Boolean = false

scala3doc/src/dotty/dokka/DottyDokkaPlugin.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class DottyDokkaPlugin extends DokkaJavaPlugin:
4949
// Just turn off another translator since multiple overrides does not work
5050
val disableDescriptorTranslator = extend(
5151
_.extensionPoint(CoreExtensions.INSTANCE.getSourceToDocumentableTranslator)
52-
.fromInstance(ScalaModuleProvider)
52+
.fromRecipe(ctx => new ScalaModuleProvider(using ctx.docContext))
5353
.overrideExtension(dokkaBase.getDescriptorToDocumentableTranslator)
5454
.name("disableDescriptorTranslator")
5555
)
@@ -173,6 +173,7 @@ class DottyDokkaPlugin extends DokkaJavaPlugin:
173173
extension (ctx: DokkaContext):
174174
def siteContext: Option[StaticSiteContext] = ctx.getConfiguration.asInstanceOf[DottyDokkaConfig].staticSiteContext
175175
def args: Scala3doc.Args = ctx.getConfiguration.asInstanceOf[DottyDokkaConfig].args
176+
def docContext = ctx.getConfiguration.asInstanceOf[DottyDokkaConfig].docContext
176177

177178
// TODO (https://github.com/lampepfl/scala3doc/issues/232): remove once problem is fixed in Dokka
178179
extension [T] (builder: ExtensionBuilder[T]):

scala3doc/src/dotty/dokka/Scala3doc.scala

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,14 @@ import java.util.jar._
99
import collection.JavaConverters._
1010
import collection.immutable.ArraySeq
1111

12-
import scala.tasty.inspector.TastyInspector
1312
import java.nio.file.Files
1413

1514
import dotty.tools.dotc.config.Settings._
1615
import dotty.tools.dotc.config.CommonScalaSettings
1716
import dotty.tools.dotc.report
18-
import dotty.tools.dotc.core.Contexts._
1917
import dotty.tools.dotc.reporting.Reporter
2018

21-
class Scala3DocDokkaLogger(using Context) extends DokkaLogger:
19+
class Scala3DocDokkaLogger(using DocContext) extends DokkaLogger:
2220
def debug(msg: String): Unit = report.debuglog(msg)
2321

2422
// We do not want errors from dokka (that are) not critical to fail our runs
@@ -66,7 +64,7 @@ object Scala3doc:
6664
revision: Option[String] = None
6765
)
6866

69-
def run(args: Array[String])(using Context): Reporter =
67+
def run(args: Array[String])(using DocContext): Reporter =
7068
val parsedArgs = Scala3docArgs.extract(args.toList)
7169

7270
def listTastyFiles(f: File): Seq[File] =
@@ -76,7 +74,7 @@ object Scala3doc:
7674
)
7775
val tastyFiles = parsedArgs.tastyFiles ++ parsedArgs.tastyDirs.flatMap(listTastyFiles)
7876

79-
val reporter = summon[Context].reporter
77+
val reporter = summon[DocContext].reporter
8078
if !reporter.hasErrors then
8179
val updatedArgs = parsedArgs.copy(tastyDirs = Nil, tastyFiles = tastyFiles)
8280

@@ -87,7 +85,7 @@ object Scala3doc:
8785
else report.error("Failure")
8886
reporter
8987

90-
private [dokka] def run(args: Args, logger: DokkaLogger = DokkaConsoleLogger.INSTANCE) =
91-
new DokkaGenerator(new DottyDokkaConfig(args), logger).generate()
88+
private [dokka] def run(args: Args, logger: DokkaLogger = DokkaConsoleLogger.INSTANCE)(using DocContext) =
89+
new DokkaGenerator(new DottyDokkaConfig(args, summon[DocContext]), logger).generate()
9290

9391

scala3doc/src/dotty/dokka/ScalaModuleCreator.scala

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,14 @@ import org.jetbrains.dokka.model._
1313
import org.jetbrains.dokka.base.parsers.MarkdownParser
1414
import collection.JavaConverters._
1515
import kotlin.coroutines.Continuation
16+
import dotty.tools.dotc.core.Contexts._
1617

17-
object ScalaModuleProvider extends SourceToDocumentableTranslator:
18+
class ScalaModuleProvider(using DocContext) extends SourceToDocumentableTranslator:
1819
override def invoke(sourceSet: DokkaSourceSet, cxt: DokkaContext, unused: Continuation[? >: DModule]) =
1920
cxt.getConfiguration match
2021
case dottyConfig: DottyDokkaConfig =>
2122
val parser = new MarkdownParser(_ => null)
22-
val inspector = DokkaTastyInspector(sourceSet, parser, dottyConfig)
23-
val filePaths = dottyConfig.args.tastyFiles.map(_.getAbsolutePath)
24-
val (tastyFiles, jars) = filePaths.toList.partition(_.endsWith(".tasty"))
25-
val classpath = dottyConfig.args.classpath.split(java.io.File.pathSeparator).toList
26-
27-
inspector.inspectAllTastyFiles(tastyFiles, jars, classpath)
28-
val result = inspector.result()
23+
val result = DokkaTastyInspector(sourceSet, parser, dottyConfig).result()
2924

3025
def flattenMember(m: Member): Seq[(DRI, Member)] = (m.dri -> m) +: m.allMembers.flatMap(flattenMember)
3126

scala3doc/src/dotty/dokka/tasty/TastyParser.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ case class DokkaTastyInspector(sourceSet: SourceSetWrapper, parser: Parser, conf
4343
topLevels ++= parser.parseRootTree(root.asInstanceOf[parser.qctx.reflect.Tree])
4444

4545
def result(): List[DPackage] =
46+
topLevels.clear()
47+
val filePaths = config.args.tastyFiles.map(_.getAbsolutePath).toList
48+
val classpath = config.args.classpath.split(java.io.File.pathSeparator).toList
49+
50+
inspectFilesInContext(classpath, filePaths)(using config.docContext)
51+
4652
val all = topLevels.result()
4753
val packages = all
4854
.filter(_.isInstanceOf[DPackage])

0 commit comments

Comments
 (0)