Skip to content

Commit 01dacd4

Browse files
committed
Review CRs 2
1 parent ac9beef commit 01dacd4

File tree

8 files changed

+52
-40
lines changed

8 files changed

+52
-40
lines changed

dist/bin/scaladoc

-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ eval "\"$JAVACMD\"" \
127127
${JAVA_OPTS:-$default_java_opts} \
128128
"${java_args[@]}" \
129129
"${jvm_cp_args-}" \
130-
-Dscala.usejavacp=true \
131130
"dotty.tools.scaladoc.Main" \
132131
"${scala_args[@]}" \
133132
"${residual_args[@]}" \

project/Build.scala

+5-2
Original file line numberDiff line numberDiff line change
@@ -1309,7 +1309,8 @@ object Build {
13091309
generateSelfDocumentation := Def.taskDyn {
13101310
generateDocumentation(
13111311
(Compile / classDirectory).value.getAbsolutePath :: Nil,
1312-
"scaladoc", "scaladoc/output/self", VersionUtil.gitHash
1312+
"scaladoc", "scaladoc/output/self", VersionUtil.gitHash,
1313+
Seq("-usejavacp")
13131314
)
13141315
}.value,
13151316
generateScalaDocumentation := Def.inputTaskDyn {
@@ -1358,7 +1359,9 @@ object Build {
13581359
(Test / Build.testcasesOutputDir).value,
13591360
"scaladoc testcases",
13601361
"scaladoc/output/testcases",
1361-
"master")
1362+
"master",
1363+
Seq("-usejavacp")
1364+
)
13621365
}.value,
13631366

