11// Copy of tasty-inspector/src/scala/tasty/inspector/TastyInspector.scala
22// FIXME remove this copy of the file
3+ // Since copying, an inspectAllTastyFilesInContext ,ethod was added for scaladoc only
4+ // to fix regressions introduced by the switch from old to a new TastyInspector
35
46package scala .tasty .inspector
57
@@ -41,6 +43,32 @@ object TastyInspector:
4143 def inspectTastyFilesInJar (jar : String )(inspector : Inspector ): Boolean =
4244 inspectAllTastyFiles(Nil , List (jar), Nil )(inspector)
4345
46+ private def checkFiles (tastyFiles : List [String ], jars : List [String ]): Unit =
47+ def checkFile (fileName : String , ext : String ): Unit =
48+ val file = dotty.tools.io.Path (fileName)
49+ if ! file.ext.toLowerCase.equalsIgnoreCase(ext) then
50+ throw new IllegalArgumentException (s " File extension is not `. $ext`: $file" )
51+ else if ! file.exists then
52+ throw new IllegalArgumentException (s " File not found: ${file.toAbsolute}" )
53+ tastyFiles.foreach(checkFile(_, " tasty" ))
54+ jars.foreach(checkFile(_, " jar" ))
55+
56+ /**
57+ * Added for Scaladoc-only.
58+ * Meant to fix regressions introduces by the switch from old to new TastyInspector:
59+ * https://github.com/scala/scala3/issues/18231
60+ * https://github.com/scala/scala3/issues/20476
61+ * Stable TastyInspector API does not support passing compiler context.
62+ */
63+ def inspectAllTastyFilesInContext (tastyFiles : List [String ], jars : List [String ], dependenciesClasspath : List [String ])(inspector : Inspector )(using Context ): Boolean =
64+ checkFiles(tastyFiles, jars)
65+ val classes = tastyFiles ::: jars
66+ classes match
67+ case Nil => true
68+ case _ =>
69+ val reporter = inspectorDriver(inspector).process(inspectorArgs(dependenciesClasspath, classes), summon[Context ])
70+ ! reporter.hasErrors
71+
4472 /** Load and process TASTy files using TASTy reflect
4573 *
4674 * @param tastyFiles List of paths of `.tasty` files
@@ -50,14 +78,7 @@ object TastyInspector:
5078 * @return boolean value indicating whether the process succeeded
5179 */
5280 def inspectAllTastyFiles (tastyFiles : List [String ], jars : List [String ], dependenciesClasspath : List [String ])(inspector : Inspector ): Boolean =
53- def checkFile (fileName : String , ext : String ): Unit =
54- val file = dotty.tools.io.Path (fileName)
55- if ! file.ext.toLowerCase.equalsIgnoreCase(ext) then
56- throw new IllegalArgumentException (s " File extension is not `. $ext`: $file" )
57- else if ! file.exists then
58- throw new IllegalArgumentException (s " File not found: ${file.toAbsolute}" )
59- tastyFiles.foreach(checkFile(_, " tasty" ))
60- jars.foreach(checkFile(_, " jar" ))
81+ checkFiles(tastyFiles, jars)
6182 val files = tastyFiles ::: jars
6283 inspectFiles(dependenciesClasspath, files)(inspector)
6384
0 commit comments