aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/i1765.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-12-02 16:48:11 +0100
committerMartin Odersky <odersky@gmail.com>2016-12-02 16:48:19 +0100
commita7003bb223fb535f64a3026ff2a5a3e7d3ab7609 (patch)
tree7e64183a8d31a846e817628d5ea44abfc62a8730 /tests/pos/i1765.scala
parent131fcf26e65d45bea89989ced209f394457a6d12 (diff)
downloaddotty-a7003bb223fb535f64a3026ff2a5a3e7d3ab7609.tar.gz
dotty-a7003bb223fb535f64a3026ff2a5a3e7d3ab7609.tar.bz2
dotty-a7003bb223fb535f64a3026ff2a5a3e7d3ab7609.zip
Fix insertAfter
Once the context-bounds desugaring of i1765.scala was fixed, another problem came up: We hit an invalid denotation due to some interaction between mixin and memoize. It turned out that `insertInsteadOf` did not do what its doc comment claimed: it did not store a forwarding pointer `nextInRun` in the overwritten denotation. Once that was fixed we also needed to fix a follow-on erorr that now we could have chains of invalid denotations linked by `nextInRun`.
Diffstat (limited to 'tests/pos/i1765.scala')
-rw-r--r--tests/pos/i1765.scala21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/pos/i1765.scala b/tests/pos/i1765.scala
new file mode 100644
index 000000000..d79129638
--- /dev/null
+++ b/tests/pos/i1765.scala
@@ -0,0 +1,21 @@
+trait T[X]
+
+trait U[X]
+
+trait TC[M[_]] {
+ def foo[M[_]: TC, A](ma: U[A]) = ()
+ implicit val TCofT: TC[T] = new TC[T] {}
+ implicit def any2T[A](a: A): T[A] = new T[A] {}
+ implicit def any2U[A](a: A): U[A] = new U[A] {}
+ val x = foo[T, Int](1)
+ val y = ()
+}
+
+// Minimized version exhibiting an assertion violation in Denotation#current at phase lambdalift:
+trait TC2 {
+// implicit val TCofT: TC2[T] = new TC2[T] {}
+ val TCofT: Object = {
+ class C extends TC2
+ new Object
+ }
+}