From 2a334098a6ec81a532bbe93183c2cf6c818c0c6c Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Thu, 13 Jan 2011 11:14:21 +0000 Subject: [PATCH] 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. --- compiler/typecheck/TcSplice.lhs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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} -- 1.7.10.4