aboutsummaryrefslogtreecommitdiff
path: root/tests/pos
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-10-22 13:19:14 +0200
committerMartin Odersky <odersky@gmail.com>2015-10-22 13:20:10 +0200
commit9cb35429fc2c52f5d243b9c9d29739df1ff5967a (patch)
treeb37a22b0daeb7127e4b89a85cf3b447b3ef0425f /tests/pos
parent30e5f322a0fb9c4c43cbeb3231423ac95571a3a7 (diff)
downloaddotty-9cb35429fc2c52f5d243b9c9d29739df1ff5967a.tar.gz
dotty-9cb35429fc2c52f5d243b9c9d29739df1ff5967a.tar.bz2
dotty-9cb35429fc2c52f5d243b9c9d29739df1ff5967a.zip
Fix #830: Compiler hangs on implicit search with singleton &/|
In fact we get a deep subtype recursion when compileing i830.scala. The problem goes away once we make use of the fact that the intersection of two singleton types which are not subtypes of each other is empty.
Diffstat (limited to 'tests/pos')
-rw-r--r--tests/pos/i830.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/tests/pos/i830.scala b/tests/pos/i830.scala
new file mode 100644
index 000000000..8fcb29f36
--- /dev/null
+++ b/tests/pos/i830.scala
@@ -0,0 +1,6 @@
+object C {
+ trait X[T]
+ implicit def u[A, B]: X[A | B] = new X[A | B] {}
+ def y[T](implicit x: X[T]): T = ???
+ val x: 1 & 2 | 2 & 3 = y
+}