-tcInstDecls1 :: PackageInstEnv
- -> PersistentRenamerState
- -> HomeSymbolTable -- Contains instances
- -> TcEnv -- Contains IdInfo for dfun ids
- -> (Name -> Maybe Fixity) -- for deriving Show and Read
- -> Module -- Module for deriving
- -> [RenamedHsDecl]
- -> TcM (PackageInstEnv, InstEnv, [InstInfo], RenamedHsBinds)
-
-tcInstDecls1 inst_env0 prs hst unf_env get_fixity this_mod decls
- = let
- inst_decls = [inst_decl | InstD inst_decl <- decls]
- tycl_decls = [decl | TyClD decl <- decls]
- clas_decls = filter isClassDecl tycl_decls
- (imported_inst_ds, local_inst_ds) = partition isIfaceInstDecl inst_decls
- in
+tcInstDecls1 -- Deal with source-code instance decls
+ :: PersistentRenamerState
+ -> InstEnv -- Imported instance envt
+ -> FixityEnv -- for deriving Show and Read
+ -> Module -- Module for deriving
+ -> [RenamedTyClDecl] -- For deriving stuff
+ -> [RenamedInstDecl] -- Source code instance decls
+ -> TcM (InstEnv, -- the full inst env
+ [InstInfo], -- instance decls to process; contains all dfuns
+ -- for this module
+ RenamedHsBinds) -- derived instances
+
+tcInstDecls1 prs inst_env get_fixity this_mod
+ tycl_decls inst_decls
+-- The incoming inst_env includes all the imported instances already
+ = checkNoErrsTc $
+ -- Stop if addInstInfos etc discovers any errors
+ -- (they recover, so that we get more than one error each round)