diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-13 16:59:04 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-13 16:59:04 -0800 |
commit | aa2f4a6f31b51e54d2486ba84eb5b8dd85793a74 (patch) | |
tree | e2ff84b5b8a15957e812de204b968a1894e83679 /test | |
parent | c83e01d47d941265fa5415c0f29a884c904fdfa0 (diff) | |
parent | 1067e23506aca5083ca915f1dbd7dba689170b36 (diff) | |
download | scala-aa2f4a6f31b51e54d2486ba84eb5b8dd85793a74.tar.gz scala-aa2f4a6f31b51e54d2486ba84eb5b8dd85793a74.tar.bz2 scala-aa2f4a6f31b51e54d2486ba84eb5b8dd85793a74.zip |
Merge pull request #3524 from paulp/pr/8280
SI-8280 regression in implicit selection.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/t8280.check | 9 | ||||
-rw-r--r-- | test/files/run/t8280.scala | 82 |
2 files changed, 91 insertions, 0 deletions
diff --git a/test/files/run/t8280.check b/test/files/run/t8280.check new file mode 100644 index 0000000000..ed392841c7 --- /dev/null +++ b/test/files/run/t8280.check @@ -0,0 +1,9 @@ +Int +Int +Int +Int +Int +Int +Int +Int +Int diff --git a/test/files/run/t8280.scala b/test/files/run/t8280.scala new file mode 100644 index 0000000000..0734d63b6e --- /dev/null +++ b/test/files/run/t8280.scala @@ -0,0 +1,82 @@ +import scala.language.implicitConversions + +object Test { + def main(args: Array[String]): Unit = { + Moop1.ob1 + Moop1.ob2 + Moop1.ob3 + Moop2.ob1 + Moop2.ob2 + Moop2.ob3 + Moop3.ob1 + Moop3.ob2 + Moop3.ob3 + } +} + +// int object vs. +object Moop1 { + object ob1 { + implicit object f1 extends (Int => String) { def apply(x: Int): String = "Int" } + implicit object f2 extends (Long => String) { def apply(x: Long): String = "Long" } + + println(5: String) + } + object ob2 { + implicit object f1 extends (Int => String) { def apply(x: Int): String = "Int" } + implicit def f2(x: Long): String = "Long" + + println(5: String) + } + object ob3 { + implicit object f1 extends (Int => String) { def apply(x: Int): String = "Int" } + implicit val f2: Long => String = _ => "Long" + + println(5: String) + } +} + +// int def vs. +object Moop2 { + object ob1 { + implicit def f1(x: Int): String = "Int" + implicit object f2 extends (Long => String) { def apply(x: Long): String = "Long" } + + println(5: String) + } + object ob2 { + implicit def f1(x: Int): String = "Int" + implicit def f2(x: Long): String = "Long" + + println(5: String) + } + object ob3 { + implicit def f1(x: Int): String = "Int" + implicit val f2: Long => String = _ => "Long" + + println(5: String) + } +} + +// int val vs. +object Moop3 { + object ob1 { + implicit val f1: Int => String = _ => "Int" + implicit object f2 extends (Long => String) { def apply(x: Long): String = "Long" } + + println(5: String) + } + object ob2 { + implicit val f1: Int => String = _ => "Int" + implicit def f2(x: Long): String = "Long" + + println(5: String) + } + object ob3 { + implicit val f1: Int => String = _ => "Int" + implicit val f2: Long => String = _ => "Long" + + println(5: String) + } +} + |