13641367
Test / buildInfoKeys := Seq[BuildInfoKey](

scaladoc/src/dotty/tools/scaladoc/DocContext.scala

+1-7
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,7 @@ case class DocContext(args: Scaladoc.Args, compilerContext: CompilerContext):
7676

7777
lazy val snippetCompilerArgs = snippets.SnippetCompilerArgs.load(args.snippetCompiler, args.snippetCompilerDebug)(using compilerContext)
7878

79-
lazy val snippetChecker = snippets.SnippetChecker(
80-
args.classpath,
81-
args.bootclasspath,
82-
args.tastyFiles,
83-
compilerContext.settings.scalajs.value(using compilerContext),
84-
compilerContext.settings.usejavacp.value(using compilerContext)
85-
)
79+
lazy val snippetChecker = snippets.SnippetChecker(args)(using compilerContext)
8680

8781
lazy val staticSiteContext = args.docsRoot.map(path => StaticSiteContext(
8882
File(path).getAbsoluteFile(),

scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import dotty.tools.dotc.core.Contexts._
1919
class ScaladocSettings extends SettingGroup with AllScalaSettings:
2020
val unsupportedSettings = Seq(
2121
// Options that we like to support
22-
extdirs, javabootclasspath, encoding, usejavacp,
22+
extdirs, javabootclasspath, encoding,
2323
// Needed for plugin architecture
2424
plugin,disable,require, pluginsDir, pluginOptions,
2525
// we need support for sourcepath and sourceroot

scaladoc/src/dotty/tools/scaladoc/snippets/SnippetChecker.scala

+11-10
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,28 @@ import java.io.File
77

88
import dotty.tools.io.AbstractFile
99
import dotty.tools.dotc.fromtasty.TastyFileUtil
10+
import dotty.tools.dotc.config.Settings._
11+
import dotty.tools.dotc.config.ScalaSettings
1012

11-
class SnippetChecker(val classpath: String, val bootclasspath: String, val tastyFiles: Seq[File], isScalajs: Boolean, useJavaCp: Boolean):
13+
class SnippetChecker(val args: Scaladoc.Args)(using cctx: CompilerContext):
14+
15+
// (val classpath: String, val bootclasspath: String, val tastyFiles: Seq[File], isScalajs: Boolean, useJavaCp: Boolean):
1216
private val sep = System.getProperty("path.separator")
1317

1418
private val fullClasspath = List(
15-
tastyFiles
19+
args.tastyFiles
1620
.map(_.getAbsolutePath())
1721
.map(AbstractFile.getFile(_))
1822
.flatMap(t => try { TastyFileUtil.getClassPath(t) } catch { case e: AssertionError => Seq() })
1923
.distinct.mkString(sep),
20-
classpath
24+
args.classpath
2125
).mkString(sep)
2226

23-
private val scalacOptions = Seq(
24-
Option.when(!fullClasspath.isEmpty)("-cp " + fullClasspath),
25-
Option.when(!bootclasspath.isEmpty)("-bootclasspath " + bootclasspath),
26-
Option.when(isScalajs)("-scalajs"),
27-
Option.when(useJavaCp)("-usejavacp")
28-
).flatten.mkString(" ")
27+
private val snippetCompilerSettings: Seq[SnippetCompilerSetting[_]] = cctx.settings.userSetSettings(cctx.settingsState).filter(_ != cctx.settings.classpath).map( s =>
28+
SnippetCompilerSetting(s, s.valueIn(cctx.settingsState))
29+
) :+ SnippetCompilerSetting(cctx.settings.classpath, fullClasspath)
2930

30-
private val compiler: SnippetCompiler = SnippetCompiler(scalacOptions = scalacOptions)
31+
private val compiler: SnippetCompiler = SnippetCompiler(snippetCompilerSettings = snippetCompilerSettings)
3132

3233
// These constants were found empirically to make snippet compiler
3334
// report errors in the same position as main compiler.

scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompiler.scala

+25-18
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ package dotty.tools.scaladoc
22
package snippets
33

44
import dotty.tools.io.{AbstractFile, VirtualDirectory}
5-
import dotty.tools.dotc.interactive.InteractiveDriver
6-
import dotty.tools.dotc.interactive.Interactive
7-
import dotty.tools.dotc.interactive.InteractiveCompiler
5+
import dotty.tools.dotc.Driver
86
import dotty.tools.dotc.core.Contexts.Context
7+
import dotty.tools.dotc.core.Mode
98
import dotty.tools.dotc.config.Settings.Setting._
109
import dotty.tools.dotc.interfaces.SourcePosition
1110
import dotty.tools.dotc.ast.Trees.Tree
@@ -21,21 +20,29 @@ import dotty.tools.dotc.interfaces.Diagnostic._
2120
import scala.util.{ Try, Success, Failure }
2221

2322
class SnippetCompiler(
24-
val scalacOptions: String,
23+
val snippetCompilerSettings: Seq[SnippetCompilerSetting[_]],
24+
val scalacOptions: String = "",
2525
target: AbstractFile = new VirtualDirectory("(memory)")
2626
):
27-
28-
private def newDriver: InteractiveDriver = {
29-
val defaultFlags =
30-
List("-color:never", "-unchecked", "-deprecation", "-Ximport-suggestion-timeout", "0")
31-
val options = scalacOptions.split("\\s+").toList
32-
val settings =
33-
options ::: defaultFlags ::: Nil
34-
35-
new InteractiveDriver(settings)
36-
}
37-
38-
private val driver = newDriver
27+
object SnippetDriver extends Driver:
28+
val currentCtx =
29+
val rootCtx = initCtx.fresh.addMode(Mode.ReadPositions).addMode(Mode.Interactive)
30+
rootCtx.setSetting(rootCtx.settings.YretainTrees, true)
31+
rootCtx.setSetting(rootCtx.settings.YcookComments, true)
32+
rootCtx.setSetting(rootCtx.settings.YreadComments, true)
33+
val defaultFlags =
34+
List("-color:never", "-unchecked", "-deprecation", "-Ximport-suggestion-timeout", "0")
35+
val options = scalacOptions.split("\\s+").toList
36+
val settings = options ::: defaultFlags ::: Nil
37+
val ctx = setup(settings.toArray, rootCtx) match
38+
case Some((_, ctx)) =>
39+
ctx
40+
case None => rootCtx
41+
val res = snippetCompilerSettings.foldLeft(ctx.fresh) { (ctx, setting) =>
42+
ctx.setSetting(setting.setting, setting.value)
43+
}
44+
res.initialize()(using res)
45+
res
3946

4047
private val scala3Compiler = new Compiler
4148

@@ -85,9 +92,9 @@ class SnippetCompiler(
8592
wrappedSnippet: WrappedSnippet,
8693
arg: SnippetCompilerArg
8794
): SnippetCompilationResult = {
88-
val context = driver.currentCtx.fresh
95+
val context = SnippetDriver.currentCtx.fresh
8996
.setSetting(
90-
driver.currentCtx.settings.outputDir,
97+
SnippetDriver.currentCtx.settings.outputDir,
9198
target
9299
)
93100
.setReporter(new StoreReporter)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package dotty.tools.scaladoc
2+
package snippets
3+
4+
import dotty.tools.scaladoc.DocContext
5+
import dotty.tools.dotc.config.Settings._
6+
import dotty.tools.dotc.config.ScalaSettings
7+
8+
case class SnippetCompilerSetting[T](setting: Setting[T], value: T)

scaladoc/test/dotty/tools/scaladoc/snippets/SnippetCompilerTest.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import org.junit.Assert._
66
import dotty.tools.io.{AbstractFile, VirtualDirectory}
77

88
class SnippetCompilerTest {
9-
val compiler = SnippetCompiler("-usejavacp")
9+
val compiler = SnippetCompiler(Seq(), " -usejavacp")
1010
def wrapFn: String => WrappedSnippet = (str: String) => WrappedSnippet(
1111
str,
1212
Some("test"),

0 commit comments

Comments
 (0)