Commit 7a7a6356 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Fix Trac #3261: make default types play nice with -Werror

The trial-and-error for type defaults was not playing nicely with
-Werror. The fix is simple.
parent 5463bfd3
...@@ -2903,12 +2903,16 @@ disambigGroup :: [Type] -- The default types ...@@ -2903,12 +2903,16 @@ disambigGroup :: [Type] -- The default types
-> TcM () -- Just does unification, to fix the default types -> TcM () -- Just does unification, to fix the default types
disambigGroup default_tys dicts disambigGroup default_tys dicts
= try_default default_tys = do { mb_chosen_ty <- try_default default_tys
; case mb_chosen_ty of
Nothing -> return ()
Just chosen_ty -> do { unifyType chosen_ty (mkTyVarTy tyvar)
; warnDefault dicts chosen_ty } }
where where
(_,_,tyvar) = ASSERT(not (null dicts)) head dicts -- Should be non-empty (_,_,tyvar) = ASSERT(not (null dicts)) head dicts -- Should be non-empty
classes = [c | (_,c,_) <- dicts] classes = [c | (_,c,_) <- dicts]
try_default [] = return () try_default [] = return Nothing
try_default (default_ty : default_tys) try_default (default_ty : default_tys)
= tryTcLIE_ (try_default default_tys) $ = tryTcLIE_ (try_default default_tys) $
do { tcSimplifyDefault [mkClassPred clas [default_ty] | clas <- classes] do { tcSimplifyDefault [mkClassPred clas [default_ty] | clas <- classes]
...@@ -2918,10 +2922,7 @@ disambigGroup default_tys dicts ...@@ -2918,10 +2922,7 @@ disambigGroup default_tys dicts
-- For example, if Real a is reqd, but the only type in the -- For example, if Real a is reqd, but the only type in the
-- default list is Int. -- default list is Int.
-- After this we can't fail ; return (Just default_ty) -- TOMDO: do something with the coercion
; warnDefault dicts default_ty
; unifyType default_ty (mkTyVarTy tyvar)
; return () -- TOMDO: do something with the coercion
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment