summaryrefslogtreecommitdiff
path: root/test/files/run/t5905-features.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-05-09 15:23:45 +0200
committerJason Zaugg <jzaugg@gmail.com>2014-05-09 15:23:45 +0200
commit6f33b2418a56ea7b945ec101c5fbe4b904d467df (patch)
tree1f0dd827354d7274f127642f7983f9c601ec5ea7 /test/files/run/t5905-features.scala
parentb5392a0f034afe23aff183d8673464c848f76241 (diff)
parent78bd175afcc89878ca1c00cce69d0517909c6ff3 (diff)
downloadscala-6f33b2418a56ea7b945ec101c5fbe4b904d467df.tar.gz
scala-6f33b2418a56ea7b945ec101c5fbe4b904d467df.tar.bz2
scala-6f33b2418a56ea7b945ec101c5fbe4b904d467df.zip
Merge pull request #3597 from som-snytt/issue/5905-feature-help
SI-5905 Sanity check -language options
Diffstat (limited to 'test/files/run/t5905-features.scala')
-rw-r--r--test/files/run/t5905-features.scala31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/files/run/t5905-features.scala b/test/files/run/t5905-features.scala
new file mode 100644
index 0000000000..547a521cb5
--- /dev/null
+++ b/test/files/run/t5905-features.scala
@@ -0,0 +1,31 @@
+
+import tools.partest.DirectTest
+
+// verify that all languageFeature names are accepted by -language
+object Test extends DirectTest {
+ override def code = "class Code { def f = (1 to 10) size }" // exercise a feature to sanity-check coverage of -language options
+
+ override def extraSettings = s"-usejavacp -d ${testOutput.path}"
+
+ override def show() = {
+ val global = newCompiler("-Ystop-after:typer")
+ compileString(global)("") // warm me up, scotty
+ import global._
+ exitingTyper {
+ //def isFeature(s: Symbol) = s.annotations.exists((a: AnnotationInfo) => a.tpe <:< typeOf[scala.annotation.meta.languageFeature])
+ def isFeature(s: Symbol) = s hasAnnotation definitions.LanguageFeatureAnnot
+ val langf = definitions.languageFeatureModule.typeSignature
+ val feats = langf.declarations filter (s => isFeature(s)) map (_.name.decoded)
+ val xmen = langf.member(TermName("experimental")).typeSignature.declarations filter (s => isFeature(s)) map (s => s"experimental.${s.name.decoded}")
+ val all = (feats ++ xmen) mkString ","
+
+ assert(feats.nonEmpty, "Test must find feature flags.")
+
+ //compile("junk") // tragically, does not fail the test
+
+ //dynamics,postfixOps,reflectiveCalls,implicitConversions,higherKinds,existentials,experimental.macros
+ compile(s"-language:$all")
+ }
+ }
+}
+