diff --git a/lib/resource-1.0/german/ParadigmsGer.gf b/lib/resource-1.0/german/ParadigmsGer.gf index 75fd44acc..201ae78aa 100644 --- a/lib/resource-1.0/german/ParadigmsGer.gf +++ b/lib/resource-1.0/german/ParadigmsGer.gf @@ -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 = <>} ; } ; diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index 1daf4fd62..931a84a58 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -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