warning for overshadowed patterns, temporal solution

This commit is contained in:
aarne
2009-04-06 14:07:22 +00:00
parent 203d02ef34
commit c7376c78a9
2 changed files with 6 additions and 3 deletions

View File

@@ -774,8 +774,11 @@ checkLType env trm typ0 = do
ps <- checkErr $ testOvershadow ps0 vs
if null ps
then return ()
else checkWarn $ "WARNING: patterns never reached:" +++
concat (intersperse ", " (map prt ps))
---- else checkWarn $ "WARNING: patterns never reached:" +++
---- concat (intersperse ", " (map prt ps))
else trace ("WARNING: patterns never reached:" +++
concat (intersperse ", " (map prt ps))) (return ())
---- AR 6/4/2009: checkWarn doesn't show because of laziness (?)
_ -> return () -- happens with variable types
cs' <- mapM (checkCase arg val) cs

View File

@@ -55,7 +55,7 @@ testOvershadow pts vs = do
let numpts = zip pts [0..]
let cases = [(p,EInt i) | (p,i) <- numpts]
ts <- mapM (liftM fst . matchPattern cases) vs
return $ [p | (p,i) <- numpts, notElem i [i | EInt i <- ts] ]
return [p | (p,i) <- numpts, notElem i [i | EInt i <- ts] ]
findMatch :: [([Patt],Term)] -> [Term] -> Err (Term, Substitution)
findMatch cases terms = case cases of