Skip to content

Commit 228d25c

Browse files
Pass positions around when handling @using directives
using_directives still needs to provide use positions though.
1 parent 85709e8 commit 228d25c

12 files changed

+41
-13
lines changed

modules/build/src/main/scala/scala/build/preprocessing/DirectivesProcessor.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package scala.build.preprocessing
33
import com.virtuslab.using_directives.custom.model.{Path, Value}
44

55
import scala.build.Ops._
6+
import scala.build.Position
67
import scala.build.errors.{BuildException, CompositeBuildException}
78
import scala.build.options.{BuildOptions, ScalaOptions}
89
import scala.build.preprocessing.directives.DirectiveHandler
@@ -64,7 +65,9 @@ object DirectivesProcessor {
6465
.iterator
6566
.flatMap {
6667
case (k, v) =>
67-
handlersMap.get(k).iterator.map(_(v, cwd))
68+
// FIXME using_directives needs to give us positions here
69+
val positionOpt = Option.empty[Position]
70+
handlersMap.get(k).iterator.map(_(v, cwd, positionOpt))
6871
}
6972
.toVector
7073
.sequence

modules/build/src/main/scala/scala/build/preprocessing/directives/DirectiveHandler.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package scala.build.preprocessing.directives
22

3+
import scala.build.Position
34
import scala.build.errors.BuildException
45
import scala.build.options.BuildOptions
56
import scala.build.preprocessing.ScopePath
@@ -14,7 +15,11 @@ trait DirectiveHandler {
1415

1516
// Strict / using_directives-based directives
1617
def keys: Seq[String] = Nil
17-
def handleValues(values: Seq[Any], cwd: ScopePath): Either[BuildException, BuildOptions] =
18+
def handleValues(
19+
values: Seq[Any],
20+
cwd: ScopePath,
21+
positionOpt: Option[Position]
22+
): Either[BuildException, BuildOptions] =
1823
if (keys.isEmpty)
1924
sys.error("Cannot happen")
2025
else

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingCustomJarDirectiveHandler.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package scala.build.preprocessing.directives
22

3+
import scala.build.EitherCps.{either, value}
34
import scala.build.Os
5+
import scala.build.Position
46
import scala.build.errors.BuildException
57
import scala.build.options.{BuildOptions, ClassPathOptions}
68
import scala.build.preprocessing.ScopePath
@@ -32,7 +34,8 @@ case object UsingCustomJarDirectiveHandler extends UsingDirectiveHandler {
3234
override def keys = Seq("jar", "jars")
3335
override def handleValues(
3436
values: Seq[Any],
35-
cwd: ScopePath
37+
cwd: ScopePath,
38+
positionOpt: Option[Position]
3639
): Either[BuildException, BuildOptions] = {
3740

3841
val extraJars = DirectiveUtil.stringValues(values).map { p =>

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingDependencyDirectiveHandler.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import dependency.parser.DependencyParser
55

66
import scala.build.EitherCps.{either, value}
77
import scala.build.Ops._
8-
import scala.build.Positioned
98
import scala.build.errors.{BuildException, DependencyFormatError}
109
import scala.build.options.{BuildOptions, ClassPathOptions}
1110
import scala.build.preprocessing.ScopePath
11+
import scala.build.{Position, Positioned}
1212

1313
case object UsingDependencyDirectiveHandler extends UsingDirectiveHandler {
1414
def name = "Dependency"
@@ -42,7 +42,8 @@ case object UsingDependencyDirectiveHandler extends UsingDirectiveHandler {
4242
override def keys = Seq("lib")
4343
override def handleValues(
4444
values: Seq[Any],
45-
cwd: ScopePath
45+
cwd: ScopePath,
46+
positionOpt: Option[Position]
4647
): Either[BuildException, BuildOptions] = either {
4748

4849
val extraDependencies = value {

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingJavaHomeDirectiveHandler.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.build.preprocessing.directives
22

33
import scala.build.EitherCps.{either, value}
44
import scala.build.Os
5+
import scala.build.Position
56
import scala.build.errors.BuildException
67
import scala.build.options.{BuildOptions, JavaOptions}
78
import scala.build.preprocessing.ScopePath
@@ -31,7 +32,8 @@ case object UsingJavaHomeDirectiveHandler extends UsingDirectiveHandler {
3132
override def keys = Seq("java-home", "javaHome")
3233
override def handleValues(
3334
values: Seq[Any],
34-
cwd: ScopePath
35+
cwd: ScopePath,
36+
positionOpt: Option[Position]
3537
): Either[BuildException, BuildOptions] = either {
3638
val rawHome = value {
3739
DirectiveUtil.stringValues(values)

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingJavaOptionsDirectiveHandler.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package scala.build.preprocessing.directives
22

3+
import scala.build.Position
34
import scala.build.errors.BuildException
45
import scala.build.options.{BuildOptions, JavaOptions}
56
import scala.build.preprocessing.ScopePath
@@ -30,7 +31,8 @@ case object UsingJavaOptionsDirectiveHandler extends UsingDirectiveHandler {
3031
override def keys = Seq("javaOpt", "javaOptions", "java-opt", "java-options")
3132
override def handleValues(
3233
values: Seq[Any],
33-
cwd: ScopePath
34+
cwd: ScopePath,
35+
positionOpt: Option[Position]
3436
): Either[BuildException, BuildOptions] = {
3537
val javaOpts = DirectiveUtil.stringValues(values)
3638
val options = BuildOptions(

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingOptionDirectiveHandler.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package scala.build.preprocessing.directives
22

3+
import scala.build.Position
34
import scala.build.errors.BuildException
45
import scala.build.options.{BuildOptions, ScalaOptions}
56
import scala.build.preprocessing.ScopePath
@@ -32,7 +33,8 @@ case object UsingOptionDirectiveHandler extends UsingDirectiveHandler {
3233
override def keys = Seq("options", "options")
3334
override def handleValues(
3435
values: Seq[Any],
35-
cwd: ScopePath
36+
cwd: ScopePath,
37+
positionOpt: Option[Position]
3638
): Either[BuildException, BuildOptions] = {
3739
val scalacOptions = DirectiveUtil.stringValues(values)
3840
val options = BuildOptions(

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingPlatformDirectiveHandler.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.build.preprocessing.directives
22

33
import scala.build.EitherCps.{either, value}
44
import scala.build.Ops._
5+
import scala.build.Position
56
import scala.build.errors.{
67
BuildException,
78
CompositeBuildException,
@@ -103,7 +104,8 @@ case object UsingPlatformDirectiveHandler extends UsingDirectiveHandler {
103104
override def keys = Seq("platform", "platforms")
104105
override def handleValues(
105106
values: Seq[Any],
106-
cwd: ScopePath
107+
cwd: ScopePath,
108+
positionOpt: Option[Position]
107109
): Either[BuildException, BuildOptions] =
108110
handle(DirectiveUtil.stringValues(values))
109111
}

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingRepositoryDirectiveHandler.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package scala.build.preprocessing.directives
22

3+
import scala.build.Position
34
import scala.build.errors.BuildException
45
import scala.build.options.{BuildOptions, ClassPathOptions}
56
import scala.build.preprocessing.ScopePath
@@ -31,7 +32,8 @@ case object UsingRepositoryDirectiveHandler extends UsingDirectiveHandler {
3132
override def keys = Seq("repository", "repositories")
3233
override def handleValues(
3334
values: Seq[Any],
34-
cwd: ScopePath
35+
cwd: ScopePath,
36+
positionOpt: Option[Position]
3537
): Either[BuildException, BuildOptions] = {
3638
val repositories = DirectiveUtil.stringValues(values)
3739
val options = BuildOptions(

modules/build/src/main/scala/scala/build/preprocessing/directives/UsingResourcesDirectiveHandler.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package scala.build.preprocessing.directives
22

33
import scala.build.Os
4+
import scala.build.Position
45
import scala.build.errors.BuildException
56
import scala.build.options.{BuildOptions, ClassPathOptions}
67
import scala.build.preprocessing.ScopePath
@@ -32,7 +33,8 @@ case object UsingResourcesDirectiveHandler extends UsingDirectiveHandler {
3233
override def keys = Seq("resource", "resources")
3334
override def handleValues(
3435
values: Seq[Any],
35-
cwd: ScopePath
36+
cwd: ScopePath,
37+
positionOpt: Option[Position]
3638
): Either[BuildException, BuildOptions] = {
3739
val paths = DirectiveUtil.stringValues(values)
3840
val paths0 = paths.map(os.Path(_, Os.pwd)) // FIXME Wrong cwd, might throw too

0 commit comments

Comments
 (0)