summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-08-29 07:10:00 -0700
committerJason Zaugg <jzaugg@gmail.com>2013-08-29 07:10:00 -0700
commit8679c217766326797bc13faf480f05064eb3df15 (patch)
tree009570e9b12b27c2563237c3317f5dde76bc5011 /test/files
parent996a95dac9cff30313316cc6b2448ec381852042 (diff)
parent3eebc99432075fdffabf8859df3dc8b2ded8df9c (diff)
downloadscala-8679c217766326797bc13faf480f05064eb3df15.tar.gz
scala-8679c217766326797bc13faf480f05064eb3df15.tar.bz2
scala-8679c217766326797bc13faf480f05064eb3df15.zip
Merge pull request #2879 from retronym/ticket/7785
SI-7785 Preserve TypeVar suspension through TypeMaps
Diffstat (limited to 'test/files')
-rw-r--r--test/files/pos/t7785.scala34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/files/pos/t7785.scala b/test/files/pos/t7785.scala
new file mode 100644
index 0000000000..1de693d137
--- /dev/null
+++ b/test/files/pos/t7785.scala
@@ -0,0 +1,34 @@
+import scala.language._
+
+trait R[+Repr]
+
+trait TraversableOps {
+ implicit val R: R[Nothing] = ???
+
+ // Removing the implicit parameter in both fixes the crash
+ // removing it into one only gives a valid compiler error.
+ trait OpsDup1[Repr] {
+ def force(implicit bf: R[Repr]): Any
+ }
+
+ trait Ops[Repr] extends OpsDup1[Repr] {
+ def force(implicit bf: R[Repr], dummy: DummyImplicit): Any
+ }
+
+ implicit def ct2ops[T, C[+X]](t: C[T]):
+ Ops[C[T]]
+
+ def force[T](t: Option[T]) =
+ // ct2ops(t).force
+ t.force //Fails compilation on 2.10.2.
+
+
+ /* To get a closer look at the crash:
+ :power
+ val foo = typeOf[C].member(TermName("foo"))
+ val pt = analyzer.HasMember(TermName("force"))
+ val instantiated = foo.info.finalResultType.instantiateTypeParams(foo.typeParams, foo.typeParams.map(TypeVar(_)))
+ instantiated <:< pt
+ */
+ def foo[T, C[+X]]: Ops[C[T]]
+}