diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-11-09 17:24:08 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-11-09 17:24:08 +0000 |
| commit | ba735d802bd5904949de2e6d6bd9be9b32c69057 (patch) | |
| tree | d146eb1c4c9064884369464a9b001a0fd207b997 /src/GF | |
| parent | e394d725a49d579459006ab70e1007f1170ca2b0 (diff) | |
post-compute in GrammarToGFCC - what else is needed?
Diffstat (limited to 'src/GF')
| -rw-r--r-- | src/GF/Devel/GrammarToGFCC.hs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/GF/Devel/GrammarToGFCC.hs b/src/GF/Devel/GrammarToGFCC.hs index 9c5afd6ea..87709265f 100644 --- a/src/GF/Devel/GrammarToGFCC.hs +++ b/src/GF/Devel/GrammarToGFCC.hs @@ -389,7 +389,14 @@ term2term cgr env@(labels,untyps,typs) tr = case tr of _ -> valNum $ comp tr --- this is mainly needed for parameter record projections - comp t = errVal t $ Compute.computeTerm cgr [] t + ---- was: errVal t $ Compute.computeConcreteRec cgr t + comp t = case t of + S (V typ ts) v0 -> errVal t $ do + let v = comp v0 + vs <- Look.allParamValues cgr typ + return $ maybe t (comp . (ts !!)) $ lookup v (zip vs [0 .. length vs - 1]) + P (R r) l -> maybe t (comp . snd) $ lookup l r + _ -> GM.composSafeOp comp t doVar :: Term -> STM [((Type,[Term]),(Term,Term))] Term doVar tr = case getLab tr of |
