From: simonpj@microsoft.com Date: Thu, 13 Jan 2011 11:14:21 +0000 (+0000) Subject: Make Template Haskell classInstances function return [ClassInstance] X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=2a334098a6ec81a532bbe93183c2cf6c818c0c6c Make Template Haskell classInstances function return [ClassInstance] This is a recently-introduce function, which was returning a [Name], being the names of the dfuns. But what you really want (obviously!) is the ClassInstances, and we have a TH type for that. This is an API change, so don't merge into GHC 7.0. But it's a new part of TH which is still settling down. Fixes Trac #4863. --- diff --git a/compiler/typecheck/TcSplice.lhs b/compiler/typecheck/TcSplice.lhs index cc18707..2e81314 100644 --- a/compiler/typecheck/TcSplice.lhs +++ b/compiler/typecheck/TcSplice.lhs @@ -941,7 +941,7 @@ illegalBracket = ptext (sLit "Template Haskell brackets cannot be nested (withou %************************************************************************ \begin{code} -lookupClassInstances :: TH.Name -> [TH.Type] -> TcM [TH.Name] +lookupClassInstances :: TH.Name -> [TH.Type] -> TcM [TH.ClassInstance] lookupClassInstances c ts = do { loc <- getSrcSpanM ; case convertToHsPred loc (TH.ClassP c ts) of { @@ -954,8 +954,7 @@ lookupClassInstances c ts -- Now look up instances ; inst_envs <- tcGetInstEnvs ; let (matches, unifies) = lookupInstEnv inst_envs cls tys - dfuns = map is_dfun (map fst matches ++ unifies) - ; return (map reifyName dfuns) } } } + ; mapM reifyClassInstance (map fst matches ++ unifies) } } } where doc = ptext (sLit "TcSplice.classInstances") \end{code}