@@ -11,6 +11,8 @@ import scala.util.control.NonFatal
11
11
import scala .collection .mutable
12
12
import scala .jdk .CollectionConverters ._
13
13
14
+ import javax .tools .ToolProvider
15
+
14
16
import org .junit .Assert ._
15
17
import org .junit .Test
16
18
import org .junit .experimental .categories .Category
@@ -25,11 +27,12 @@ import dotty.tools.dotc.util.SourceFile
25
27
26
28
@ Category (Array (classOf [BootstrappedOnlyTests ]))
27
29
class SemanticdbTests with
30
+ val javaFile = FileSystems .getDefault.getPathMatcher(" glob:**.java" )
28
31
val scalaFile = FileSystems .getDefault.getPathMatcher(" glob:**.scala" )
29
32
val expectFile = FileSystems .getDefault.getPathMatcher(" glob:**.expect.scala" )
30
- // val semanticdbFile = FileSystems.getDefault.getPathMatcher("glob:**.scala.semanticdb")
31
33
val rootSrc = Paths .get(System .getProperty(" dotty.tools.dotc.semanticdb.test" ))
32
34
val expectSrc = rootSrc.resolve(" expect" )
35
+ val javaRoot = rootSrc.resolve(" javacp" )
33
36
val metacExpectFile = rootSrc.resolve(" metac.expect" )
34
37
35
38
@ Category (Array (classOf [dotty.SlowTests ]))
@@ -87,8 +90,20 @@ class SemanticdbTests with
87
90
require(files.nonEmpty, s " No input files! $expectSrc" )
88
91
files.toList
89
92
93
+ def javaFiles (): List [Path ] =
94
+ val ls = Files .walk(javaRoot)
95
+ val files =
96
+ try ls.filter(p => javaFile.matches(p)).collect(Collectors .toList).asScala
97
+ finally ls.close()
98
+ require(files.nonEmpty, s " No input files! $expectSrc" )
99
+ files.toList
100
+
90
101
def generateSemanticdb (): Path =
91
102
val target = Files .createTempDirectory(" semanticdb" )
103
+ val javaArgs = Array (" -d" , target.toString) ++ javaFiles().map(_.toString)
104
+ val javac = ToolProvider .getSystemJavaCompiler
105
+ val exitJava = javac.run(null , null , null , javaArgs:_* )
106
+ assert(exitJava == 0 , " java compiler has errors" )
92
107
val args = Array (
93
108
" -Ysemanticdb" ,
94
109
" -d" , target.toString,
@@ -97,7 +112,8 @@ class SemanticdbTests with
97
112
// "-Ydebug-flags",
98
113
// "-Xprint:extractSemanticDB",
99
114
" -sourceroot" , expectSrc.toString,
100
- " -usejavacp" ,
115
+ " -classpath" , target.toString,
116
+ " -usejavacp"
101
117
) ++ inputFiles().map(_.toString)
102
118
val exit = Main .process(args)
103
119
assertFalse(s " dotc errors: ${exit.errorCount}" , exit.hasErrors)
0 commit comments