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			
