Tidy up fix to Trac #9999
authorSimon Peyton Jones <simonpj@microsoft.com>
Mon, 19 Jan 2015 16:45:31 +0000 (16:45 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Mon, 19 Jan 2015 16:45:31 +0000 (16:45 +0000)
Minor refactoring only

compiler/typecheck/TcDeriv.hs

index ae95f33..3d980e2 100644 (file)
@@ -560,17 +560,15 @@ deriveAutoTypeable auto_typeable done_specs tycl_decls
         -- omitted because the user had manually requested an instance
 
     do_one cls (L _ decl)
+      | isClassDecl decl  -- Traverse into class declarations to check if they have ATs (#9999)
+      = concatMapM (do_one cls) (map (fmap FamDecl) (tcdATs decl))
+      | otherwise
       = do { tc <- tcLookupTyCon (tcdName decl)
-           -- Traverse into class declarations to check if they have ATs (#9999)
-           ; ats <- if isClassDecl decl
-                    then concatMapM (do_one cls) (map (fmap FamDecl) (tcdATs decl))
-                    else return []
-           ; rest <- if (isTypeSynonymTyCon tc || isTypeFamilyTyCon tc
+           ; if (isTypeSynonymTyCon tc || isTypeFamilyTyCon tc
                                        || tyConName tc `elemNameSet` done_tcs)
                      -- Do not derive Typeable for type synonyms or type families
-                     then return []
-                     else mkPolyKindedTypeableEqn cls tc
-          ; return (ats ++ rest) }
+             then return []
+             else mkPolyKindedTypeableEqn cls tc }
 
 ------------------------------------------------------------------
 deriveTyDecl :: LTyClDecl Name -> TcM [EarlyDerivSpec]