summaryrefslogblamecommitdiff
path: root/test/files/neg/t608.scala
blob: 34dc4c03525d1359b626b47661768c09af18b895 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                           
                        
 
                   
                        
                       
 


                                                                          
 




                                              
 
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))
}