summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/files/pos/t6028/t6028_1.scala3
-rw-r--r--test/files/pos/t6028/t6028_2.scala4
-rw-r--r--test/files/run/t5588.check2
-rw-r--r--test/files/run/t5588.scala14
-rw-r--r--test/files/run/t6028.check84
-rw-r--r--test/files/run/t6028.scala21
-rw-r--r--test/files/run/t6077_patmat_cse_irrefutable.check1
-rw-r--r--test/files/run/t6077_patmat_cse_irrefutable.scala13
-rw-r--r--test/files/run/valueclasses-classmanifest-basic.check1
-rw-r--r--test/files/run/valueclasses-classmanifest-basic.scala5
-rw-r--r--test/files/run/valueclasses-classmanifest-existential.check1
-rw-r--r--test/files/run/valueclasses-classmanifest-existential.scala5
-rw-r--r--test/files/run/valueclasses-classmanifest-generic.check1
-rw-r--r--test/files/run/valueclasses-classmanifest-generic.scala5
-rw-r--r--test/files/run/valueclasses-classtag-basic.check1
-rw-r--r--test/files/run/valueclasses-classtag-basic.scala5
-rw-r--r--test/files/run/valueclasses-classtag-existential.check1
-rw-r--r--test/files/run/valueclasses-classtag-existential.scala5
-rw-r--r--test/files/run/valueclasses-classtag-generic.check1
-rw-r--r--test/files/run/valueclasses-classtag-generic.scala5
-rw-r--r--test/files/run/valueclasses-manifest-basic.check1
-rw-r--r--test/files/run/valueclasses-manifest-basic.scala5
-rw-r--r--test/files/run/valueclasses-manifest-existential.check1
-rw-r--r--test/files/run/valueclasses-manifest-existential.scala5
-rw-r--r--test/files/run/valueclasses-manifest-generic.check1
-rw-r--r--test/files/run/valueclasses-manifest-generic.scala5
-rw-r--r--test/files/run/valueclasses-typetag-basic.check1
-rw-r--r--test/files/run/valueclasses-typetag-basic.scala5
-rw-r--r--test/files/run/valueclasses-typetag-existential.check1
-rw-r--r--test/files/run/valueclasses-typetag-existential.scala5
-rw-r--r--test/files/run/valueclasses-typetag-generic.check1
-rw-r--r--test/files/run/valueclasses-typetag-generic.scala5
-rw-r--r--test/files/specialized/t6035.check1
-rw-r--r--test/files/specialized/t6035/first_1.scala5
-rw-r--r--test/files/specialized/t6035/second_2.scala13
35 files changed, 233 insertions, 0 deletions
diff --git a/test/files/pos/t6028/t6028_1.scala b/test/files/pos/t6028/t6028_1.scala
new file mode 100644
index 0000000000..6edb76069e
--- /dev/null
+++ b/test/files/pos/t6028/t6028_1.scala
@@ -0,0 +1,3 @@
+class C {
+ def foo(a: Int): Unit = () => a
+}
diff --git a/test/files/pos/t6028/t6028_2.scala b/test/files/pos/t6028/t6028_2.scala
new file mode 100644
index 0000000000..f44048c0ab
--- /dev/null
+++ b/test/files/pos/t6028/t6028_2.scala
@@ -0,0 +1,4 @@
+object Test {
+ // ensure that parameter names are untouched by lambdalift
+ new C().foo(a = 0)
+}
diff --git a/test/files/run/t5588.check b/test/files/run/t5588.check
new file mode 100644
index 0000000000..bb101b641b
--- /dev/null
+++ b/test/files/run/t5588.check
@@ -0,0 +1,2 @@
+true
+true
diff --git a/test/files/run/t5588.scala b/test/files/run/t5588.scala
new file mode 100644
index 0000000000..f214d16684
--- /dev/null
+++ b/test/files/run/t5588.scala
@@ -0,0 +1,14 @@
+object Test {
+ object MyEnum extends Enumeration {
+ val Foo = Value(2000000000)
+ val Bar = Value(-2000000000)
+ val X = Value(Integer.MAX_VALUE)
+ val Y = Value(Integer.MIN_VALUE)
+ }
+
+ import MyEnum._
+ def main(args: Array[String]) {
+ println(Foo > Bar)
+ println(X > Y)
+ }
+}
diff --git a/test/files/run/t6028.check b/test/files/run/t6028.check
new file mode 100644
index 0000000000..dca61115ad
--- /dev/null
+++ b/test/files/run/t6028.check
@@ -0,0 +1,84 @@
+[[syntax trees at end of lambdalift]] // newSource1
+package <empty> {
+ class T extends Object {
+ <paramaccessor> val T$$classParam: Int = _;
+ def <init>(classParam: Int): T = {
+ T.super.<init>();
+ ()
+ };
+ private[this] val field: Int = 0;
+ <stable> <accessor> def field(): Int = T.this.field;
+ def foo(methodParam: Int): Function0 = {
+ val methodLocal: Int = 0;
+ {
+ (new anonymous class $anonfun$foo$1(T.this, methodParam, methodLocal): Function0)
+ }
+ };
+ def bar(barParam: Int): Object = {
+ @volatile var MethodLocalObject$module: scala.runtime.VolatileObjectRef = new scala.runtime.VolatileObjectRef(<empty>);
+ T.this.MethodLocalObject$1(barParam, MethodLocalObject$module)
+ };
+ def tryy(tryyParam: Int): Function0 = {
+ var tryyLocal: scala.runtime.IntRef = new scala.runtime.IntRef(0);
+ {
+ (new anonymous class $anonfun$tryy$1(T.this, tryyParam, tryyLocal): Function0)
+ }
+ };
+ @SerialVersionUID(0) final <synthetic> class $anonfun$foo$1 extends scala.runtime.AbstractFunction0$mcI$sp with Serializable {
+ def <init>($outer: T, methodParam$1: Int, methodLocal$1: Int): anonymous class $anonfun$foo$1 = {
+ $anonfun$foo$1.super.<init>();
+ ()
+ };
+ final def apply(): Int = $anonfun$foo$1.this.apply$mcI$sp();
+ <specialized> def apply$mcI$sp(): Int = $anonfun$foo$1.this.$outer.T$$classParam.+($anonfun$foo$1.this.$outer.field()).+($anonfun$foo$1.this.methodParam$1).+($anonfun$foo$1.this.methodLocal$1);
+ <synthetic> <paramaccessor> private[this] val $outer: T = _;
+ <synthetic> <stable> def T$$anonfun$$$outer(): T = $anonfun$foo$1.this.$outer;
+ final <bridge> def apply(): Object = scala.Int.box($anonfun$foo$1.this.apply());
+ <synthetic> <paramaccessor> private[this] val methodParam$1: Int = _;
+ <synthetic> <paramaccessor> private[this] val methodLocal$1: Int = _
+ };
+ abstract trait MethodLocalTrait$1 extends Object {
+ <synthetic> <stable> def T$MethodLocalTrait$$$outer(): T
+ };
+ object MethodLocalObject$2 extends Object with T#MethodLocalTrait$1 {
+ def <init>($outer: T, barParam$1: Int): ... = {
+ MethodLocalObject$2.super.<init>();
+ MethodLocalObject$2.this.$asInstanceOf[T#MethodLocalTrait$1$class]()./*MethodLocalTrait$1$class*/$init$(barParam$1);
+ ()
+ };
+ <synthetic> <paramaccessor> private[this] val $outer: T = _;
+ <synthetic> <stable> def T$MethodLocalObject$$$outer(): T = MethodLocalObject$2.this.$outer;
+ <synthetic> <stable> def T$MethodLocalTrait$$$outer(): T = MethodLocalObject$2.this.$outer
+ };
+ final <stable> private[this] def MethodLocalObject$1(barParam$1: Int, MethodLocalObject$module$1: scala.runtime.VolatileObjectRef): ... = {
+ MethodLocalObject$module$1.elem = new ...(T.this, barParam$1);
+ MethodLocalObject$module$1.elem.$asInstanceOf[...]()
+ };
+ abstract trait MethodLocalTrait$1$class extends Object with T#MethodLocalTrait$1 {
+ def /*MethodLocalTrait$1$class*/$init$(barParam$1: Int): Unit = {
+ ()
+ };
+ scala.this.Predef.print(scala.Int.box(barParam$1))
+ };
+ @SerialVersionUID(0) final <synthetic> class $anonfun$tryy$1 extends scala.runtime.AbstractFunction0$mcV$sp with Serializable {
+ def <init>($outer: T, tryyParam$1: Int, tryyLocal$1: scala.runtime.IntRef): anonymous class $anonfun$tryy$1 = {
+ $anonfun$tryy$1.super.<init>();
+ ()
+ };
+ final def apply(): Unit = $anonfun$tryy$1.this.apply$mcV$sp();
+ <specialized> def apply$mcV$sp(): Unit = try {
+ $anonfun$tryy$1.this.tryyLocal$1.elem = $anonfun$tryy$1.this.tryyParam$1
+ } finally ();
+ <synthetic> <paramaccessor> private[this] val $outer: T = _;
+ <synthetic> <stable> def T$$anonfun$$$outer(): T = $anonfun$tryy$1.this.$outer;
+ final <bridge> def apply(): Object = {
+ $anonfun$tryy$1.this.apply();
+ scala.runtime.BoxedUnit.UNIT
+ };
+ <synthetic> <paramaccessor> private[this] val tryyParam$1: Int = _;
+ <synthetic> <paramaccessor> private[this] val tryyLocal$1: scala.runtime.IntRef = _
+ }
+ }
+}
+
+warning: there were 1 feature warnings; re-run with -feature for details
diff --git a/test/files/run/t6028.scala b/test/files/run/t6028.scala
new file mode 100644
index 0000000000..cab17535fc
--- /dev/null
+++ b/test/files/run/t6028.scala
@@ -0,0 +1,21 @@
+import scala.tools.partest._
+import java.io.{Console => _, _}
+
+object Test extends DirectTest {
+
+ override def extraSettings: String = "-usejavacp -Xprint:lambdalift -d " + testOutput.path
+
+ override def code = """class T(classParam: Int) {
+ | val field: Int = 0
+ | def foo(methodParam: Int) = {val methodLocal = 0 ; () => classParam + field + methodParam + methodLocal }
+ | def bar(barParam: Int) = { trait MethodLocalTrait { print(barParam) }; object MethodLocalObject extends MethodLocalTrait; MethodLocalObject }
+ | def tryy(tryyParam: Int) = { var tryyLocal = 0; () => try { tryyLocal = tryyParam } finally () }
+ |}
+ |""".stripMargin.trim
+
+ override def show(): Unit = {
+ Console.withErr(System.out) {
+ compile()
+ }
+ }
+}
diff --git a/test/files/run/t6077_patmat_cse_irrefutable.check b/test/files/run/t6077_patmat_cse_irrefutable.check
new file mode 100644
index 0000000000..9766475a41
--- /dev/null
+++ b/test/files/run/t6077_patmat_cse_irrefutable.check
@@ -0,0 +1 @@
+ok
diff --git a/test/files/run/t6077_patmat_cse_irrefutable.scala b/test/files/run/t6077_patmat_cse_irrefutable.scala
new file mode 100644
index 0000000000..b130ae7813
--- /dev/null
+++ b/test/files/run/t6077_patmat_cse_irrefutable.scala
@@ -0,0 +1,13 @@
+class LiteralNode(val value: Any)
+
+object LiteralNode {
+ // irrefutable
+ def unapply(n: LiteralNode) = Some(n.value)
+}
+
+object Test extends App {
+ ((new LiteralNode(false)): Any) match {
+ case LiteralNode(true) => println("uh-oh")
+ case LiteralNode(false) => println("ok")
+ }
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-classmanifest-basic.check b/test/files/run/valueclasses-classmanifest-basic.check
new file mode 100644
index 0000000000..554c75e074
--- /dev/null
+++ b/test/files/run/valueclasses-classmanifest-basic.check
@@ -0,0 +1 @@
+Foo
diff --git a/test/files/run/valueclasses-classmanifest-basic.scala b/test/files/run/valueclasses-classmanifest-basic.scala
new file mode 100644
index 0000000000..c2aa08ef86
--- /dev/null
+++ b/test/files/run/valueclasses-classmanifest-basic.scala
@@ -0,0 +1,5 @@
+class Foo(val x: Int) extends AnyVal
+
+object Test extends App {
+ println(classManifest[Foo])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-classmanifest-existential.check b/test/files/run/valueclasses-classmanifest-existential.check
new file mode 100644
index 0000000000..e9fc6e27ea
--- /dev/null
+++ b/test/files/run/valueclasses-classmanifest-existential.check
@@ -0,0 +1 @@
+Foo[<?>]
diff --git a/test/files/run/valueclasses-classmanifest-existential.scala b/test/files/run/valueclasses-classmanifest-existential.scala
new file mode 100644
index 0000000000..11999df678
--- /dev/null
+++ b/test/files/run/valueclasses-classmanifest-existential.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(classManifest[Foo[_]])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-classmanifest-generic.check b/test/files/run/valueclasses-classmanifest-generic.check
new file mode 100644
index 0000000000..1418c5cff9
--- /dev/null
+++ b/test/files/run/valueclasses-classmanifest-generic.check
@@ -0,0 +1 @@
+Foo[java.lang.String]
diff --git a/test/files/run/valueclasses-classmanifest-generic.scala b/test/files/run/valueclasses-classmanifest-generic.scala
new file mode 100644
index 0000000000..280152dc1d
--- /dev/null
+++ b/test/files/run/valueclasses-classmanifest-generic.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(classManifest[Foo[String]])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-classtag-basic.check b/test/files/run/valueclasses-classtag-basic.check
new file mode 100644
index 0000000000..0c13986b32
--- /dev/null
+++ b/test/files/run/valueclasses-classtag-basic.check
@@ -0,0 +1 @@
+ClassTag[class Foo]
diff --git a/test/files/run/valueclasses-classtag-basic.scala b/test/files/run/valueclasses-classtag-basic.scala
new file mode 100644
index 0000000000..912a4bb019
--- /dev/null
+++ b/test/files/run/valueclasses-classtag-basic.scala
@@ -0,0 +1,5 @@
+class Foo(val x: Int) extends AnyVal
+
+object Test extends App {
+ println(scala.reflect.classTag[Foo])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-classtag-existential.check b/test/files/run/valueclasses-classtag-existential.check
new file mode 100644
index 0000000000..95e94e7aee
--- /dev/null
+++ b/test/files/run/valueclasses-classtag-existential.check
@@ -0,0 +1 @@
+ClassTag[class java.lang.Object]
diff --git a/test/files/run/valueclasses-classtag-existential.scala b/test/files/run/valueclasses-classtag-existential.scala
new file mode 100644
index 0000000000..e0db9cdd75
--- /dev/null
+++ b/test/files/run/valueclasses-classtag-existential.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(scala.reflect.classTag[Foo[_]])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-classtag-generic.check b/test/files/run/valueclasses-classtag-generic.check
new file mode 100644
index 0000000000..0c13986b32
--- /dev/null
+++ b/test/files/run/valueclasses-classtag-generic.check
@@ -0,0 +1 @@
+ClassTag[class Foo]
diff --git a/test/files/run/valueclasses-classtag-generic.scala b/test/files/run/valueclasses-classtag-generic.scala
new file mode 100644
index 0000000000..bd1f213835
--- /dev/null
+++ b/test/files/run/valueclasses-classtag-generic.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(scala.reflect.classTag[Foo[String]])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-manifest-basic.check b/test/files/run/valueclasses-manifest-basic.check
new file mode 100644
index 0000000000..554c75e074
--- /dev/null
+++ b/test/files/run/valueclasses-manifest-basic.check
@@ -0,0 +1 @@
+Foo
diff --git a/test/files/run/valueclasses-manifest-basic.scala b/test/files/run/valueclasses-manifest-basic.scala
new file mode 100644
index 0000000000..eefab20168
--- /dev/null
+++ b/test/files/run/valueclasses-manifest-basic.scala
@@ -0,0 +1,5 @@
+class Foo(val x: Int) extends AnyVal
+
+object Test extends App {
+ println(manifest[Foo])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-manifest-existential.check b/test/files/run/valueclasses-manifest-existential.check
new file mode 100644
index 0000000000..fdce051039
--- /dev/null
+++ b/test/files/run/valueclasses-manifest-existential.check
@@ -0,0 +1 @@
+Foo[_ <: Any]
diff --git a/test/files/run/valueclasses-manifest-existential.scala b/test/files/run/valueclasses-manifest-existential.scala
new file mode 100644
index 0000000000..47eb6d64dd
--- /dev/null
+++ b/test/files/run/valueclasses-manifest-existential.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(manifest[Foo[_]])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-manifest-generic.check b/test/files/run/valueclasses-manifest-generic.check
new file mode 100644
index 0000000000..1418c5cff9
--- /dev/null
+++ b/test/files/run/valueclasses-manifest-generic.check
@@ -0,0 +1 @@
+Foo[java.lang.String]
diff --git a/test/files/run/valueclasses-manifest-generic.scala b/test/files/run/valueclasses-manifest-generic.scala
new file mode 100644
index 0000000000..18313fba6f
--- /dev/null
+++ b/test/files/run/valueclasses-manifest-generic.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(manifest[Foo[String]])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-typetag-basic.check b/test/files/run/valueclasses-typetag-basic.check
new file mode 100644
index 0000000000..554c75e074
--- /dev/null
+++ b/test/files/run/valueclasses-typetag-basic.check
@@ -0,0 +1 @@
+Foo
diff --git a/test/files/run/valueclasses-typetag-basic.scala b/test/files/run/valueclasses-typetag-basic.scala
new file mode 100644
index 0000000000..d0243f7378
--- /dev/null
+++ b/test/files/run/valueclasses-typetag-basic.scala
@@ -0,0 +1,5 @@
+class Foo(val x: Int) extends AnyVal
+
+object Test extends App {
+ println(scala.reflect.runtime.universe.typeOf[Foo])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-typetag-existential.check b/test/files/run/valueclasses-typetag-existential.check
new file mode 100644
index 0000000000..0efa24a45f
--- /dev/null
+++ b/test/files/run/valueclasses-typetag-existential.check
@@ -0,0 +1 @@
+Foo[_]
diff --git a/test/files/run/valueclasses-typetag-existential.scala b/test/files/run/valueclasses-typetag-existential.scala
new file mode 100644
index 0000000000..4cdaa44a83
--- /dev/null
+++ b/test/files/run/valueclasses-typetag-existential.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(scala.reflect.runtime.universe.typeOf[Foo[_]])
+} \ No newline at end of file
diff --git a/test/files/run/valueclasses-typetag-generic.check b/test/files/run/valueclasses-typetag-generic.check
new file mode 100644
index 0000000000..fce2e64f79
--- /dev/null
+++ b/test/files/run/valueclasses-typetag-generic.check
@@ -0,0 +1 @@
+Foo[String]
diff --git a/test/files/run/valueclasses-typetag-generic.scala b/test/files/run/valueclasses-typetag-generic.scala
new file mode 100644
index 0000000000..eb32dfcadb
--- /dev/null
+++ b/test/files/run/valueclasses-typetag-generic.scala
@@ -0,0 +1,5 @@
+class Foo[T](val x: T) extends AnyVal
+
+object Test extends App {
+ println(scala.reflect.runtime.universe.typeOf[Foo[String]])
+} \ No newline at end of file
diff --git a/test/files/specialized/t6035.check b/test/files/specialized/t6035.check
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/test/files/specialized/t6035.check
@@ -0,0 +1 @@
+0
diff --git a/test/files/specialized/t6035/first_1.scala b/test/files/specialized/t6035/first_1.scala
new file mode 100644
index 0000000000..1289e9f48e
--- /dev/null
+++ b/test/files/specialized/t6035/first_1.scala
@@ -0,0 +1,5 @@
+trait Foo[@specialized(Int) A] {
+ def foo(x: A): A
+}
+
+abstract class Inter extends Foo[Int]
diff --git a/test/files/specialized/t6035/second_2.scala b/test/files/specialized/t6035/second_2.scala
new file mode 100644
index 0000000000..fb317e2a6a
--- /dev/null
+++ b/test/files/specialized/t6035/second_2.scala
@@ -0,0 +1,13 @@
+class Baz extends Inter {
+ def foo(x: Int) = x + 1
+}
+
+object Test {
+ def main(args: Array[String]) {
+ // it's important that the type is Inter so we do not call Baz.foo(I)I directly!
+ val baz: Inter = new Baz
+ // here we should go through specialized version of foo and thus have zero boxing
+ baz.foo(1)
+ println(runtime.BoxesRunTime.integerBoxCount)
+ }
+}