diff options
Diffstat (limited to 'test/files/neg')
-rw-r--r-- | test/files/neg/bug608.check | 6 | ||||
-rw-r--r-- | test/files/neg/bug608.scala | 17 |
2 files changed, 23 insertions, 0 deletions
diff --git a/test/files/neg/bug608.check b/test/files/neg/bug608.check new file mode 100644 index 0000000000..a4b2664b58 --- /dev/null +++ b/test/files/neg/bug608.check @@ -0,0 +1,6 @@ +bug608.scala:16 error: no type parameters for method bimap: ((ha) => c)hs{override type a = c} exist so that it can be applied to arguments ((ha) => ha) + --- because --- +result type hs{override type a = c} is incompatible with expected type hs{override type s = hs; override type a = ha} + = g(f(x).bimap(id)) + ^ +one error found diff --git a/test/files/neg/bug608.scala b/test/files/neg/bug608.scala new file mode 100644 index 0000000000..24f515651a --- /dev/null +++ b/test/files/neg/bug608.scala @@ -0,0 +1,17 @@ +trait CrashDueToTypeError { + def id[a](x :a) :a = x + + trait Bifunctor { + type a; // content + type s <: Bifunctor + + // uncomment this-vvvvvvvvvvvvvvvvvvvvvvvvvvvv, and it compiles + def bimap[c](f :a=>c) :s{/*type s=Bifunctor.this.s;*/type a=c; } + } + + def hylo[hs <: Bifunctor,ha,hb,hc] + (f :hb=>hs{type s=hs; type a=ha}, + g :hs{type s=hs; type a=ha}=>hc)(x :hb) + :hc + = g(f(x).bimap(id)) +} |