id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,os,architecture,failure,difficulty,testcase,blockedby,blocking,related
6161,"Program with missing instance accepted by compiler, program <<loops>>",wlguest,,"The following program is accepted by the compiler even though (Fam Float) has no Super instance which is needed for Duper. testProg <<loops>> when run.

Even with the Super (Fam Float) instance added, testProg continues to <<loop>> unless the Duper (Fam a) constraint on Foo a is replaced by a Super (Fam a) constraint.

The problem seems to be an instance of [http://hackage.haskell.org/trac/ghc/ticket/5751 #5751], but I'm not really sure.

{{{

{-# LANGUAGE TypeFamilies, FlexibleContexts, FlexibleInstances #-}

data family Fam  a

data instance Fam Float = FamFloat Float

class Super a where
  testSup :: a -> Float

class Super a => Duper a where
  testDup :: a -> Float

--class ( Super (Fam a) ) => Foo a where
class Duper (Fam a) => Foo a where
  testFoo :: Fam a -> Float

instance Foo a => Duper (Fam a) where
  testDup x = testFoo x + testSup x

--instance Super (Fam Float) where
--  testSup (FamFloat x) = x

instance Foo Float where
  testFoo (FamFloat _) = 5.0

testProg :: Float
testProg = testDup (FamFloat 3.0)
}}}",bug,closed,normal,,Compiler,7.4.1,fixed,loop,chak,Linux,x86,GHC accepts invalid program,Unknown,typecheck/should_fail/T6161,,,
