Skip to content

Commit ccda945

Browse files
committed
Support //> options directive in compilation tests
[Cherry-picked 7e2dd57][modified]
1 parent ef00390 commit ccda945

File tree

397 files changed

+398
-397
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

397 files changed

+398
-397
lines changed

compiler/test/dotty/tools/utils.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,15 @@ def toolArgsFor(tool: ToolName)(lines: List[String]): List[String] =
8080
// scalac: arg1 arg2, with alternative opening, optional space, alt names, text that is not */ up to end.
8181
// groups are (name, args)
8282
private val toolArg = raw"(?://|/\*| \*) ?(?i:(${ToolName.values.mkString("|")})):((?:[^*]|\*(?!/))*)".r.unanchored
83+
private val directiveOptionsArg = raw"//> using options (.*)".r.unanchored
8384

8485
// Inspect the lines for compiler options of the form
8586
// `// scalac: args`, `/* scalac: args`, ` * scalac: args`.
8687
// If args string ends in close comment, stop at the `*` `/`.
8788
// Returns all the matches by the regex.
8889
def toolArgsParse(lines: List[String]): List[(String,String)] =
89-
lines.flatMap { case toolArg(name, args) => List((name, args)) case _ => Nil }
90+
lines.flatMap { case toolArg(name, args) => List((name, args)) case _ => Nil } ++
91+
lines.flatMap { case directiveOptionsArg(args) => List(("scalac", args)) case _ => Nil }
9092

9193
import org.junit.Test
9294
import org.junit.Assert._

