Skip to content

Commit b135490

Browse files
committed
Correctly handle default scalac arguments
1 parent 84a0c6b commit b135490

File tree

7 files changed

+30
-15
lines changed

7 files changed

+30
-15
lines changed

scala3doc/src/dotty/dokka/Main.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ object Main:
3030
def main(args: Array[String]): Unit =
3131
try
3232
// We should create our own context here...
33-
val reporter = Scala3doc.run(args)(using (new ContextBase).initialCtx)
33+
val reporter = Scala3doc.run(args, (new ContextBase).initialCtx)
3434
// Sometimes jvm is hanging, so we want to be sure that we force shout down the jvm
3535
sys.exit(if reporter.hasErrors then 1 else 0)
3636
catch

scala3doc/src/dotty/dokka/Scala3doc.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ object Scala3doc:
6767
revision: Option[String] = None
6868
)
6969

70-
def run(args: Array[String])(using ctx: CompilerContext): Reporter =
71-
val parsedArgs = Scala3docArgs.extract(args.toList)
70+
def run(args: Array[String], rootContext: CompilerContext): Reporter =
71+
val (parsedArgs, ctx) = Scala3docArgs.extract(args.toList, rootContext)
72+
given CompilerContext = ctx
7273

7374
def listTastyFiles(f: File): Seq[File] =
7475
val (files, dirs) = Option(f.listFiles()).toArray.flatten.partition(_.isFile)

scala3doc/src/dotty/dokka/Scala3docArgs.scala

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,17 @@ class Scala3docArgs extends SettingGroup with CommonScalaSettings:
3434
val revision: Setting[String] =
3535
StringSetting("-revision", "revision", "Revision (branch or ref) used to build project project", "")
3636

37+
def scala3docSpecificSettings: Set[Setting[_]] = Set(sourceLinks, syntax, revision)
38+
3739
object Scala3docArgs:
38-
def extract(args: List[String])(using CompilerContext) =
40+
def extract(args: List[String], rootCtx: CompilerContext):(Scala3doc.Args, CompilerContext) =
3941
val inst = new Scala3docArgs
4042
import inst._
4143
val initialSummary =
4244
ArgsSummary(defaultState, args, errors = Nil, warnings = Nil)
4345
val summary =
4446
processArguments(initialSummary, processAll = true, skipped = Nil)
45-
46-
summary.warnings.foreach(report.warning(_))
47-
summary.errors.foreach(report.error(_))
47+
val newContext = rootCtx.fresh
4848

4949
extension[T](arg: Setting[T]):
5050
def get = arg.valueIn(summary.sstate)
@@ -53,6 +53,19 @@ object Scala3docArgs:
5353
def nonDefault =
5454
if arg.get == arg.default then None else Some(arg.get)
5555

56+
def setInGlobal[T](s: Setting[T]) =
57+
s.nonDefault.foreach { newValue =>
58+
newContext.settings.allSettings.find(_ == s).fold(
59+
report.warning(s"Unable to set ${s.name} in global context")
60+
)(s => newContext.setSetting(s.asInstanceOf[Setting[T]], newValue))
61+
}
62+
63+
allSettings.filterNot(scala3docSpecificSettings.contains).foreach(setInGlobal)
64+
65+
given CompilerContext = newContext
66+
summary.warnings.foreach(report.warning(_))
67+
summary.errors.foreach(report.error(_))
68+
5669
def parseTastyRoots(roots: String) =
5770
roots.split(File.pathSeparatorChar).toList.map(new File(_))
5871

@@ -91,7 +104,7 @@ object Scala3docArgs:
91104
report.inform(
92105
s"Generating documenation $printableProjectName in $destFile")
93106

94-
Args(
107+
val docArgs = Args(
95108
projectName.withDefault("root"),
96109
dirs,
97110
validFiles,
@@ -103,4 +116,5 @@ object Scala3docArgs:
103116
parseSyntax,
104117
sourceLinks.nonDefault.fold(Nil)(_.split(",").toList),
105118
revision.nonDefault
106-
)
119+
)
120+
(docArgs, newContext)

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,18 +107,18 @@ case class TastyParser(qctx: Quotes, inspector: DokkaTastyInspector)(using val c
107107

108108
def processTree[T](tree: Tree)(op: => T): Option[T] = try Option(op) catch
109109
case e: Exception =>
110-
report.error(throwableToString(e), tree.pos)
110+
report.warning(throwableToString(e), tree.pos)
111111
None
112112
def processTreeOpt[T](tree: Tree)(op: => Option[T]): Option[T] = try op catch
113113
case e: Exception =>
114-
report.error(throwableToString(e), tree.pos)
114+
report.warning(throwableToString(e), tree.pos)
115115
None
116116

117117
def processSymbol[T](sym: Symbol)(op: => T): Option[T] = try Option(op) catch
118118
case t: Throwable =>
119-
try report.error(throwableToString(t), sym.tree.pos) catch
119+
try report.warning(throwableToString(t), sym.tree.pos) catch
120120
case _: Throwable =>
121-
report.error(s"Failed to process ${sym.show}:\n${throwableToString(t)}")
121+
report.warning(s"Failed to process ${sym.show}:\n${throwableToString(t)}")
122122
None
123123

124124
def parseRootTree(root: Tree): Seq[Documentable] =

scala3doc/src/dotty/renderers/ScalaHtmlRenderer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ class ScalaHtmlRenderer(using ctx: DokkaContext) extends HtmlRenderer(ctx) {
265265
.flatMap(dri => Option(getLocationProvider.resolve(dri, sourceSets, page)))
266266
.map(_ + prefix)
267267
.getOrElse {
268-
println(s"[WARN] ${prc.template.file}: Unable to resolve link '$str'")
268+
report.warn(s"Unable to resolve link '$str'", prc.template.file)
269269
str
270270
}
271271

scala3doc/src/dotty/tools/dottydoc/Main.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ object Main extends Driver:
2222
* how they're split).
2323
*/
2424
override def process(args: Array[String], rootCtx: Context): Reporter =
25-
dotty.dokka.Scala3doc.run(args)(using rootCtx)
25+
dotty.dokka.Scala3doc.run(args, rootCtx)

0 commit comments

Comments
 (0)