@@ -11,6 +11,7 @@ import scala.tools.nsc.plugins.PluginComponent
11
11
import scala .tools .nsc .transform .Transform
12
12
import scala .tools .nsc .transform .TypingTransformers
13
13
14
+ import buildinfo .BuildInfo
14
15
import scoverage .reporter .IOUtils
15
16
16
17
private [scoverage] object ScoverageCompiler {
@@ -24,9 +25,17 @@ private[scoverage] object ScoverageCompiler {
24
25
def classPath : Seq [String ] =
25
26
getScalaJars.map(
26
27
_.getAbsolutePath
27
- ) :+ sbtCompileDir.getAbsolutePath :+ runtimeClasses.getAbsolutePath
28
+ ) :+ sbtCompileDir.getAbsolutePath :+ runtimeClasses( " jvm " ) .getAbsolutePath
28
29
29
- def settings : Settings = {
30
+ def jsClassPath : Seq [String ] =
31
+ getScalaJsJars.map(
32
+ _.getAbsolutePath
33
+ ) :+ sbtCompileDir.getAbsolutePath :+ runtimeClasses(" js" ).getAbsolutePath
34
+
35
+ def settings : Settings = settings(classPath)
36
+ def jsSettings : Settings = settings(jsClassPath)
37
+
38
+ def settings (classPath : Seq [String ]): Settings = {
30
39
val s = new scala.tools.nsc.Settings
31
40
s.Xprint .value = List (" all" , " _" )
32
41
s.deprecation.value = true
@@ -46,6 +55,11 @@ private[scoverage] object ScoverageCompiler {
46
55
new ScoverageCompiler (settings, reporter)
47
56
}
48
57
58
+ def defaultScalaJs : ScoverageCompiler = {
59
+ val reporter = new scala.tools.nsc.reporters.ConsoleReporter (jsSettings)
60
+ new ScoverageCompiler (jsSettings, reporter)
61
+ }
62
+
49
63
def locationCompiler : LocationCompiler = {
50
64
val reporter = new scala.tools.nsc.reporters.ConsoleReporter (settings)
51
65
new LocationCompiler (settings, reporter)
@@ -56,6 +70,23 @@ private[scoverage] object ScoverageCompiler {
56
70
scalaJars.map(findScalaJar)
57
71
}
58
72
73
+ private def getScalaJsJars : List [File ] = {
74
+ List (
75
+ findJar(" org.scala-lang" , " scala-compiler" , ScalaVersion ),
76
+ findJar(" org.scala-lang" , " scala-reflect" , ScalaVersion ),
77
+ findJar(
78
+ " org.scala-js" ,
79
+ s " scalajs-compiler_ $ScalaVersion" ,
80
+ BuildInfo .scalaJSVersion
81
+ ),
82
+ findJar(
83
+ " org.scala-js" ,
84
+ s " scalajs-library_ $ScalaVersion" ,
85
+ BuildInfo .scalaJSVersion
86
+ )
87
+ )
88
+ }
89
+
59
90
private def sbtCompileDir : File = {
60
91
val dir = new File (
61
92
s " ./plugin/target/scala- $ScalaVersion/classes "
@@ -67,20 +98,28 @@ private[scoverage] object ScoverageCompiler {
67
98
dir
68
99
}
69
100
70
- private def runtimeClasses : File = new File (
71
- s " ./runtime/jvm /target/scala- $ScalaVersion/classes "
101
+ private def runtimeClasses ( platform : String ) : File = new File (
102
+ s " ./runtime/ $platform /target/scala- $ScalaVersion/classes "
72
103
)
73
104
74
105
private def findScalaJar (artifactId : String ): File =
75
- findIvyJar(" org.scala-lang" , artifactId, ScalaVersion )
76
- .orElse(findCoursierJar(artifactId, ScalaVersion ))
106
+ findJar(" org.scala-lang" , artifactId, ScalaVersion )
107
+
108
+ private def findJar (
109
+ groupId : String ,
110
+ artifactId : String ,
111
+ version : String
112
+ ): File =
113
+ findIvyJar(groupId, artifactId, version)
114
+ .orElse(findCoursierJar(groupId, artifactId, version))
77
115
.getOrElse {
78
116
throw new FileNotFoundException (
79
- s " Could not locate $artifactId/ $ScalaVersion "
117
+ s " Could not locate $groupId : $ artifactId: $version "
80
118
)
81
119
}
82
120
83
121
private def findCoursierJar (
122
+ groupId : String ,
84
123
artifactId : String ,
85
124
version : String
86
125
): Option [File ] = {
@@ -89,9 +128,10 @@ private[scoverage] object ScoverageCompiler {
89
128
" .cache/coursier" , // Linux
90
129
" Library/Caches/Coursier" , // MacOSX
91
130
" AppData/Local/Coursier/cache" // Windows
92
- ).map(loc =>
93
- s " $userHome/ $loc/v1/https/repo1.maven.org/maven2/org/scala-lang/ $artifactId/ $version/ $artifactId- $version.jar "
94
- )
131
+ ).map { loc =>
132
+ val gid = groupId.replace('.' , '/' )
133
+ s " $userHome/ $loc/v1/https/repo1.maven.org/maven2/ $gid/ $artifactId/ $version/ $artifactId- $version.jar "
134
+ }
95
135
jarPaths.map(new File (_)).find(_.exists())
96
136
}
97
137
0 commit comments