+ { -- Get the right set of decls and rules. If we are compiling without -O
+ -- we discard pragmas before typechecking, so that we don't "see"
+ -- information that we shouldn't. From a versioning point of view
+ -- It's not actually *wrong* to do so, but in fact GHCi is unable
+ -- to handle unboxed tuples, so it must not see unfoldings.
+ ignore_prags <- doptM Opt_IgnoreInterfacePragmas
+ ; let { decls | ignore_prags = map (discardDeclPrags . snd) (mi_decls iface)
+ | otherwise = map snd (mi_decls iface)
+ ; rules | ignore_prags = []
+ | otherwise = mi_rules iface
+ ; dfuns = mi_insts iface
+ ; mod_name = moduleName (mi_module iface)
+ }
+ -- Typecheck the decls
+ ; names <- mappM (lookupOrig mod_name . ifName) decls