incompleteness warning and PNeg in CheckGrammar

This commit is contained in:
aarne
2006-01-16 09:47:08 +00:00
parent de492a866a
commit cd4e4c2076
2 changed files with 28 additions and 8 deletions

View File

@@ -316,5 +316,21 @@ oper
in
mkV singen singt sing sang saenge gesungen ;
V0 : Type = V ;
V2S, V2V, V2Q, V2A : Type = V2 ;
AS, A2S, AV : Type = A ;
A2V : Type = A2 ;
mkV0 v = v ** {lock_V = <>} ;
mkV2S v p = mkV2 v p ** {lock_V2 = <>} ;
mkV2V v p t = mkV2 v p ** {s4 = t ; lock_V2 = <>} ;
mkVA v = v ** {lock_VA = <>} ;
mkV2A v p = mkV2 v p ** {lock_V2A = <>} ;
mkV2Q v p = mkV2 v p ** {lock_V2 = <>} ;
mkAS v = v ** {lock_A = <>} ;
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
mkAV v = v ** {lock_A = <>} ;
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
} ;

View File

@@ -178,6 +178,9 @@ checkResInfo gr (c,info) = do
(_, Yes de) -> do
(de',ty') <- infer de
return (Yes ty', Yes de')
(_,Nope) -> do
checkWarn "No definition given to oper"
return (pty,pde)
_ -> return (pty, pde) --- other cases are uninteresting
return (c, ResOper pty' pde')
@@ -673,7 +676,7 @@ checkLType env trm typ0 = do
pattContext :: LTEnv -> Type -> Patt -> Check Context
pattContext env typ p = case p of
PV x -> return [(x,typ)]
PV x | not (isWildIdent x) -> return [(x,typ)]
PP q c ps | q /= cPredef -> do ---- why this /=? AR 6/1/2006
t <- checkErr $ lookupResType cnc q c
(cont,v) <- checkErr $ typeFormCnc t
@@ -710,17 +713,18 @@ pattContext env typ p = case p of
g1 <- pattContext env typ p
g2 <- pattContext env typ q
return $ g1 ++ g2
PRep p' -> do
co <- pattContext env typeStr p'
if not (null co)
then checkWarn ("no variable bound inside * pattern" +++ prt p)
>> return []
else return []
PNeg p' -> pattContext env typ p'
PRep p' -> noBind p'
PNeg p' -> noBind p'
_ -> return [] ---- check types!
where
cnc = env
noBind p' = do
co <- pattContext env typeStr p'
if not (null co)
then checkWarn ("no variable bound inside pattern" +++ prt p)
>> return []
else return []
-- auxiliaries