From 48deedea143d55fec973a3749c78d46921dfd3f7 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 2 Mar 2005 13:25:45 +0000 Subject: [PATCH] fixed shell solve command --- src/GF/UseGrammar/Custom.hs | 9 +++++---- src/GF/UseGrammar/Editing.hs | 13 ++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/GF/UseGrammar/Custom.hs b/src/GF/UseGrammar/Custom.hs index 8e2b79c07..7a5ce63e6 100644 --- a/src/GF/UseGrammar/Custom.hs +++ b/src/GF/UseGrammar/Custom.hs @@ -5,9 +5,9 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/03/02 09:43:52 $ +-- > CVS $Date: 2005/03/02 14:25:45 $ -- > CVS $Author: aarne $ --- > CVS $Revision: 1.43 $ +-- > CVS $Revision: 1.44 $ -- -- A database for customizable GF shell commands. -- @@ -304,8 +304,9 @@ customTermCommand = Ok tr <- [annotate gr $ MM.qualifTerm (absId g) t]]) ,(strCI "typecheck", \g t -> err (const []) (return . loc2tree) (reCheckStateReject (grammar g) (tree2loc t))) - ,(strCI "solve", \g t -> err (const [t]) (return . loc2tree) - (solveAll (grammar g) (tree2loc t))) + ,(strCI "solve", \g t -> err (const []) (return . loc2tree) + (solveAll (grammar g) (tree2loc t) + >>= rejectUnsolvable)) ,(strCI "context", \g t -> err (const [t]) (return . loc2tree) (contextRefinements (grammar g) (tree2loc t))) ,(strCI "reindex", \g t -> let gr = grammar g in diff --git a/src/GF/UseGrammar/Editing.hs b/src/GF/UseGrammar/Editing.hs index b9ccb6691..a816d85ef 100644 --- a/src/GF/UseGrammar/Editing.hs +++ b/src/GF/UseGrammar/Editing.hs @@ -5,9 +5,9 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/03/02 09:43:52 $ +-- > CVS $Date: 2005/03/02 14:25:45 $ -- > CVS $Author: aarne $ --- > CVS $Revision: 1.12 $ +-- > CVS $Revision: 1.13 $ -- -- generic tree editing, with some grammar notions assumed. AR 18\/8\/2001. -- 19\/6\/2003 for GFC @@ -362,9 +362,12 @@ reCheckState gr st = annotate gr (tree2exp (loc2tree st)) >>= return . tree2loc reCheckStateReject :: CGrammar -> State -> Err State reCheckStateReject gr st = do st' <- reCheckState gr st - case (constrsNode $ nodeTree $ actTree st') of - [] -> return st' - cs -> Bad $ "Unsolvable constraints:" +++ prConstraints cs + rejectUnsolvable st' + +rejectUnsolvable :: State -> Err State +rejectUnsolvable st = case (constrsNode $ nodeTree $ actTree st) of + [] -> return st + cs -> Bad $ "Unsolvable constraints:" +++ prConstraints cs -- | extract metasubstitutions from constraints and solve them solveAll :: CGrammar -> State -> Err State