summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2006-01-26 13:57:22 +0000
committeraarne <aarne@cs.chalmers.se>2006-01-26 13:57:22 +0000
commit443f86ba4d5f156472d704ffc83c5cd92a4bd835 (patch)
treeb2fe55845f9464b438bf8886db78f9dc40c17c1c /src
parentad65c86860337dd17e961ed8b269ee2e54481b45 (diff)
Norwegian
Diffstat (limited to 'src')
-rw-r--r--src/GF/Grammar/Compute.hs16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/GF/Grammar/Compute.hs b/src/GF/Grammar/Compute.hs
index cc5db2a21..b31718bd5 100644
--- a/src/GF/Grammar/Compute.hs
+++ b/src/GF/Grammar/Compute.hs
@@ -124,12 +124,16 @@ computeTermOpt rec gr = comp where
S t@(T _ cc) v -> do
v' <- comp g v
- case matchPattern cc v' of
- Ok (c,g') -> comp (g' ++ g) c
- _ | isCan v' -> prtBad ("missing case" +++ prt v' +++ "in") t
- _ -> do
- t' <- comp g t
- return $ S t' v' -- if v' is not canonical
+ case v' of
+ FV vs -> do
+ ts' <- mapM (comp g . S t) vs
+ return $ variants ts'
+ _ -> case matchPattern cc v' of
+ Ok (c,g') -> comp (g' ++ g) c
+ _ | isCan v' -> prtBad ("missing case" +++ prt v' +++ "in") t
+ _ -> do
+ t' <- comp g t
+ return $ S t' v' -- if v' is not canonical
S t v -> do
t' <- comp g t