summaryrefslogtreecommitdiff
path: root/src/GF
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-11-12 20:09:59 +0000
committerkrasimir <krasimir@chalmers.se>2009-11-12 20:09:59 +0000
commit3d838e0172c6524b403d25ace5b039e23ab5e479 (patch)
tree20d652b7991db4bc28b40c182136b7795bb3c11f /src/GF
parent6898667b3e34773fb9e98819461f7a46462b1926 (diff)
bugfix: GF.Compile.GrammarToGFCC should not strip the parameter values
Diffstat (limited to 'src/GF')
-rw-r--r--src/GF/Compile/GrammarToGFCC.hs8
-rw-r--r--src/GF/Compile/Optimize.hs2
2 files changed, 7 insertions, 3 deletions
diff --git a/src/GF/Compile/GrammarToGFCC.hs b/src/GF/Compile/GrammarToGFCC.hs
index bf854e7ac..a022d4f43 100644
--- a/src/GF/Compile/GrammarToGFCC.hs
+++ b/src/GF/Compile/GrammarToGFCC.hs
@@ -309,12 +309,16 @@ canon2canon opts abs cg0 =
-- flatten record arguments of param constructors
p2p (f,j) = case j of
- ResParam (Just ps) _ ->
- ResParam (Just [(c,concatMap unRec cont) | (c,cont) <- ps]) Nothing
+ ResParam (Just ps) (Just vs) ->
+ ResParam (Just [(c,concatMap unRec cont) | (c,cont) <- ps]) (Just (map unrec vs))
_ -> j
unRec (bt,x,ty) = case ty of
RecType fs -> [ity | (_,typ) <- fs, ity <- unRec (Explicit,identW,typ)]
_ -> [(bt,x,ty)]
+ unrec t = case t of
+ App f (R fs) -> GM.mkApp (unrec f) [unrec u | (_,(_,u)) <- fs]
+ _ -> GM.composSafeOp unrec t
+
----
trs v = traceD (render (tr v)) v
diff --git a/src/GF/Compile/Optimize.hs b/src/GF/Compile/Optimize.hs
index ed22cc165..f54d3b012 100644
--- a/src/GF/Compile/Optimize.hs
+++ b/src/GF/Compile/Optimize.hs
@@ -52,7 +52,7 @@ optimizeModule opts ms m@(name,mi)
oopts = opts `addOptions` flagsModule m
updateEvalInfo mi (i,info) = do
- info' <- evalInfo oopts ms m i info
+ info' <- evalInfo oopts ms (name,mi) i info
return (updateModule mi i info')
evalInfo :: Options -> [SourceModule] -> SourceModule -> Ident -> Info -> Err Info