Skip to content

Commit 14fe66f

Browse files
committed
Vulpix preserves language flags
1 parent c20be38 commit 14fe66f

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

compiler/test/dotty/tools/vulpix/TestFlags.scala

+11-10
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,23 @@ final case class TestFlags(
2727
private def withoutLanguageFeaturesOptions = options.filterNot(_.startsWith(languageFeatureFlag))
2828

2929
// TODO simplify to add `-language:feature` to `options` once
30-
// https://github.com/lampepfl/dotty-feature-requests/issues/107 is implemented
31-
def andLanguageFeature(feature: String) = {
30+
// https://github.com/lampepfl/dotty/issues/9787 is implemented
31+
def andLanguageFeature(feature: String) =
3232
val (languageFeatures, rest) = options.partition(_.startsWith(languageFeatureFlag))
33-
val existingFeatures = if (languageFeatures.isEmpty) languageFeatures.mkString(",") + "," else ""
34-
copy(options = rest ++ Array(languageFeatureFlag + existingFeatures + feature))
35-
}
33+
val existingFeatures = languageFeatures.flatMap(_.stripPrefix(languageFeatureFlag).split(","))
34+
val featurePrefix =
35+
if existingFeatures.isEmpty then ""
36+
else existingFeatures.mkString(",") + ","
37+
copy(options = rest ++ Array(languageFeatureFlag + featurePrefix + feature))
3638

37-
def withoutLanguageFeature(feature: String) = {
39+
def withoutLanguageFeature(feature: String) =
3840
val (languageFeatures, rest) = options.partition(_.startsWith(languageFeatureFlag))
39-
val filteredFeatures = languageFeatures.filter(_ == feature)
41+
val existingFeatures = languageFeatures.flatMap(_.stripPrefix(languageFeatureFlag).split(","))
42+
val filteredFeatures = existingFeatures.filterNot(_ == feature)
4043
val newOptions =
41-
if (filteredFeatures.isEmpty) rest
44+
if filteredFeatures.isEmpty then rest
4245
else rest ++ Array(languageFeatureFlag + filteredFeatures.mkString(","))
43-
4446
copy(options = newOptions)
45-
}
4647

4748
/** Subset of the flags that should be passed to javac. */
4849
def javacFlags: Array[String] = {

tests/neg-custom-args/i5498-postfixOps.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ import scala.concurrent.duration._
33
def test() = {
44
1 second // error: usage of postfix operator
55

6-
Seq(1, 2).filter(List(1,2) contains) // error: usage of postfix operator
7-
}
6+
Seq(1, 2).filter(List(1,2) contains) toList // error: usage of postfix operator // errno
7+
}

tests/pos-custom-args/i5498-postfixOps.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ import scala.language.postfixOps
55
def test() = {
66
1 second
77

8-
Seq(1, 2) filter (List(1,2) contains)
9-
}
8+
Seq(1, 2) filter (List(1,2) contains) toList
9+
}

0 commit comments

Comments
 (0)