diff options
| author | krasimir <krasimir@chalmers.se> | 2009-11-12 20:09:59 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2009-11-12 20:09:59 +0000 |
| commit | 3d838e0172c6524b403d25ace5b039e23ab5e479 (patch) | |
| tree | 20d652b7991db4bc28b40c182136b7795bb3c11f /src/GF/Compile | |
| parent | 6898667b3e34773fb9e98819461f7a46462b1926 (diff) | |
bugfix: GF.Compile.GrammarToGFCC should not strip the parameter values
Diffstat (limited to 'src/GF/Compile')
| -rw-r--r-- | src/GF/Compile/GrammarToGFCC.hs | 8 | ||||
| -rw-r--r-- | src/GF/Compile/Optimize.hs | 2 |
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 |
