summaryrefslogtreecommitdiff
path: root/test/files/neg/t7602.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-11-06 17:35:12 +1000
committerJason Zaugg <jzaugg@gmail.com>2014-11-07 11:21:02 +1000
commitd76a2812ca56cd0d093fbbeb3ab60b35cd9c3180 (patch)
treee7ddc26676a9310c87e112406ba20da7c68817d4 /test/files/neg/t7602.scala
parentcd50464cd019bc6a489a72b98293c30b91352bab (diff)
downloadscala-d76a2812ca56cd0d093fbbeb3ab60b35cd9c3180.tar.gz
scala-d76a2812ca56cd0d093fbbeb3ab60b35cd9c3180.tar.bz2
scala-d76a2812ca56cd0d093fbbeb3ab60b35cd9c3180.zip
SI-7602 Avoid crash in LUBs with erroneous code
If a class contains a double defintion of a method that overrides an interface method, LUBs could run into a spot where filtering overloaded alternatives to those that match the interface method fails to resolve to a single overload, which crashes the compiler. This commit uses `filter` rather than `suchThat` to avoid the crash.
Diffstat (limited to 'test/files/neg/t7602.scala')
-rw-r--r--test/files/neg/t7602.scala26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/files/neg/t7602.scala b/test/files/neg/t7602.scala
new file mode 100644
index 0000000000..5a9444a1ab
--- /dev/null
+++ b/test/files/neg/t7602.scala
@@ -0,0 +1,26 @@
+trait Table[T]{
+ def foo : T
+}
+trait Computer
+trait Device
+
+object schema{
+ def lub[T]( a:T, b:T ) = ???
+ lub(null:Computers,null:Devices)
+}
+trait Computers extends Table[Computer]{
+ def foo : Computer
+}
+trait Devices extends Table[Device]{
+ def foo : Device
+ def foo : Device
+}
+/* Was:
+Exception in thread "main" java.lang.AssertionError: assertion failed: List(method foo, method foo)
+ at scala.Predef$.assert(Predef.scala:165)
+ at scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:1916)
+ at scala.reflect.internal.tpe.GlbLubs$$anonfun$23.apply(GlbLubs.scala:350)
+ at scala.reflect.internal.tpe.GlbLubs$$anonfun$23.apply(GlbLubs.scala:349)
+ at scala.collection.immutable.List.map(List.scala:272)
+ at scala.reflect.internal.tpe.GlbLubs$class.lubsym$1(GlbLubs.scala:349)
+*/ \ No newline at end of file