summaryrefslogtreecommitdiff
path: root/test/files/neg/t5318c.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-05-13 17:47:00 +0200
committerJason Zaugg <jzaugg@gmail.com>2012-05-25 22:52:41 +0200
commit510f63778011060a8d912085b7248ef69e4217f8 (patch)
tree94b3aa1bd8d8e3e5209b839576339f9068a3bd9d /test/files/neg/t5318c.scala
parentdf3689f8da225679f4af85be2c4da47370b148cd (diff)
downloadscala-510f63778011060a8d912085b7248ef69e4217f8.tar.gz
scala-510f63778011060a8d912085b7248ef69e4217f8.tar.bz2
scala-510f63778011060a8d912085b7248ef69e4217f8.zip
SI-5318 Make implicit divergence checking PolyType aware.
Replaces the two active subclasses of `SymCollector` with direct use of traversal methods of `Type`. Wildcard free class type parameters, not just method type parameters, when stripping the core type of candidate implicits. The spec doesn't make any such distinction, and the enclosed test, t5318c, crashes without this change.
Diffstat (limited to 'test/files/neg/t5318c.scala')
-rw-r--r--test/files/neg/t5318c.scala14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/files/neg/t5318c.scala b/test/files/neg/t5318c.scala
new file mode 100644
index 0000000000..477a9874ad
--- /dev/null
+++ b/test/files/neg/t5318c.scala
@@ -0,0 +1,14 @@
+class CompilerHang {
+ trait TC[M[_]]
+ trait S[A]
+
+ class C[M[_]] {
+ type TCM = TC[M]
+ }
+
+ // A nefarious implicit, to motivate the removal of `&& sym.owner.isTerm` from
+ // `isFreeTypeParamNoSkolem`.
+ implicit def tc[x[_], CC[x[_]] <: C[x]](implicit M0: CC[x]#TCM): CC[x]#TCM = null
+ def breakage[F[_] : TC] = 0
+ breakage // type checker doesn't terminate, should report inference failure
+}