diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-05-13 17:47:00 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-05-25 22:52:41 +0200 |
commit | 510f63778011060a8d912085b7248ef69e4217f8 (patch) | |
tree | 94b3aa1bd8d8e3e5209b839576339f9068a3bd9d /test/files/neg/t5318c.scala | |
parent | df3689f8da225679f4af85be2c4da47370b148cd (diff) | |
download | scala-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.scala | 14 |
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 +} |