aboutsummaryrefslogtreecommitdiff
path: root/tests/untried/pos/t7944.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/untried/pos/t7944.scala')
-rw-r--r--tests/untried/pos/t7944.scala24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/untried/pos/t7944.scala b/tests/untried/pos/t7944.scala
new file mode 100644
index 000000000..2fe2c5866
--- /dev/null
+++ b/tests/untried/pos/t7944.scala
@@ -0,0 +1,24 @@
+class M[+A, +B]
+
+object Test {
+ implicit class EitherOps[A, B](self: Either[A, B]) {
+ def disjunction: M[A, B] = null
+ }
+
+ def foo = {
+ val l: Either[Int, Nothing] = Left[Int, Nothing](1)
+
+ var ok = EitherOps(l).disjunction
+
+ val runawayTypeVar = l.disjunction
+
+ // reported bug:
+ // found : M[Int,B]; required: M[Int,Nothing]
+ val assign: M[Int, Nothing] = runawayTypeVar
+
+ // variations on the theme, all failed before similarly.
+ val assign1: M[Int, Nothing] = {val temp = runawayTypeVar; temp}
+ val assign2: M[Int, String] = runawayTypeVar
+ val assign3: M[Int, Nothing] = {val temp = Left(1).disjunction; temp}
+ }
+}