mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
warning for overshadowed patterns, temporal solution
This commit is contained in:
@@ -774,8 +774,11 @@ checkLType env trm typ0 = do
|
|||||||
ps <- checkErr $ testOvershadow ps0 vs
|
ps <- checkErr $ testOvershadow ps0 vs
|
||||||
if null ps
|
if null ps
|
||||||
then return ()
|
then return ()
|
||||||
else checkWarn $ "WARNING: patterns never reached:" +++
|
---- else checkWarn $ "WARNING: patterns never reached:" +++
|
||||||
concat (intersperse ", " (map prt ps))
|
---- 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
|
_ -> return () -- happens with variable types
|
||||||
cs' <- mapM (checkCase arg val) cs
|
cs' <- mapM (checkCase arg val) cs
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ testOvershadow pts vs = do
|
|||||||
let numpts = zip pts [0..]
|
let numpts = zip pts [0..]
|
||||||
let cases = [(p,EInt i) | (p,i) <- numpts]
|
let cases = [(p,EInt i) | (p,i) <- numpts]
|
||||||
ts <- mapM (liftM fst . matchPattern cases) vs
|
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 :: [([Patt],Term)] -> [Term] -> Err (Term, Substitution)
|
||||||
findMatch cases terms = case cases of
|
findMatch cases terms = case cases of
|
||||||
|
|||||||
Reference in New Issue
Block a user