From b059cbd155aec675b40a2a54f18bb127f17fcf37 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Wed, 25 Nov 2009 09:20:26 +0000 Subject: closed #2624: instantiate type params after eta... closed #2624: instantiate type params after eta expansion of polymorphic method does not blow the stack on pos/t0674 (previous private fix did typed(tree); instantiate(tree) instead of instantiate(typed(tree))) fixed check file for neg/bug608 -- got better error message --- test/files/neg/bug608.check | 8 ++++---- test/files/neg/bug608.scala | 24 ++++++++++++------------ test/files/pos/t2624.scala | 4 ++++ 3 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 test/files/pos/t2624.scala (limited to 'test/files') diff --git a/test/files/neg/bug608.check b/test/files/neg/bug608.check index 4e8eb4d709..a8e32e4c10 100644 --- a/test/files/neg/bug608.check +++ b/test/files/neg/bug608.check @@ -1,6 +1,6 @@ bug608.scala:16: error: type mismatch; - found : (a) => a - required: (ha) => ? - = g(f(x).bimap(id)) - ^ + found : hs{type a = ha} + required: hs{type s = hs; 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 index 24f515651a..34dc4c0352 100644 --- a/test/files/neg/bug608.scala +++ b/test/files/neg/bug608.scala @@ -1,17 +1,17 @@ trait CrashDueToTypeError { - def id[a](x :a) :a = x + def id[a](x :a) :a = x - trait Bifunctor { - type a; // content - type s <: Bifunctor + 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; } - } + // 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)) + 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)) } diff --git a/test/files/pos/t2624.scala b/test/files/pos/t2624.scala new file mode 100644 index 0000000000..76f0e30369 --- /dev/null +++ b/test/files/pos/t2624.scala @@ -0,0 +1,4 @@ +object Test { + List(1).map(identity(_)) + List(1).map(identity) // this didn't typecheck before the fix +} -- cgit v1.2.3