aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/src/Haddock/Interface/Create.hs
diff options
context:
space:
mode:
authorMateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>2014-11-04 02:54:28 +0000
committerMateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>2014-11-04 02:54:28 +0000
commit267e2c2e8226790f5d294ac06941ac5498608db4 (patch)
tree1119ee579375dcb4e335880ac2bad1453462dbbc /haddock-api/src/Haddock/Interface/Create.hs
parent8d82524d9d9b278eae08993c2d4c54173d68481c (diff)
Turn some uses of error into recoverable warnings
This should at the very least not abort when something weird happens. It does feel like we should have a type that carries these errors until the end however as the user might not see them unless they are printed at the end.
Diffstat (limited to 'haddock-api/src/Haddock/Interface/Create.hs')
-rw-r--r--haddock-api/src/Haddock/Interface/Create.hs13
1 files changed, 10 insertions, 3 deletions
diff --git a/haddock-api/src/Haddock/Interface/Create.hs b/haddock-api/src/Haddock/Interface/Create.hs
index b66773ae..047960c6 100644
--- a/haddock-api/src/Haddock/Interface/Create.hs
+++ b/haddock-api/src/Haddock/Interface/Create.hs
@@ -45,7 +45,7 @@ import Bag
import RdrName
import TcRnTypes
import FastString (concatFS)
-
+import qualified Outputable as O
-- | Use a 'TypecheckedModule' to produce an 'Interface'.
-- To do this, we need access to already processed modules in the topological
@@ -618,8 +618,15 @@ hiDecl dflags t = do
Nothing -> do
liftErrMsg $ tell ["Warning: Not found in environment: " ++ pretty dflags t]
return Nothing
- Just x -> return (Just (tyThingToLHsDecl x))
-
+ Just x -> case tyThingToLHsDecl x of
+ Left m -> liftErrMsg (tell [bugWarn m]) >> return Nothing
+ Right (m, t) -> liftErrMsg (tell $ map bugWarn m)
+ >> return (Just $ noLoc t)
+ where
+ warnLine x = O.text "haddock-bug:" O.<+> O.text x O.<>
+ O.comma O.<+> O.quotes (O.ppr t) O.<+>
+ O.text "-- Please report this on Haddock issue tracker!"
+ bugWarn = O.showSDoc dflags . warnLine
hiValExportItem :: DynFlags -> Name -> DocForDecl Name -> Bool -> Maybe Fixity -> ErrMsgGhc (ExportItem Name)
hiValExportItem dflags name doc splice fixity = do