summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
Diffstat (limited to 'test/files')
-rw-r--r--test/files/jvm/actmig-PinS_1.scala21
-rw-r--r--test/files/jvm/actmig-PinS_2.scala23
-rw-r--r--test/files/jvm/actmig-PinS_3.scala24
-rw-r--r--test/files/jvm/actmig-instantiation.check4
-rw-r--r--test/files/jvm/actmig-instantiation.scala33
-rw-r--r--test/files/jvm/actmig-loop-react.scala19
-rw-r--r--test/files/jvm/actmig-public-methods.scala3
-rw-r--r--test/files/jvm/actmig-public-methods_1.scala4
-rw-r--r--test/files/jvm/actmig-react-receive.scala9
-rw-r--r--test/files/jvm/actmig-react-within.scala5
-rw-r--r--test/files/jvm/actmig-receive.scala1
-rw-r--r--test/files/neg/t5845.check5
-rw-r--r--test/files/pos/t4881.scala31
-rw-r--r--test/files/pos/t6311.scala5
-rw-r--r--test/files/run/fail-non-value-types.check3
-rw-r--r--test/files/run/fail-non-value-types.scala40
-rw-r--r--test/files/run/macro-reify-type.check1
-rw-r--r--test/files/run/macro-reify-type.flags1
-rw-r--r--test/files/run/macro-reify-type/Macros_1.scala27
-rw-r--r--test/files/run/macro-reify-type/Test_2.scala21
-rw-r--r--test/files/run/showraw_nosymbol.check1
-rw-r--r--test/files/run/showraw_nosymbol.scala5
-rw-r--r--test/files/run/t6380.check7
-rw-r--r--test/files/run/t6380.scala20
24 files changed, 203 insertions, 110 deletions
diff --git a/test/files/jvm/actmig-PinS_1.scala b/test/files/jvm/actmig-PinS_1.scala
index 876688ca75..495852e812 100644
--- a/test/files/jvm/actmig-PinS_1.scala
+++ b/test/files/jvm/actmig-PinS_1.scala
@@ -9,7 +9,7 @@ import scala.concurrent.{ Promise, Await }
object SillyActor {
val startPromise = Promise[Boolean]()
- val ref = MigrationSystem.actorOf(Props(() => new SillyActor, "akka.actor.default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new SillyActor)
}
/* PinS, Listing 32.1: A simple actor
@@ -27,7 +27,7 @@ class SillyActor extends Actor {
object SeriousActor {
val startPromise = Promise[Boolean]()
- val ref = MigrationSystem.actorOf(Props(() => new SeriousActor, "akka.actor.default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new SeriousActor)
}
class SeriousActor extends Actor {
@@ -72,7 +72,7 @@ object Test extends App {
/* PinS, Listing 32.2: An actor that calls receive
*/
- def makeEchoActor(): ActorRef = MigrationSystem.actorOf(Props(() => new Actor {
+ def makeEchoActor(): ActorRef = ActorDSL.actor(new Actor {
def act() {
while (true) {
receive {
@@ -83,20 +83,20 @@ object Test extends App {
}
}
}
- }, "akka.actor.default-stash-dispatcher"))
+ })
/* PinS, page 696
*/
- def makeIntActor(): ActorRef = MigrationSystem.actorOf(Props(() => new Actor {
+ def makeIntActor(): ActorRef = ActorDSL.actor(new Actor {
def act() {
receive {
case x: Int => // I only want Ints
println("Got an Int: " + x)
}
}
- }, "akka.actor.default-stash-dispatcher"))
+ })
- MigrationSystem.actorOf(Props(() => new Actor {
+ ActorDSL.actor(new Actor {
def act() {
trapExit = true
link(SillyActor.ref)
@@ -109,15 +109,14 @@ object Test extends App {
case Exit(_: SeriousActor, _) =>
val seriousPromise2 = Promise[Boolean]()
// PinS, page 694
- val seriousActor2 = MigrationSystem.actorOf(Props(() =>
+ val seriousActor2 = ActorDSL.actor(
new Actor {
def act() {
for (i <- 1 to 5)
println("That is the question.")
seriousPromise2.success(true)
}
- }
- , "akka.actor.default-stash-dispatcher"))
+ })
Await.ready(seriousPromise2.future, 5 seconds)
val echoActor = makeEchoActor()
@@ -136,5 +135,5 @@ object Test extends App {
}
}
}
- }, "akka.actor.default-stash-dispatcher"))
+ })
}
diff --git a/test/files/jvm/actmig-PinS_2.scala b/test/files/jvm/actmig-PinS_2.scala
index 7d12578f71..508525463f 100644
--- a/test/files/jvm/actmig-PinS_2.scala
+++ b/test/files/jvm/actmig-PinS_2.scala
@@ -9,7 +9,7 @@ import scala.concurrent.{ Promise, Await }
object SillyActor {
val startPromise = Promise[Boolean]()
- val ref = MigrationSystem.actorOf(Props(() => new SillyActor, "default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new SillyActor)
}
/* PinS, Listing 32.1: A simple actor
@@ -29,7 +29,7 @@ class SillyActor extends StashingActor {
object SeriousActor {
val startPromise = Promise[Boolean]()
- val ref = MigrationSystem.actorOf(Props(() => new SeriousActor, "default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new SeriousActor)
}
class SeriousActor extends StashingActor {
@@ -44,7 +44,7 @@ class SeriousActor extends StashingActor {
/* PinS, Listing 32.3: An actor that calls react
*/
object NameResolver {
- val ref = MigrationSystem.actorOf(Props(() => new NameResolver, "default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new NameResolver)
}
class NameResolver extends StashingActor {
@@ -80,7 +80,7 @@ object Test extends App {
/* PinS, Listing 32.2: An actor that calls receive
*/
- def makeEchoActor(): ActorRef = MigrationSystem.actorOf(Props(() =>
+ def makeEchoActor(): ActorRef = ActorDSL.actor(
new StashingActor {
def receive = { case _ => println("Nop") }
@@ -94,11 +94,11 @@ object Test extends App {
}
}
}
- }, "default-stash-dispatcher"))
+ })
/* PinS, page 696
*/
- def makeIntActor(): ActorRef = MigrationSystem.actorOf(Props(() =>new StashingActor {
+ def makeIntActor(): ActorRef = ActorDSL.actor(new StashingActor {
def receive = { case _ => println("Nop") }
@@ -108,9 +108,9 @@ object Test extends App {
println("Got an Int: " + x)
}
}
- }, "default-stash-dispatcher"))
+ })
- MigrationSystem.actorOf(Props(() => new StashingActor {
+ ActorDSL.actor(new StashingActor {
def receive = { case _ => println("Nop") }
@@ -126,7 +126,7 @@ object Test extends App {
case Exit(_: SeriousActor, _) =>
val seriousPromise2 = Promise[Boolean]()
// PinS, page 694
- val seriousActor2 = MigrationSystem.actorOf(Props(() =>{
+ val seriousActor2 = ActorDSL.actor(
new StashingActor {
def receive = { case _ => println("Nop") }
@@ -136,8 +136,7 @@ object Test extends App {
println("That is the question.")
seriousPromise2.success(true)
}
- }
- }, "default-stash-dispatcher"))
+ })
Await.ready(seriousPromise2.future, 5 seconds)
val echoActor = makeEchoActor()
@@ -156,5 +155,5 @@ object Test extends App {
}
}
}
- }, "default-stash-dispatcher"))
+ })
}
diff --git a/test/files/jvm/actmig-PinS_3.scala b/test/files/jvm/actmig-PinS_3.scala
index c2943008b0..6c6ec6789b 100644
--- a/test/files/jvm/actmig-PinS_3.scala
+++ b/test/files/jvm/actmig-PinS_3.scala
@@ -7,10 +7,9 @@ import scala.actors.migration._
import scala.concurrent.duration._
import scala.concurrent.{ Promise, Await }
-
object SillyActor {
val startPromise = Promise[Boolean]()
- val ref = MigrationSystem.actorOf(Props(() => new SillyActor, "default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new SillyActor)
}
/* PinS, Listing 32.1: A simple actor
@@ -32,7 +31,7 @@ class SillyActor extends StashingActor {
object SeriousActor {
val startPromise = Promise[Boolean]()
- val ref = MigrationSystem.actorOf(Props(() => new SeriousActor, "default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new SeriousActor)
}
class SeriousActor extends StashingActor {
@@ -48,7 +47,7 @@ class SeriousActor extends StashingActor {
/* PinS, Listing 32.3: An actor that calls react
*/
object NameResolver {
- val ref = MigrationSystem.actorOf(Props(() => new NameResolver, "default-stash-dispatcher"))
+ val ref = ActorDSL.actor(new NameResolver)
}
class NameResolver extends StashingActor {
@@ -78,7 +77,7 @@ object Test extends App {
/* PinS, Listing 32.2: An actor that calls receive
*/
- def makeEchoActor(): ActorRef = MigrationSystem.actorOf(Props(() => new StashingActor {
+ def makeEchoActor(): ActorRef = ActorDSL.actor(new StashingActor {
def receive = { // how to handle receive
case 'stop =>
@@ -86,11 +85,11 @@ object Test extends App {
case msg =>
println("received message: " + msg)
}
- }, "default-stash-dispatcher"))
+ })
/* PinS, page 696
*/
- def makeIntActor(): ActorRef = MigrationSystem.actorOf(Props(() => new StashingActor {
+ def makeIntActor(): ActorRef = ActorDSL.actor(new StashingActor {
def receive = {
case x: Int => // I only want Ints
@@ -99,9 +98,9 @@ object Test extends App {
context.stop(self)
case _ => stash()
}
- }, "default-stash-dispatcher"))
+ })
- MigrationSystem.actorOf(Props(() => new StashingActor {
+ ActorDSL.actor(new StashingActor {
val silly = SillyActor.ref
override def preStart() {
@@ -119,7 +118,7 @@ object Test extends App {
case Terminated(`serious`) =>
val seriousPromise2 = Promise[Boolean]()
// PinS, page 694
- val seriousActor2 = MigrationSystem.actorOf(Props(() => {
+ val seriousActor2 = ActorDSL.actor(
new StashingActor {
def receive = { case _ => context.stop(self) }
@@ -130,8 +129,7 @@ object Test extends App {
seriousPromise2.success(true)
context.stop(self)
}
- }
- }, "default-stash-dispatcher"))
+ })
Await.ready(seriousPromise2.future, 5 seconds)
val echoActor = makeEchoActor()
@@ -162,5 +160,5 @@ object Test extends App {
println("Stash 3 " + m)
stash(m)
}
- }, "default-stash-dispatcher"))
+ })
}
diff --git a/test/files/jvm/actmig-instantiation.check b/test/files/jvm/actmig-instantiation.check
index 4c13d5c0a1..08ef979794 100644
--- a/test/files/jvm/actmig-instantiation.check
+++ b/test/files/jvm/actmig-instantiation.check
@@ -1,5 +1,5 @@
-OK error: java.lang.RuntimeException: In order to create StashingActor one must use actorOf.
-OK error: java.lang.RuntimeException: Only one actor can be created per actorOf call.
+OK error: java.lang.RuntimeException: In order to create a StashingActor one must use the ActorDSL object
+OK error: java.lang.RuntimeException: Cannot create more than one actor
0
100
200
diff --git a/test/files/jvm/actmig-instantiation.scala b/test/files/jvm/actmig-instantiation.scala
index d54dff9558..2e3ffc3c30 100644
--- a/test/files/jvm/actmig-instantiation.scala
+++ b/test/files/jvm/actmig-instantiation.scala
@@ -2,7 +2,6 @@
* NOTE: Code snippets from this test are included in the Actor Migration Guide. In case you change
* code in these tests prior to the 2.10.0 release please send the notification to @vjovanov.
*/
-import scala.actors.migration.MigrationSystem._
import scala.actors.migration._
import scala.actors.Actor._
import scala.actors._
@@ -35,53 +34,53 @@ object Test {
a1 ! 100
// simple instantiation
- val a2 = MigrationSystem.actorOf(Props(() => new TestStashingActor, "akka.actor.default-stash-dispatcher"))
+ val a2 = ActorDSL.actor(new TestStashingActor)
a2 ! 200
toStop += a2
// actor of with scala actor
- val a3 = MigrationSystem.actorOf(Props(() => actor {
+ val a3 = ActorDSL.actor(actor {
react { case v: Int => Test.append(v); Test.latch.countDown() }
- }, "akka.actor.default-stash-dispatcher"))
+ })
a3 ! 300
// using the manifest
- val a4 = MigrationSystem.actorOf(Props(() => new TestStashingActor, "akka.actor.default-stash-dispatcher"))
+ val a4 = ActorDSL.actor(new TestStashingActor)
a4 ! 400
toStop += a4
// deterministic part of a test
- // creation without actorOf
+ // creation without actor
try {
val a3 = new TestStashingActor
a3 ! -1
} catch {
- case e => println("OK error: " + e)
+ case e: Throwable => println("OK error: " + e)
}
- // actorOf double creation
+ // actor double creation
try {
- val a3 = MigrationSystem.actorOf(Props(() => {
+ val a3 = ActorDSL.actor({
new TestStashingActor
new TestStashingActor
- }, "akka.actor.default-stash-dispatcher"))
+ })
a3 ! -1
} catch {
- case e => println("OK error: " + e)
+ case e: Throwable => println("OK error: " + e)
}
- // actorOf nesting
+ // actor nesting
try {
- val a5 = MigrationSystem.actorOf(Props(() => {
- val a6 = MigrationSystem.actorOf(Props(() => new TestStashingActor, "akka.actor.default-stash-dispatcher"))
+ val a5 = ActorDSL.actor({
+ val a6 = ActorDSL.actor(new TestStashingActor)
toStop += a6
new TestStashingActor
- }, "akka.actor.default-stash-dispatcher"))
+ })
a5 ! 500
toStop += a5
} catch {
- case e => println("Should not throw an exception: " + e)
+ case e: Throwable => println("Should not throw an exception: " + e)
}
// output
@@ -93,4 +92,4 @@ object Test {
buff.sorted.foreach(println)
toStop.foreach(_ ! PoisonPill)
}
-} \ No newline at end of file
+}
diff --git a/test/files/jvm/actmig-loop-react.scala b/test/files/jvm/actmig-loop-react.scala
index 7f4c6f96dc..c9a3664526 100644
--- a/test/files/jvm/actmig-loop-react.scala
+++ b/test/files/jvm/actmig-loop-react.scala
@@ -2,7 +2,6 @@
* NOTE: Code snippets from this test are included in the Actor Migration Guide. In case you change
* code in these tests prior to the 2.10.0 release please send the notification to @vjovanov.
*/
-import scala.actors.migration.MigrationSystem._
import scala.actors.Actor._
import scala.actors._
import scala.actors.migration._
@@ -40,7 +39,7 @@ object Test {
Await.ready(finishedLWCR1.future, 5 seconds)
// Loop with Condition Snippet - migrated
- val myAkkaActor = MigrationSystem.actorOf(Props(() => new StashingActor {
+ val myAkkaActor = ActorDSL.actor(new StashingActor {
def receive = {
case x: Int =>
@@ -51,7 +50,7 @@ object Test {
context.stop(self)
}
}
- }, "default-stashing-dispatcher"))
+ })
myAkkaActor ! 1
myAkkaActor ! 42
}
@@ -88,7 +87,7 @@ object Test {
Await.ready(finishedTNR1.future, 5 seconds)
// Loop with Condition Snippet - migrated
- val myAkkaActor = MigrationSystem.actorOf(Props(() => new StashingActor {
+ val myAkkaActor = ActorDSL.actor(new StashingActor {
def receive = {
case x: Int =>
@@ -107,7 +106,7 @@ object Test {
context.unbecome()
}).orElse { case x => stash() })
}
- }, "default-stashing-dispatcher"))
+ })
myAkkaActor ! 1
myAkkaActor ! "I am a String"
@@ -117,7 +116,7 @@ object Test {
def exceptionHandling() = {
// Stashing actor with act and exception handler
- val myActor = MigrationSystem.actorOf(Props(() => new StashingActor {
+ val myActor = ActorDSL.actor(new StashingActor {
def receive = { case _ => println("Dummy method.") }
override def act() = {
@@ -138,7 +137,7 @@ object Test {
case x: Exception => println("scala got exception")
}
- }, "default-stashing-dispatcher"))
+ })
myActor ! "work"
myActor ! "fail"
@@ -146,7 +145,7 @@ object Test {
Await.ready(finishedEH1.future, 5 seconds)
// Stashing actor in Akka style
- val myAkkaActor = MigrationSystem.actorOf(Props(() => new StashingActor {
+ val myAkkaActor = ActorDSL.actor(new StashingActor {
def receive = PFCatch({
case "fail" =>
throw new Exception("failed")
@@ -156,14 +155,14 @@ object Test {
finishedEH.success(true)
context.stop(self)
}, { case x: Exception => println("akka got exception") })
- }, "default-stashing-dispatcher"))
+ })
myAkkaActor ! "work"
myAkkaActor ! "fail"
myAkkaActor ! "die"
}
- def main(args: Array[String]) = {
+ def main(args: Array[String]): Unit = {
testLoopWithConditionReact()
Await.ready(finishedLWCR.future, 5 seconds)
exceptionHandling()
diff --git a/test/files/jvm/actmig-public-methods.scala b/test/files/jvm/actmig-public-methods.scala
index 58d7a1a9d4..8891c80668 100644
--- a/test/files/jvm/actmig-public-methods.scala
+++ b/test/files/jvm/actmig-public-methods.scala
@@ -5,7 +5,6 @@
import scala.collection.mutable.ArrayBuffer
import scala.actors.Actor._
import scala.actors._
-import scala.actors.migration.MigrationSystem
import scala.util.continuations._
import java.util.concurrent.{ TimeUnit, CountDownLatch }
@@ -71,4 +70,4 @@ object Test {
buff.sorted.foreach(println)
toStop.foreach(_ ! 'stop)
}
-} \ No newline at end of file
+}
diff --git a/test/files/jvm/actmig-public-methods_1.scala b/test/files/jvm/actmig-public-methods_1.scala
index 15516a5d51..db21ab983c 100644
--- a/test/files/jvm/actmig-public-methods_1.scala
+++ b/test/files/jvm/actmig-public-methods_1.scala
@@ -28,7 +28,7 @@ object Test {
def main(args: Array[String]) = {
- val respActor = MigrationSystem.actorOf(Props(() => actor {
+ val respActor = ActorDSL.actor(actor {
loop {
react {
case (x: String, time: Long) =>
@@ -41,7 +41,7 @@ object Test {
exit()
}
}
- }, "akka.actor.default-stash-dispatcher"))
+ })
toStop += respActor
diff --git a/test/files/jvm/actmig-react-receive.scala b/test/files/jvm/actmig-react-receive.scala
index 6adeac8b52..bf70ce0c46 100644
--- a/test/files/jvm/actmig-react-receive.scala
+++ b/test/files/jvm/actmig-react-receive.scala
@@ -2,7 +2,6 @@
* NOTE: Code snippets from this test are included in the Actor Migration Guide. In case you change
* code in these tests prior to the 2.10.0 release please send the notification to @vjovanov.
*/
-import scala.actors.migration.MigrationSystem._
import scala.actors.Actor._
import scala.actors._
import scala.actors.migration._
@@ -39,7 +38,7 @@ object Test {
Await.ready(finishedRSC1.future, 5 seconds)
// React Snippet - migrated
- val myAkkaActor = MigrationSystem.actorOf(Props(() => new StashingActor {
+ val myAkkaActor = ActorDSL.actor(new StashingActor {
override def preStart() = {
println("do before")
}
@@ -63,7 +62,7 @@ object Test {
finishedRSC.success(true)
}
- }, "default-stashing-dispatcher"))
+ })
myAkkaActor ! 1
myAkkaActor ! "1"
Await.ready(finishedRSC.future, 5 seconds)
@@ -88,7 +87,7 @@ object Test {
Await.ready(finishedRS1.future, 5 seconds)
// React Snippet - migrated
- val myAkkaActor = MigrationSystem.actorOf(Props(() => new StashingActor {
+ val myAkkaActor = ActorDSL.actor(new StashingActor {
override def preStart() = {
println("do before")
}
@@ -105,7 +104,7 @@ object Test {
finishedRS.success(true)
}
- }, "default-stashing-dispatcher"))
+ })
myAkkaActor ! 1
Await.ready(finishedRS.future, 5 seconds)
diff --git a/test/files/jvm/actmig-react-within.scala b/test/files/jvm/actmig-react-within.scala
index 43350ef120..3057398cb5 100644
--- a/test/files/jvm/actmig-react-within.scala
+++ b/test/files/jvm/actmig-react-within.scala
@@ -2,7 +2,6 @@
* NOTE: Code snippets from this test are included in the Actor Migration Guide. In case you change
* code in these tests prior to the 2.10.0 release please send the notification to @vjovanov.
*/
-import scala.actors.migration.MigrationSystem._
import scala.actors.Actor._
import scala.actors._
import scala.actors.migration._
@@ -27,7 +26,7 @@ object Test {
}
}
- val myActor = MigrationSystem.actorOf(Props(() => new StashingActor {
+ val myActor = ActorDSL.actor(new StashingActor {
context.setReceiveTimeout(1 millisecond)
def receive = {
case ReceiveTimeout =>
@@ -37,7 +36,7 @@ object Test {
case _ =>
println("Should not occur.")
}
- }, "default-stashing-dispatcher"))
+ })
}
def main(args: Array[String]) = {
diff --git a/test/files/jvm/actmig-receive.scala b/test/files/jvm/actmig-receive.scala
index 03dc1be63b..308643cf41 100644
--- a/test/files/jvm/actmig-receive.scala
+++ b/test/files/jvm/actmig-receive.scala
@@ -2,7 +2,6 @@
* NOTE: Code snippets from this test are included in the Actor Migration Guide. In case you change
* code in these tests prior to the 2.10.0 release please send the notification to @vjovanov.
*/
-import scala.actors.migration.MigrationSystem._
import scala.actors.Actor._
import scala.actors._
import scala.actors.migration._
diff --git a/test/files/neg/t5845.check b/test/files/neg/t5845.check
index c0b402fccb..8c6100d6de 100644
--- a/test/files/neg/t5845.check
+++ b/test/files/neg/t5845.check
@@ -1,4 +1,7 @@
+t5845.scala:9: error: value +++ is not a member of Int
+ println(5 +++ 5)
+ ^
t5845.scala:15: error: value +++ is not a member of Int
println(5 +++ 5)
^
-one error found
+two errors found
diff --git a/test/files/pos/t4881.scala b/test/files/pos/t4881.scala
deleted file mode 100644
index 46cfad9793..0000000000
--- a/test/files/pos/t4881.scala
+++ /dev/null
@@ -1,31 +0,0 @@
-class Contra[-T]
-trait A
-trait B extends A
-trait C extends B
-
-// test improved variance inference: first try formals to see in which variance positions the type param appears;
-// only when that fails to determine variance, look at result type
-object Test {
- def contraLBUB[a >: C <: A](): Contra[a] = null
- def contraLB[a >: C](): Contra[a] = null
-
-{
- val x = contraLBUB() //inferred Contra[C] instead of Contra[A]
- val x1: Contra[A] = x
-}
-
-{
- val x = contraLB() //inferred Contra[C] instead of Contra[Any]
- val x1: Contra[Any] = x
-}
-
-{
- val x = contraLBUB // make sure it does the same thing as its ()-less counterpart
- val x1: Contra[A] = x
-}
-
-{
- val x = contraLB
- val x1: Contra[Any] = x
-}
-}
diff --git a/test/files/pos/t6311.scala b/test/files/pos/t6311.scala
new file mode 100644
index 0000000000..d27ad2f502
--- /dev/null
+++ b/test/files/pos/t6311.scala
@@ -0,0 +1,5 @@
+class A {
+ def fooMinimal[T, Coll <: Traversable[T]](msg: String)(param1: Traversable[T])(param2: Coll): Traversable[T] = throw new Exception()
+
+ fooMinimal("")(List(1))(List(2))
+}
diff --git a/test/files/run/fail-non-value-types.check b/test/files/run/fail-non-value-types.check
new file mode 100644
index 0000000000..714dce2c50
--- /dev/null
+++ b/test/files/run/fail-non-value-types.check
@@ -0,0 +1,3 @@
+[B, That](f: A => B)(implicit cbf: ImaginaryCanBuildFrom[CompletelyIndependentList.this.Repr,B,That])That
+[B, That](f: Int => B)(implicit cbf: ImaginaryCanBuildFrom[CompletelyIndependentList[Int]#Repr,B,That])That
+()CompletelyIndependentList[A]
diff --git a/test/files/run/fail-non-value-types.scala b/test/files/run/fail-non-value-types.scala
new file mode 100644
index 0000000000..51198a5f31
--- /dev/null
+++ b/test/files/run/fail-non-value-types.scala
@@ -0,0 +1,40 @@
+import scala.reflect.runtime.universe._
+
+class ImaginaryCanBuildFrom[-From, -Elem, +To]
+class CompletelyIndependentList[+A] {
+ type Repr <: CompletelyIndependentList[A]
+ def map[B, That](f: A => B)(implicit cbf: ImaginaryCanBuildFrom[Repr, B, That]): That = ???
+ def distinct(): CompletelyIndependentList[A] = ???
+}
+
+object Test {
+ var failed = false
+ def expectFailure[T](body: => T): Boolean = {
+ try { val res = body ; failed = true ; println(res + " failed to fail.") ; false }
+ catch { case _: AssertionError => true }
+ }
+
+ /** Attempt to use a method type as a type argument - expect failure. */
+ def tcon[T: TypeTag](args: Type*) = appliedType(typeOf[T].typeConstructor, args.toList)
+
+ def cil = typeOf[CompletelyIndependentList[Int]]
+ def map = cil.member("map": TermName).asMethod
+ def distinct = cil.member("distinct": TermName).asMethod
+
+ def main(args: Array[String]): Unit = {
+ // Need the assert in there to fail.
+ // expectFailure(println(tcon[CompletelyIndependentList[Int]](map)))
+ // expectFailure(tcon[CompletelyIndependentList[Int]](distinct))
+
+ // Why is the first map signature printing showing an
+ // uninitialized symbol?
+ //
+ // [B <: <?>, That <: <?>](f: <?>)(implicit cbf: <?>)That
+ //
+
+ println(map.typeSignature)
+ println(map.typeSignatureIn(cil))
+ println(distinct.typeSignature)
+ if (failed) sys.exit(1)
+ }
+}
diff --git a/test/files/run/macro-reify-type.check b/test/files/run/macro-reify-type.check
new file mode 100644
index 0000000000..ea5e70e10d
--- /dev/null
+++ b/test/files/run/macro-reify-type.check
@@ -0,0 +1 @@
+[B, That](f: Int => B)(implicit bf: scala.collection.generic.CanBuildFrom[List[Int],B,That])That \ No newline at end of file
diff --git a/test/files/run/macro-reify-type.flags b/test/files/run/macro-reify-type.flags
new file mode 100644
index 0000000000..cd66464f2f
--- /dev/null
+++ b/test/files/run/macro-reify-type.flags
@@ -0,0 +1 @@
+-language:experimental.macros \ No newline at end of file
diff --git a/test/files/run/macro-reify-type/Macros_1.scala b/test/files/run/macro-reify-type/Macros_1.scala
new file mode 100644
index 0000000000..06de05735d
--- /dev/null
+++ b/test/files/run/macro-reify-type/Macros_1.scala
@@ -0,0 +1,27 @@
+import scala.reflect.macros.Context
+import scala.reflect.runtime.{universe => ru}
+
+object StaticReflect {
+ def method[A](name: String): ru.Type = macro methodImpl[A]
+
+ def methodImpl[A: c.WeakTypeTag](c: Context)(name: c.Expr[String]): c.Expr[ru.Type] = {
+ import c.universe._
+
+ val nameName: TermName = name.tree match {
+ case Literal(Constant(str: String)) => newTermName(str)
+ case _ => c.error(c.enclosingPosition, s"Method name not constant.") ; return reify(ru.NoType)
+ }
+ val clazz = weakTypeOf[A]
+
+ clazz member nameName match {
+ case NoSymbol => c.error(c.enclosingPosition, s"No member called $nameName in $clazz.") ; reify(ru.NoType)
+ case member =>
+ val mtpe = member typeSignatureIn clazz
+ val mtag = c.reifyType(treeBuild.mkRuntimeUniverseRef, Select(treeBuild.mkRuntimeUniverseRef, newTermName("rootMirror")), mtpe)
+ val mtree = Select(mtag, newTermName("tpe"))
+
+ c.Expr[ru.Type](mtree)
+ }
+ }
+
+}
diff --git a/test/files/run/macro-reify-type/Test_2.scala b/test/files/run/macro-reify-type/Test_2.scala
new file mode 100644
index 0000000000..9beaf98681
--- /dev/null
+++ b/test/files/run/macro-reify-type/Test_2.scala
@@ -0,0 +1,21 @@
+import StaticReflect._
+
+object Test extends App {
+ //println(method[List[Int]]("distinct"))
+ println(method[List[Int]]("map"))
+ //val $u: scala.reflect.runtime.universe.type = scala.reflect.runtime.universe;
+ //val $m: $u.Mirror = scala.reflect.runtime.universe.rootMirror;
+ //import $u._, $m._, Flag._
+ //val tpe = {
+ // val symdef$B2 = build.newNestedSymbol(build.selectTerm(staticClass("scala.collection.TraversableLike"), "map"), newTypeName("B"), NoPosition, DEFERRED | PARAM, false);
+ // val symdef$That2 = build.newNestedSymbol(build.selectTerm(staticClass("scala.collection.TraversableLike"), "map"), newTypeName("That"), NoPosition, DEFERRED | PARAM, false);
+ // val symdef$f2 = build.newNestedSymbol(build.selectTerm(staticClass("scala.collection.TraversableLike"), "map"), newTermName("f"), NoPosition, PARAM, false);
+ // val symdef$bf2 = build.newNestedSymbol(build.selectTerm(staticClass("scala.collection.TraversableLike"), "map"), newTermName("bf"), NoPosition, IMPLICIT | PARAM, false);
+ // build.setTypeSignature(symdef$B2, TypeBounds(staticClass("scala.Nothing").asType.toTypeConstructor, staticClass("scala.Any").asType.toTypeConstructor));
+ // build.setTypeSignature(symdef$That2, TypeBounds(staticClass("scala.Nothing").asType.toTypeConstructor, staticClass("scala.Any").asType.toTypeConstructor));
+ // build.setTypeSignature(symdef$f2, TypeRef(ThisType(staticPackage("scala").asModule.moduleClass), staticClass("scala.Function1"), List(staticClass("scala.Int").asType.toTypeConstructor, TypeRef(NoPrefix, symdef$B2, List()))));
+ // build.setTypeSignature(symdef$bf2, TypeRef(ThisType(staticPackage("scala.collection.generic").asModule.moduleClass), staticClass("scala.collection.generic.CanBuildFrom"), List(TypeRef(ThisType(staticPackage("scala.collection.immutable").asModule.moduleClass), staticClass("scala.collection.immutable.List"), List(staticClass("scala.Int").asType.toTypeConstructor)), TypeRef(NoPrefix, symdef$B2, List()), TypeRef(NoPrefix, symdef$That2, List()))));
+ // PolyType(List(symdef$B2, symdef$That2), MethodType(List(symdef$f2), MethodType(List(symdef$bf2), TypeRef(NoPrefix, symdef$That2, List()))))
+ //}
+ //println(tpe)
+} \ No newline at end of file
diff --git a/test/files/run/showraw_nosymbol.check b/test/files/run/showraw_nosymbol.check
new file mode 100644
index 0000000000..c54fe74717
--- /dev/null
+++ b/test/files/run/showraw_nosymbol.check
@@ -0,0 +1 @@
+NoSymbol
diff --git a/test/files/run/showraw_nosymbol.scala b/test/files/run/showraw_nosymbol.scala
new file mode 100644
index 0000000000..fbdc1591c9
--- /dev/null
+++ b/test/files/run/showraw_nosymbol.scala
@@ -0,0 +1,5 @@
+import scala.reflect.runtime.universe._
+
+object Test extends App {
+ println(showRaw(NoSymbol))
+} \ No newline at end of file
diff --git a/test/files/run/t6380.check b/test/files/run/t6380.check
new file mode 100644
index 0000000000..912525ed66
--- /dev/null
+++ b/test/files/run/t6380.check
@@ -0,0 +1,7 @@
+List(class java.lang.Exception)
+List(class java.lang.Throwable)
+List(class java.lang.RuntimeException)
+List(class java.lang.IllegalArgumentException, class java.util.NoSuchElementException)
+List(class java.lang.IndexOutOfBoundsException, class java.lang.IndexOutOfBoundsException)
+List(class java.lang.IllegalStateException, class java.lang.IllegalStateException)
+List(class java.lang.NullPointerException, class java.lang.NullPointerException)
diff --git a/test/files/run/t6380.scala b/test/files/run/t6380.scala
new file mode 100644
index 0000000000..0e264d9175
--- /dev/null
+++ b/test/files/run/t6380.scala
@@ -0,0 +1,20 @@
+object Test extends App {
+ classOf[Foo].getDeclaredMethods().sortBy(_.getName).map(_.getExceptionTypes.sortBy(_.getName).toList).toList.foreach(println)
+}
+
+class Foo {
+ @throws[Exception]
+ def bar1 = ???
+ @throws[Throwable]("always")
+ def bar2 = ???
+ @throws(classOf[RuntimeException])
+ def bar3 = ???
+ @throws[IllegalArgumentException] @throws[NoSuchElementException]
+ def bar4 = ???
+ @throws(classOf[IndexOutOfBoundsException]) @throws(classOf[IndexOutOfBoundsException])
+ def bar5 = ???
+ @throws[IllegalStateException]("Cause") @throws[IllegalStateException]
+ def bar6 = ???
+ @throws[NullPointerException]("Cause A") @throws[NullPointerException]("Cause B")
+ def bar7 = ???
+} \ No newline at end of file