Skip to content

Commit ab9192b

Browse files
Accept 'using target' as equivalent to 'require'
1 parent 08ee811 commit ab9192b

File tree

13 files changed

+62
-41
lines changed

13 files changed

+62
-41
lines changed

examples/cross-build/Hello.js.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// using scala 2.13
2-
// require scala-js
2+
// using target scala-js
33

44
import scala.scalajs.js
55

examples/cross-build/Hello.native.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// using scala 2.13
2-
// require scala-native
2+
// using target scala-native
33

44
import scala.scalanative.libc._
55
import scala.scalanative.unsafe._

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,18 @@ object TemporaryDirectivesParser {
2424
.map(_ => (Directive.Using: Directive.Type, true))
2525
def usingKeywordTpe = P("using")
2626
.map(_ => (Directive.Using: Directive.Type, false))
27-
def usingTpe = P(ws.? ~ (commentedUsingTpe | usingKeywordTpe))
27+
def usingTpe = P(ws.? ~ (commentedUsingTpe | usingKeywordTpe) ~ !(ws ~ "target"))
2828
def commentedRequireTpe = P("//" ~ ws ~ "require")
2929
.map(_ => (Directive.Require: Directive.Type, true))
3030
def requireKeywordTpe = P("require")
3131
.map(_ => (Directive.Require: Directive.Type, false))
32-
def requireTpe = P(ws.? ~ (commentedRequireTpe | requireKeywordTpe))
32+
def commentedUsingTargetTpe = P("//" ~ ws ~ "using" ~ ws ~ "target")
33+
.map(_ => (Directive.Require: Directive.Type, true))
34+
def usingTargetKeywordTpe = P("using" ~ ws ~ "target")
35+
.map(_ => (Directive.Require: Directive.Type, false))
36+
def requireTpe = P(
37+
ws.? ~ (commentedRequireTpe | requireKeywordTpe | commentedUsingTargetTpe | usingTargetKeywordTpe)
38+
)
3339
P(usingTpe | requireTpe)
3440
}
3541

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import scala.build.options.{BuildRequirements, Platform}
66
case object RequirePlatformsDirectiveHandler extends RequireDirectiveHandler {
77
def name = "Platform"
88
def description = "Require a Scala platform for the current file"
9-
def usage = "require _platform_"
10-
override def usageMd = "`require `_platform_"
9+
def usage = "using target _platform_"
10+
override def usageMd = "`using target `_platform_"
1111
override def examples = Seq(
12-
"require scala-js",
13-
"require scala-js scala-native",
14-
"require jvm"
12+
"using target scala-js",
13+
"using target scala-js scala-native",
14+
"using target jvm"
1515
)
1616

1717
def handle(directive: Directive): Option[Either[BuildException, BuildRequirements]] =

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import scala.build.options.BuildRequirements
66
case object RequireScalaVersionDirectiveHandler extends RequireDirectiveHandler {
77
def name = "Scala version"
88
def description = "Require a Scala version for the current file"
9-
def usage = "require scala _version_"
10-
override def usageMd = "`require scala `_version_"
9+
def usage = "using target scala _version_"
10+
override def usageMd = "`using target scala `_version_"
1111
override def examples = Seq(
12-
"require scala 3",
13-
"require scala 2.13",
14-
"require scala 3.0.2"
12+
"using target scala 3",
13+
"using target scala 2.13",
14+
"using target scala 3.0.2"
1515
)
1616

1717
def handle(directive: Directive): Option[Either[BuildException, BuildRequirements]] =

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import scala.build.options.{BuildRequirements, Scope}
66
case object RequireScopeDirectiveHandler extends RequireDirectiveHandler {
77
def name = "Scope"
88
def description = "Require a scope for the current file"
9-
def usage = "require _scope_"
10-
override def usageMd = "`require `_scope_"
9+
def usage = "using target _scope_"
10+
override def usageMd = "`using target `_scope_"
1111
override def examples = Seq(
12-
"require test"
12+
"using target test"
1313
)
1414

1515
private val scopesByName = Scope.all.map(s => s.name -> s).toMap

modules/build/src/test/scala/scala/build/tests/BuildTests.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ class BuildTests extends munit.FunSuite {
338338
|}
339339
|""".stripMargin,
340340
os.rel / "Ignored.scala" ->
341-
"""require scala == 2.12
341+
"""using target scala == 2.12
342342
|object Ignored {
343343
| def foo = 2
344344
|}
@@ -360,7 +360,7 @@ class BuildTests extends munit.FunSuite {
360360
|}
361361
|""".stripMargin,
362362
os.rel / "Ignored.scala" ->
363-
"""require scala.js
363+
"""using target scala.js
364364
|object Ignored {
365365
| def foo = 2
366366
|}
@@ -383,13 +383,13 @@ class BuildTests extends munit.FunSuite {
383383
|}
384384
|""".stripMargin,
385385
os.rel / "Ignored.scala" ->
386-
"""require jvm
386+
"""using target jvm
387387
|object Ignored {
388388
| def foo = 2
389389
|}
390390
|""".stripMargin,
391391
os.rel / "IgnoredToo.scala" ->
392-
"""require native
392+
"""using target native
393393
|object IgnoredToo {
394394
| def foo = 2
395395
|}
@@ -409,7 +409,7 @@ class BuildTests extends munit.FunSuite {
409409
test("ignore files if wrong Scala version requirement via in clause") {
410410
val testInputs = TestInputs(
411411
os.rel / "Simple.scala" ->
412-
"""// require scala == 2.12 in my-scala-2.12/
412+
"""// using target scala == 2.12 in my-scala-2.12/
413413
|object Simple {
414414
| def main(args: Array[String]): Unit =
415415
| println("Hello")
@@ -431,7 +431,7 @@ class BuildTests extends munit.FunSuite {
431431
test("ignore files if wrong Scala target requirement via in clause") {
432432
val testInputs = TestInputs(
433433
os.rel / "Simple.scala" ->
434-
"""require scala.js in js-sources/
434+
"""using target scala.js in js-sources/
435435
|object Simple {
436436
| def main(args: Array[String]): Unit =
437437
| println("Hello")

modules/build/src/test/scala/scala/build/tests/TemporaryDirectivesParserTests.scala

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,19 @@ class TemporaryDirectivesParserTests extends munit.FunSuite {
2222
expect(res == expectedRes)
2323
}
2424

25+
test("using target as require") {
26+
val res = TemporaryDirectivesParser.parseDirectives(
27+
"""require foo
28+
|using target aa bb
29+
|""".stripMargin
30+
).map(_._1)
31+
val expectedRes = Some(
32+
Seq(
33+
Directive(Directive.Require, Seq("foo"), None, isComment = false),
34+
Directive(Directive.Require, Seq("aa", "bb"), None, isComment = false)
35+
)
36+
)
37+
expect(res == expectedRes)
38+
}
39+
2540
}

modules/generate-reference-doc/src/main/scala/scala/cli/doc/GenerateReferenceDoc.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ object GenerateReferenceDoc extends CaseApp[Options] {
269269

270270
b.append(
271271
"""
272-
|## require directives
272+
|## target directives
273273
|
274274
|""".stripMargin
275275
)

modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ abstract class CompileTestDefinitions(val scalaVersionOpt: Option[String])
6666
|""".stripMargin,
6767
os.rel / "Tests.scala" ->
6868
"""using "com.lihaoyi::pprint:0.6.6"
69-
|require test
69+
|using target test
7070
|
7171
|import utest._
7272
|
@@ -97,7 +97,7 @@ abstract class CompileTestDefinitions(val scalaVersionOpt: Option[String])
9797
|""".stripMargin,
9898
os.rel / "Tests.scala" ->
9999
"""using "com.lihaoyi::utest:0.7.10"
100-
|require test
100+
|using target test
101101
|
102102
|import utest._
103103
|

0 commit comments

Comments
 (0)