-tcInstDecl1 :: RenamedInstDecl -> NF_TcM [InstInfo]
--- Deal with a single instance declaration
--- Type-check all the stuff before the "where"
-tcInstDecl1 decl@(InstDecl poly_ty binds uprags maybe_dfun_name src_loc)
- = -- Prime error recovery, set source location
- recoverNF_Tc (returnNF_Tc []) $
+tcImportedInstDecl1 :: RenamedInstDecl -> NF_TcM DFunId
+ -- An interface-file instance declaration
+ -- Should be in scope by now, because we should
+ -- have sucked in its interface-file definition
+ -- So it will be replete with its unfolding etc
+tcImportedInstDecl1 decl@(InstDecl poly_ty binds uprags (Just dfun_name) src_loc)
+ = tcLookupId dfun_name
+
+
+tcLocalInstDecl1 :: RenamedInstDecl
+ -> NF_TcM (Maybe InstInfo) -- Nothing if there was an error
+ -- A source-file instance declaration
+ -- Type-check all the stuff before the "where"
+ --
+ -- We check for respectable instance type, and context
+ -- but only do this for non-imported instance decls.
+ -- Imported ones should have been checked already, and may indeed
+ -- contain something illegal in normal Haskell, notably
+ -- instance CCallable [Char]
+tcLocalInstDecl1 decl@(InstDecl poly_ty binds uprags Nothing src_loc)
+ = -- Prime error recovery, set source location
+ recoverNF_Tc (returnNF_Tc Nothing) $