summaryrefslogtreecommitdiff
path: root/test/files/specialized/spec-t3896.scala
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2011-01-17 15:18:06 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2011-01-17 15:18:06 +0000
commit16e7ad360d1a902d6bd5c845642dbe14bcecdb9d (patch)
treea189e624a75dbb47a689a821208b41b0141e2ee0 /test/files/specialized/spec-t3896.scala
parentbe2778d50f1a73a941c6ffe6355f0ed401d6d8eb (diff)
downloadscala-16e7ad360d1a902d6bd5c845642dbe14bcecdb9d.tar.gz
scala-16e7ad360d1a902d6bd5c845642dbe14bcecdb9d.tar.bz2
scala-16e7ad360d1a902d6bd5c845642dbe14bcecdb9d.zip
Adapted specialization tests to track number of...
Adapted specialization tests to track number of boxings. Review by dragos
Diffstat (limited to 'test/files/specialized/spec-t3896.scala')
-rw-r--r--test/files/specialized/spec-t3896.scala20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/files/specialized/spec-t3896.scala b/test/files/specialized/spec-t3896.scala
new file mode 100644
index 0000000000..89326b4284
--- /dev/null
+++ b/test/files/specialized/spec-t3896.scala
@@ -0,0 +1,20 @@
+// see ticket #3896. Tests interaction between overloading, specialization and default params
+trait Atomic[@specialized(Boolean) T] {
+ def x: T
+
+ // crash depends on the overloading: if second method is "g", no crash.
+ def f(fn: T => T): Boolean = f(fn(x))
+ def f[R](a: T, b: R = true) = b
+}
+class AtomicBoolean(val x: Boolean) extends Atomic[Boolean]
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val e = new AtomicBoolean(false)
+ val x = e.f( (a : Boolean) => !a ) // ok
+ println( e.f( (a : Boolean) => !a ) toString ) // ok
+ println( e.f( (a : Boolean) => !a) ) // compiler crash
+
+ println(runtime.BoxesRunTime.integerBoxCount)
+ }
+}