diff options
author | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-11-20 17:41:41 -0800 |
---|---|---|
committer | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-11-20 17:41:41 -0800 |
commit | 29293ab56e61cc8bdb97210a04554ed4829b0ff3 (patch) | |
tree | 8f56797a5425e5222361e9ad8c483d643fff6c0a /test/files | |
parent | 087aebe3ee1b93aafc654ea623cb0e289a8170a8 (diff) | |
parent | c6569209dab006e74ccecc0ede6ce7815ac8629c (diff) | |
download | scala-29293ab56e61cc8bdb97210a04554ed4829b0ff3.tar.gz scala-29293ab56e61cc8bdb97210a04554ed4829b0ff3.tar.bz2 scala-29293ab56e61cc8bdb97210a04554ed4829b0ff3.zip |
Merge pull request #1621 from jannic/SI-6663-2.10.x
Si 6663 2.10.x fix type parameter on selectDynamic
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/neg/t6663.check | 6 | ||||
-rw-r--r-- | test/files/neg/t6663.scala | 19 | ||||
-rw-r--r-- | test/files/run/t6663.check | 1 | ||||
-rw-r--r-- | test/files/run/t6663.scala | 17 |
4 files changed, 43 insertions, 0 deletions
diff --git a/test/files/neg/t6663.check b/test/files/neg/t6663.check new file mode 100644 index 0000000000..aa4faa4a46 --- /dev/null +++ b/test/files/neg/t6663.check @@ -0,0 +1,6 @@ +t6663.scala:16: error: type mismatch; + found : String + required: Int + var v = new C(42).foo[String].get :Int + ^ +one error found diff --git a/test/files/neg/t6663.scala b/test/files/neg/t6663.scala new file mode 100644 index 0000000000..4a358dfbc5 --- /dev/null +++ b/test/files/neg/t6663.scala @@ -0,0 +1,19 @@ +import language.dynamics + +class C(v: Any) extends Dynamic { + def selectDynamic[T](n: String): Option[T] = Option(v.asInstanceOf[T]) + def applyDynamic[T](n: String)(): Option[T] = Option(v.asInstanceOf[T]) +} + +object Test extends App { + // this should be converted to + // C(42).selectDynamic[String]("foo").get + // causing a compile error. + + // but, before fixing SI-6663, became + // C(42).selectDynamic("foo").get, ignoring + // the [String] type parameter + var v = new C(42).foo[String].get :Int + println(v) +} + diff --git a/test/files/run/t6663.check b/test/files/run/t6663.check new file mode 100644 index 0000000000..d81cc0710e --- /dev/null +++ b/test/files/run/t6663.check @@ -0,0 +1 @@ +42 diff --git a/test/files/run/t6663.scala b/test/files/run/t6663.scala new file mode 100644 index 0000000000..6818d286d9 --- /dev/null +++ b/test/files/run/t6663.scala @@ -0,0 +1,17 @@ +import language.dynamics + +class C(v: Any) extends Dynamic { + def selectDynamic[T](n: String): Option[T] = Option(v.asInstanceOf[T]) + def applyDynamic[T](n: String)(): Option[T] = Option(v.asInstanceOf[T]) +} + +object Test extends App { + // this should be converted to + // C(42).selectDynamic[Int]("foo").get + // but, before fixing SI-6663, became + // C(42).selectDynamic[Nothing]("foo").get + // leading to a ClassCastException + var v = new C(42).foo[Int].get + println(v) +} + |