tests/explicit-nulls/neg-patmat/match-pat.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
class Foo {
44

tests/explicit-nulls/pos/i14682.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Ysafe-init
1+
//> using options -Ysafe-init
22

33
class C1:
44
sealed abstract class Name {

tests/explicit-nulls/pos/i14947.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Ytest-pickler -Xprint-types
1+
//> using options -Ytest-pickler -Xprint-types
22

33
class B:
44
def g: String | Null = ???

tests/explicit-nulls/pos/match-pat.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
// Ensure we don't get "the type test for argType cannot be checked at runtime" warning
44

tests/explicit-nulls/pos/unsafe-match-null-pat.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
import scala.language.unsafeNulls
44

tests/neg-custom-args/wildcards.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -source future -deprecation -Xfatal-warnings
1+
//> using options -source future -deprecation -Xfatal-warnings
22

33
object Test {
44
val xs: List[_] = List(1, 2, 3) // error

tests/neg-macros/i16355a.scala

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
//> using scala "3.2.1"
21
import scala.quoted.Expr
32
import scala.quoted.Type
43
import scala.quoted.quotes

tests/neg-macros/i9570.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
import scala.quoted.*
44

tests/neg-macros/macro-deprecation.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings -deprecation
1+
//> using options -Xfatal-warnings -deprecation
22

33
import scala.quoted.*
44

tests/neg-macros/macro-experimental.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
import scala.quoted.*
44
import scala.annotation.experimental

tests/neg-scalajs/enumeration-warnings.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
class UnableToTransformValue extends Enumeration {
44
val a = {

tests/neg/14034.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
import annotation.experimental
44

tests/neg/14034b.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings -deprecation
1+
//> using options -Xfatal-warnings -deprecation
22

33
@deprecated trait Exp
44
@deprecated val exp = 1

tests/neg/15981.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Werror
1+
//> using options -Werror
22
val _ = locally{
33
sealed abstract class PosInt(val value: Int) {
44
override def equals(any: Any): Boolean = any.isInstanceOf[PosInt] // error

tests/neg/17284.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Werror -explain
1+
//> using options -Werror -explain
22

33
def test =
44
451.synchronized {} // error

tests/neg/18031.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -source:future
1+
//> using options -source:future
22

33
object A:
44
val x, y, z = 0

tests/neg/IsInstanceOfClassTag.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
import scala.reflect.ClassTag
44

tests/neg/IsInstanceOfClassTag2.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
import scala.reflect.TypeTest
44

tests/neg/adhoc-extension/B.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -source future -feature -Xfatal-warnings
1+
//> using options -source future -feature -Xfatal-warnings
22

33
package adhoc
44
class B extends A // error: adhoc-extension (under -strict -feature -Xfatal-warnings)

tests/neg/autoTuplingTestb.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:noAutoTupling
1+
//> using options -language:noAutoTupling
22

33
object autoTupling {
44

tests/neg/avoid-warn-deprecation.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings -feature
1+
//> using options -Xfatal-warnings -feature
22

33
object A {
44
@deprecated("use bar instead of this one", "0.2.3")

tests/neg/by-name.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
def f(x: => Int, erased y: => Int) = x // error
44
def g(erased x: => Int, y: => Int) = y // error

tests/neg/capt-wf.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.captureChecking -Xfatal-warnings
1+
//> using options -language:experimental.captureChecking -Xfatal-warnings
22

33
class C
44
type Cap = C^

tests/neg/classtag-typetest/3_1-migration.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
import scala.language.`future-migration`
44
import scala.reflect.ClassTag

tests/neg/classtag-typetest/3_1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
import scala.language.future
44
import scala.reflect.ClassTag

tests/neg/constructor-proxy-shadowing.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -explain
1+
//> using options -explain
22

33
object Test extends App {
44
def A22(s: String): String = s

tests/neg/convertible.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings -feature
1+
//> using options -Xfatal-warnings -feature
22

33
import language.experimental.into
44

tests/neg/deptypes.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.dependent
1+
//> using options -language:experimental.dependent
22

33
type Vec[T] = (n: Int) =>> Array[T] // error: not yet implemented
44

tests/neg/enum-variance.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Xfatal-warnings
1+
//> using options -Xfatal-warnings
22

33
enum View[-T]:
44
case Refl(f: T => T) // error: enum case Refl requires explicit declaration of type T

tests/neg/erased-1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
def foo0(a: Int): Int = a

tests/neg/erased-2.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
def foo0(a: Int): Int = a

tests/neg/erased-24.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
// Could become a run test if we had totality checking for erased arguments
44

tests/neg/erased-3.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
def foo0(a: Int): Int = a

tests/neg/erased-4.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44

tests/neg/erased-5.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44

tests/neg/erased-6.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
erased def foo: Foo = new Foo

tests/neg/erased-args-lifted.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
def foo(a: Int)(b: Int, c: Int) = 42

tests/neg/erased-assign.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
var i: Int = 1

tests/neg/erased-case-class.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
case class Foo1(erased x: Int) // error // error

tests/neg/erased-def-rhs.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
def f(erased i: Int) = {

tests/neg/erased-if-else.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
var b = true

tests/neg/erased-implicit.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44

tests/neg/erased-in-tuples.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
@main def Test() =
44
val x = 5

tests/neg/erased-lazy-val.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
erased lazy val i: Int = 1 // error

tests/neg/erased-machine-state-encoding-with-inline.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
import scala.compiletime.*
44

tests/neg/erased-match.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
var b = true

tests/neg/erased-object.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
erased object Test // error

tests/neg/erased-path.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
trait Sys { type X }
44

tests/neg/erased-pathdep-1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
// Could become a neg test if we had totality checking for erased arguments
44

tests/neg/erased-pathdep-2.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
// Could become a neg test if we had totality checking for erased arguments
44

tests/neg/erased-return.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
var b = true

tests/neg/erased-singleton.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
trait Sys
44

tests/neg/erased-try.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
def foo(erased a: Int): Int = {

tests/neg/erased-type.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
class Test {
44
erased type T // error

tests/neg/erased-val-rhs.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
def f(erased i: Int) = {

tests/neg/erased-value-class.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
class Foo(erased x: Int) extends AnyVal // error
44

tests/neg/erased-var.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
object Test {
44
erased var i: Int = 1 // error

tests/neg/erasedValueb.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -language:experimental.erasedDefinitions
1+
//> using options -language:experimental.erasedDefinitions
22

33
import scala.compiletime.erasedValue
44
object Test {

tests/neg/experimental-2.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
class Test7 {
44
import scala.language.experimental

tests/neg/experimental-erased.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
import language.experimental.erasedDefinitions
44
import annotation.experimental

tests/neg/experimental-imports.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
import annotation.experimental
44

tests/neg/experimental-nested-imports-2.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
import annotation.experimental
44

tests/neg/experimental-nested-imports-3.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
import annotation.experimental
44

tests/neg/experimental-nested-imports.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// scalac: -Yno-experimental
1+
//> using options -Yno-experimental
22

33
import annotation.experimental
44

0 commit comments

Comments
 (0)