diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/t5091.check | 9 | ||||
-rw-r--r-- | test/files/neg/t5091.scala (renamed from test/pending/pos/t5091.scala) | 0 | ||||
-rw-r--r-- | test/files/pos/t5217.scala | 17 | ||||
-rw-r--r-- | test/files/pos/t6051.scala | 19 | ||||
-rw-r--r-- | test/files/run/repl-javap-lambdas.scala | 23 | ||||
-rw-r--r-- | test/files/run/repl-javap-memfun.scala | 4 | ||||
-rw-r--r-- | test/files/run/t6541-option.scala | 19 | ||||
-rw-r--r-- | test/files/run/t6541.flags | 1 | ||||
-rw-r--r-- | test/files/run/t6541.scala | 25 | ||||
-rw-r--r-- | test/files/run/xMigration.check | 49 | ||||
-rw-r--r-- | test/files/run/xMigration.scala | 19 | ||||
-rw-r--r-- | test/junit/scala/tools/nsc/settings/ScalaVersionTest.scala | 18 | ||||
-rw-r--r-- | test/junit/scala/tools/nsc/settings/SettingsTest.scala | 16 | ||||
-rw-r--r-- | test/osgi/src/BasicLibrary.scala | 15 | ||||
-rw-r--r-- | test/osgi/src/BasicReflection.scala | 15 | ||||
-rw-r--r-- | test/osgi/src/BasicTest.scala | 15 | ||||
-rw-r--r-- | test/osgi/src/ReflectionToolboxTest.scala | 15 | ||||
-rw-r--r-- | test/osgi/src/ScalaOsgiHelper.scala | 6 |
18 files changed, 246 insertions, 39 deletions
diff --git a/test/files/neg/t5091.check b/test/files/neg/t5091.check new file mode 100644 index 0000000000..abd24e3145 --- /dev/null +++ b/test/files/neg/t5091.check @@ -0,0 +1,9 @@ +t5091.scala:8: error: recursive value xxx needs type + val param = bar(xxx) + ^ +t5091.scala:7: warning: type-checking the invocation of method foo checks if the named argument expression 'param = ...' is a valid assignment +in the current scope. The resulting type inference error (see above) can be fixed by providing an explicit type in the local definition for param. + val xxx = foo(param = null) + ^ +one warning found +one error found diff --git a/test/pending/pos/t5091.scala b/test/files/neg/t5091.scala index 217e83f66d..217e83f66d 100644 --- a/test/pending/pos/t5091.scala +++ b/test/files/neg/t5091.scala diff --git a/test/files/pos/t5217.scala b/test/files/pos/t5217.scala new file mode 100644 index 0000000000..1fe3f5696f --- /dev/null +++ b/test/files/pos/t5217.scala @@ -0,0 +1,17 @@ +// private types and terms of companion module are +// available in scope of ctor params. +// before 2.10.1, class B in object A cannot be accessed in object A +object A { + private class B + private val b: B = new B + private type C = Int + def apply(): A = new A() +} +// if not private, then default arg results in: +// private class B escapes its defining scope as part of type A.B +class A private (b: A.B = A.b, c: A.C = 42) + +object C { + private class B +} +class C(b: C.B) diff --git a/test/files/pos/t6051.scala b/test/files/pos/t6051.scala new file mode 100644 index 0000000000..854524feb9 --- /dev/null +++ b/test/files/pos/t6051.scala @@ -0,0 +1,19 @@ +object Foo1 { + def foo(x: Int, y: Int = 10) = x*y + lazy val y = foo(x = 20) +} + +object Foo2 { + def foo(x: Int, y: Int = 10) = x*y + val y = foo(x = 20) +} + +object Foo3 { + def foo(x: Int, y: Int = 10) = x*y + def y = foo(x = 20) +} + +object Foo4 { + def foo(x: Int, y: Int = 10) = x*y + var y = foo(x = 20) +} diff --git a/test/files/run/repl-javap-lambdas.scala b/test/files/run/repl-javap-lambdas.scala new file mode 100644 index 0000000000..15e5bf6877 --- /dev/null +++ b/test/files/run/repl-javap-lambdas.scala @@ -0,0 +1,23 @@ +import scala.tools.partest.JavapTest +import scala.tools.nsc.Settings + +// see repl-javap-memfun.java for the complementary version +object Test extends JavapTest { + override def transformSettings(s: Settings) = { s.Ydelambdafy.value = "method" ; s } + def code = """ + |object Betty { + | List(1,2,3) count (_ % 2 != 0) + | def f = List(1,2,3) filter (_ % 2 != 0) map (_ * 2) + | def g = List(1,2,3) filter (_ % 2 == 0) map (_ * 3) map (_ + 1) + |} + |:javap -fun Betty#g + """.stripMargin + + // three anonfuns of Betty#g + override def yah(res: Seq[String]) = { + import PartialFunction.{ cond => when } + val r = """\s*private static final .* \$anonfun\$\d+\(.*""".r + def filtered = res filter (when(_) { case r(_*) => true }) + 3 == filtered.size + } +} diff --git a/test/files/run/repl-javap-memfun.scala b/test/files/run/repl-javap-memfun.scala index d2b4243c8b..d10ebcb399 100644 --- a/test/files/run/repl-javap-memfun.scala +++ b/test/files/run/repl-javap-memfun.scala @@ -1,6 +1,10 @@ import scala.tools.partest.JavapTest +import scala.tools.nsc.Settings +// see repl-javap-lambdas.scala for the complementary version object Test extends JavapTest { + // asserting the default + override def transformSettings(s: Settings) = { s.Ydelambdafy.value = "inline" ; s } def code = """ |object Betty { | List(1,2,3) count (_ % 2 != 0) diff --git a/test/files/run/t6541-option.scala b/test/files/run/t6541-option.scala new file mode 100644 index 0000000000..2c10c9e09d --- /dev/null +++ b/test/files/run/t6541-option.scala @@ -0,0 +1,19 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = """ +:setting -Xsource:2.12 +case class C12(clazz: Class[_]) +val o: Option[Class[T] forSome { type T}] = C12.unapply(C12(classOf[String])) + +:setting -Xsource:2.11 +import scala.language.existentials +case class C11(clazz: Class[_]) +val o: Option[Class[T]] forSome { type T } = C11.unapply(C11(classOf[String])) + """ + + override def show() = { + val r = eval().mkString("\n") + assert(!(r.contains("warning") || r.contains("error")), r) + } +} diff --git a/test/files/run/t6541.flags b/test/files/run/t6541.flags new file mode 100644 index 0000000000..68d0ddfec2 --- /dev/null +++ b/test/files/run/t6541.flags @@ -0,0 +1 @@ +-feature -Xfatal-warnings -Xsource:2.12
\ No newline at end of file diff --git a/test/files/run/t6541.scala b/test/files/run/t6541.scala new file mode 100644 index 0000000000..f127143691 --- /dev/null +++ b/test/files/run/t6541.scala @@ -0,0 +1,25 @@ +class A +class B[T](x: T) +case class C(a: A, b: B[_]) + +case class D(a: A, b: B[_]*) + +case class E(c: Class[_]) + +object Test extends App { + def f1(c: C) = c match { + case C(a, b) => () + } + + def f2(d: D) = d match { + case D(a, b1, b2) => () + } + + def f3(e: E) = e match { + case E(c) => () + } + + f1(C(new A, new B(1))) + f2(D(new A, new B(1), new B(2))) + f3(E(classOf[E])) +} diff --git a/test/files/run/xMigration.check b/test/files/run/xMigration.check new file mode 100644 index 0000000000..378f7bb6c3 --- /dev/null +++ b/test/files/run/xMigration.check @@ -0,0 +1,49 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> Map(1 -> "eis").values // no warn +res0: Iterable[String] = MapLike(eis) + +scala> :setting -Xmigration:none + +scala> Map(1 -> "eis").values // no warn +res1: Iterable[String] = MapLike(eis) + +scala> :setting -Xmigration:any + +scala> Map(1 -> "eis").values // warn +<console>:8: warning: method values in trait MapLike has changed semantics in version 2.8.0: +`values` returns `Iterable[B]` rather than `Iterator[B]`. + Map(1 -> "eis").values // warn + ^ +res2: Iterable[String] = MapLike(eis) + +scala> :setting -Xmigration:2.8 + +scala> Map(1 -> "eis").values // no warn +res3: Iterable[String] = MapLike(eis) + +scala> :setting -Xmigration:2.7 + +scala> Map(1 -> "eis").values // warn +<console>:8: warning: method values in trait MapLike has changed semantics in version 2.8.0: +`values` returns `Iterable[B]` rather than `Iterator[B]`. + Map(1 -> "eis").values // warn + ^ +res4: Iterable[String] = MapLike(eis) + +scala> :setting -Xmigration:2.11 + +scala> Map(1 -> "eis").values // no warn +res5: Iterable[String] = MapLike(eis) + +scala> :setting -Xmigration // same as :any + +scala> Map(1 -> "eis").values // warn +<console>:8: warning: method values in trait MapLike has changed semantics in version 2.8.0: +`values` returns `Iterable[B]` rather than `Iterator[B]`. + Map(1 -> "eis").values // warn + ^ +res6: Iterable[String] = MapLike(eis) + +scala> :quit diff --git a/test/files/run/xMigration.scala b/test/files/run/xMigration.scala new file mode 100644 index 0000000000..688e878397 --- /dev/null +++ b/test/files/run/xMigration.scala @@ -0,0 +1,19 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = """ +Map(1 -> "eis").values // no warn +:setting -Xmigration:none +Map(1 -> "eis").values // no warn +:setting -Xmigration:any +Map(1 -> "eis").values // warn +:setting -Xmigration:2.8 +Map(1 -> "eis").values // no warn +:setting -Xmigration:2.7 +Map(1 -> "eis").values // warn +:setting -Xmigration:2.11 +Map(1 -> "eis").values // no warn +:setting -Xmigration // same as :any +Map(1 -> "eis").values // warn + """ +} diff --git a/test/junit/scala/tools/nsc/settings/ScalaVersionTest.scala b/test/junit/scala/tools/nsc/settings/ScalaVersionTest.scala new file mode 100644 index 0000000000..77a2da828e --- /dev/null +++ b/test/junit/scala/tools/nsc/settings/ScalaVersionTest.scala @@ -0,0 +1,18 @@ +package scala.tools.nsc +package settings + +import org.junit.Assert._ +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import scala.tools.testing.AssertUtil.assertThrows + +@RunWith(classOf[JUnit4]) +class ScalaVersionTest { + // SI-8711 + @Test def versionUnparse() { + val v = "2.11.3" + + assertEquals(ScalaVersion(v).unparse, v) + } +} diff --git a/test/junit/scala/tools/nsc/settings/SettingsTest.scala b/test/junit/scala/tools/nsc/settings/SettingsTest.scala index eda0c27834..96f83c4c2f 100644 --- a/test/junit/scala/tools/nsc/settings/SettingsTest.scala +++ b/test/junit/scala/tools/nsc/settings/SettingsTest.scala @@ -164,4 +164,20 @@ class SettingsTest { assertThrows[IllegalArgumentException](check("-m:a,b,-ab")(_ => true), _ contains "'ab' cannot be negated") assertThrows[IllegalArgumentException](check("-m:a,ac,-uber,uber")(_ => true), _ contains "'uber' cannot be negated") } + + @Test def xSourceTest(): Unit = { + def check(expected: String, args: String*): Unit = { + val s = new MutableSettings(msg => throw new IllegalArgumentException(msg)) + val (_, residual) = s.processArguments(args.toList, processAll = true) + assert(residual.isEmpty) + assertTrue(s.source.value == ScalaVersion(expected)) + } + check(expected = "2.11.0") // default + check(expected = "2.11.0", "-Xsource:2.11") + check(expected = "2.10", "-Xsource:2.10.0") + check(expected = "2.12", "-Xsource:2.12") + assertThrows[IllegalArgumentException](check(expected = "2.11", "-Xsource"), _ == "-Xsource requires an argument, the syntax is -Xsource:<version>") + assertThrows[IllegalArgumentException](check(expected = "2.11", "-Xsource", "2.11"), _ == "-Xsource requires an argument, the syntax is -Xsource:<version>") + assertThrows[IllegalArgumentException](check(expected = "2.11", "-Xsource:2.invalid"), _ contains "There was a problem parsing 2.invalid") + } } diff --git a/test/osgi/src/BasicLibrary.scala b/test/osgi/src/BasicLibrary.scala index 6618f02102..ee8b7634ff 100644 --- a/test/osgi/src/BasicLibrary.scala +++ b/test/osgi/src/BasicLibrary.scala @@ -7,19 +7,16 @@ import org.ops4j.pax.exam.CoreOptions._ import org.junit.Test import org.junit.runner.RunWith import org.ops4j.pax.exam -import org.ops4j.pax.exam.junit.{ - Configuration, - ExamReactorStrategy, - JUnit4TestRunner -} -import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory -import org.ops4j.pax.swissbox.framework.ServiceLookup +import org.ops4j.pax.exam.Configuration +import org.ops4j.pax.exam.junit.PaxExam +import org.ops4j.pax.exam.spi.reactors.{ ExamReactorStrategy, PerMethod } +import org.ops4j.pax.swissbox.tracker.ServiceLookup import org.osgi.framework.BundleContext -@RunWith(classOf[JUnit4TestRunner]) -@ExamReactorStrategy(Array(classOf[AllConfinedStagedReactorFactory])) +@RunWith(classOf[PaxExam]) +@ExamReactorStrategy(Array(classOf[PerMethod])) class BasicLibraryTest extends ScalaOsgiHelper { @Configuration def config(): Array[exam.Option] = diff --git a/test/osgi/src/BasicReflection.scala b/test/osgi/src/BasicReflection.scala index d601f04f89..53ab7e5345 100644 --- a/test/osgi/src/BasicReflection.scala +++ b/test/osgi/src/BasicReflection.scala @@ -10,13 +10,10 @@ import org.ops4j.pax.exam.CoreOptions._ import org.junit.Test import org.junit.runner.RunWith import org.ops4j.pax.exam -import org.ops4j.pax.exam.junit.{ - Configuration, - ExamReactorStrategy, - JUnit4TestRunner -} -import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory -import org.ops4j.pax.swissbox.framework.ServiceLookup +import org.ops4j.pax.exam.Configuration +import org.ops4j.pax.exam.junit.PaxExam +import org.ops4j.pax.exam.spi.reactors.{ ExamReactorStrategy, PerMethod } +import org.ops4j.pax.swissbox.tracker.ServiceLookup import org.osgi.framework.BundleContext @@ -38,8 +35,8 @@ class C { object M -@RunWith(classOf[JUnit4TestRunner]) -@ExamReactorStrategy(Array(classOf[AllConfinedStagedReactorFactory])) +@RunWith(classOf[PaxExam]) +@ExamReactorStrategy(Array(classOf[PerMethod])) class BasicReflectionTest extends ScalaOsgiHelper { @Configuration diff --git a/test/osgi/src/BasicTest.scala b/test/osgi/src/BasicTest.scala index 109b7b911a..5adf87ecc1 100644 --- a/test/osgi/src/BasicTest.scala +++ b/test/osgi/src/BasicTest.scala @@ -6,21 +6,18 @@ import org.ops4j.pax.exam.CoreOptions._ import org.junit.Test import org.junit.runner.RunWith import org.ops4j.pax.exam -import org.ops4j.pax.exam.junit.{ - Configuration, - ExamReactorStrategy, - JUnit4TestRunner -} -import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory -import org.ops4j.pax.swissbox.framework.ServiceLookup +import org.ops4j.pax.exam.Configuration +import org.ops4j.pax.exam.junit.PaxExam +import org.ops4j.pax.exam.spi.reactors.{ ExamReactorStrategy, PerMethod } +import org.ops4j.pax.swissbox.tracker.ServiceLookup import org.osgi.framework.BundleContext -@RunWith(classOf[JUnit4TestRunner]) -@ExamReactorStrategy(Array(classOf[AllConfinedStagedReactorFactory])) +@RunWith(classOf[PaxExam]) +@ExamReactorStrategy(Array(classOf[PerMethod])) class BasicTest extends ScalaOsgiHelper { @Configuration def config(): Array[exam.Option] = { diff --git a/test/osgi/src/ReflectionToolboxTest.scala b/test/osgi/src/ReflectionToolboxTest.scala index bb48078e95..a23de18d07 100644 --- a/test/osgi/src/ReflectionToolboxTest.scala +++ b/test/osgi/src/ReflectionToolboxTest.scala @@ -8,13 +8,10 @@ import org.ops4j.pax.exam.CoreOptions._ import org.junit.Test import org.junit.runner.RunWith import org.ops4j.pax.exam -import org.ops4j.pax.exam.junit.{ - Configuration, - ExamReactorStrategy, - JUnit4TestRunner -} -import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory -import org.ops4j.pax.swissbox.framework.ServiceLookup +import org.ops4j.pax.exam.Configuration +import org.ops4j.pax.exam.junit.PaxExam +import org.ops4j.pax.exam.spi.reactors.{ ExamReactorStrategy, PerMethod } +import org.ops4j.pax.swissbox.tracker.ServiceLookup import org.osgi.framework.BundleContext @@ -22,8 +19,8 @@ class C { val f1 = 2 } -@RunWith(classOf[JUnit4TestRunner]) -@ExamReactorStrategy(Array(classOf[AllConfinedStagedReactorFactory])) +@RunWith(classOf[PaxExam]) +@ExamReactorStrategy(Array(classOf[PerMethod])) class ReflectionToolBoxTest extends ScalaOsgiHelper { @Configuration diff --git a/test/osgi/src/ScalaOsgiHelper.scala b/test/osgi/src/ScalaOsgiHelper.scala index 084afe8643..7ba8883bb8 100644 --- a/test/osgi/src/ScalaOsgiHelper.scala +++ b/test/osgi/src/ScalaOsgiHelper.scala @@ -20,19 +20,19 @@ trait ScalaOsgiHelper { def standardOptions: Array[exam.Option] = { val bundles = (allBundleFiles map makeBundle) - bundles ++ Array[exam.Option](felix(), equinox(), junitBundles()) + bundles ++ Array[exam.Option](junitBundles()) // to change the local repo used (for some operations, but not all -- which is why I didn't bother): // systemProperty("org.ops4j.pax.url.mvn.localRepository").value(sys.props("maven.repo.local"))) } def justReflectionOptions: Array[exam.Option] = { val bundles = filteredBundleFiles("scala-library", "scala-reflect") - bundles ++ Array[exam.Option](felix(), equinox(), junitBundles()) + bundles ++ Array[exam.Option](junitBundles()) } def justCoreLibraryOptions: Array[exam.Option] = { val bundles = filteredBundleFiles("scala-library") - bundles ++ Array[exam.Option](felix(), equinox(), junitBundles()) + bundles ++ Array[exam.Option](junitBundles()) } } |