diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2011-01-05 17:37:24 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2011-01-05 17:37:24 +0000 |
commit | 86044e0e548442024af79b7076c02df59473792d (patch) | |
tree | 5ff235c6965e512c808f3886d56fca556844d6a4 /test | |
parent | 66c9b6a949da26ac31119ed1c4cd57d3d637cc0f (diff) | |
download | scala-86044e0e548442024af79b7076c02df59473792d.tar.gz scala-86044e0e548442024af79b7076c02df59473792d.tar.bz2 scala-86044e0e548442024af79b7076c02df59473792d.zip |
Fixed a bad interaction between overloading, de...
Fixed a bad interaction between overloading, default parameters and
specialization. Closes #3896, no review.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/spec-t3896.check | 2 | ||||
-rw-r--r-- | test/files/run/spec-t3896.scala | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/test/files/run/spec-t3896.check b/test/files/run/spec-t3896.check new file mode 100644 index 0000000000..bb101b641b --- /dev/null +++ b/test/files/run/spec-t3896.check @@ -0,0 +1,2 @@ +true +true diff --git a/test/files/run/spec-t3896.scala b/test/files/run/spec-t3896.scala new file mode 100644 index 0000000000..4c4dadbe13 --- /dev/null +++ b/test/files/run/spec-t3896.scala @@ -0,0 +1,18 @@ +// 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 + } +} |