From 88b09b8ae0d5b239d2c4fbb17d83778df12db618 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 6 Jan 2006 21:49:25 +0000 Subject: concatenation string patterns --- src/GF/Compile/CheckGrammar.hs | 2 +- src/GF/Compile/Rename.hs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src/GF/Compile') diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index 037d07072..3b3e9eaa6 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -664,7 +664,7 @@ checkLType env trm typ0 = do pattContext :: LTEnv -> Type -> Patt -> Check Context pattContext env typ p = case p of PV x -> return [(x,typ)] - PP q c ps | q /= cPredef -> do + PP q c ps | q /= cPredef || prt c == "CC" -> do ---- why this /=? AR 6/1/2006 t <- checkErr $ lookupResType cnc q c (cont,v) <- checkErr $ typeFormCnc t checkCond ("wrong number of arguments for constructor in" +++ prt p) diff --git a/src/GF/Compile/Rename.hs b/src/GF/Compile/Rename.hs index 70451a25a..c3369e9ef 100644 --- a/src/GF/Compile/Rename.hs +++ b/src/GF/Compile/Rename.hs @@ -221,14 +221,15 @@ renamePattern env patt = case patt of PC c ps -> do c' <- renameIdentTerm env $ Cn c - psvss <- mapM renp ps - let (ps',vs) = unzip psvss case c' of - QC p d -> return (PP p d ps', concat vs) - Q p d -> return (PP p d ps', concat vs) ---- should not happen + QC p d -> renp $ PP p d ps + Q p d -> renp $ PP p d ps _ -> prtBad "unresolved pattern" c' ---- (PC c ps', concat vs) ----- PP p c ps -> (PP p c ps',concat vs') where (ps',vs') = unzip $ map renp ps + PP p c ps -> do + psvss <- mapM renp ps + let (ps',vs) = unzip psvss + return (PP p c ps', concat vs) PV x -> case renid patt of Ok p -> return (p,[]) -- cgit v1.2.3