Reover from validity errors in type/class decls
authorSimon Peyton Jones <simonpj@microsoft.com>
Mon, 16 Jul 2012 15:18:17 +0000 (16:18 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Mon, 16 Jul 2012 15:18:17 +0000 (16:18 +0100)
This lets us report slightly more errors in one sweep

compiler/typecheck/TcTyClsDecls.lhs

index ab28804..90fbfb0 100644 (file)
@@ -147,7 +147,11 @@ tcTyClGroup boot_details tyclds
            -- expects well-formed TyCons
        ; tcExtendGlobalEnv tyclss $ do
        { traceTc "Starting validity check" (ppr tyclss)
-       ; mapM_ (addLocM checkValidTyCl) (flattenTyClDecls tyclds)
+       ; mapM_ (recoverM (return ()) . addLocM checkValidTyCl) 
+               (flattenTyClDecls tyclds)
+           -- We recover, which allows us to report multiple validity errors
+           -- even from successive groups.  But we stop after all groups are
+           -- processed if we find any errors.
 
            -- Step 4: Add the implicit things;
            -- we want them in the environment because