diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-11-12 17:25:00 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-11-12 17:25:00 +0000 |
| commit | 7e40df7d4c4dc475db08483dac5fd01823598a26 (patch) | |
| tree | 9d324298e7104fac03b8cff732500d3125494712 /src/GF/Devel/Compile.hs | |
| parent | 5d06a3107825aae976181cdc6aac0af4dbc2f2c8 (diff) | |
made compile from source use optimized modules internally
Diffstat (limited to 'src/GF/Devel/Compile.hs')
| -rw-r--r-- | src/GF/Devel/Compile.hs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/GF/Devel/Compile.hs b/src/GF/Devel/Compile.hs index 6b55d0eea..f5a16114f 100644 --- a/src/GF/Devel/Compile.hs +++ b/src/GF/Devel/Compile.hs @@ -126,9 +126,15 @@ compileOne opts env@(_,srcgr) file = do sm0 <- putpOpt ("- parsing" +++ file) ("- compiling" +++ file ++ "... ") $ getSourceModule opts file (k',sm) <- compileSourceModule opts env sm0 - cm <- putpp " generating code... " $ generateModuleCode opts path sm + let sm1 = if isConcr sm then shareModule sm else sm -- cannot expand Str + cm <- putpp " generating code... " $ generateModuleCode opts path sm1 -- sm is optimized before generation, but not in the env - extendCompileEnvInt env (k',sm) + let cm2 = unsubexpModule cm + extendCompileEnvInt env (k',sm1) + where + isConcr (_,mi) = case mi of + ModMod m -> isModCnc m && mstatus m /= MSIncomplete + _ -> False compileSourceModule :: Options -> CompileEnv -> @@ -174,7 +180,7 @@ generateModuleCode opts path minfo@(name,info) = do let pname = prefixPathName path (prt name) let minfo0 = minfo - let minfo1 = (if isConcr info then optModule else id) minfo + let minfo1 = subexpModule minfo0 let minfo2 = minfo1 let (file,out) = (gfoFile pname, prGrammar (MGrammar [minfo2])) @@ -184,9 +190,6 @@ generateModuleCode opts path minfo@(name,info) = do where putp = putPointE opts putpp = putPointEsil opts - isConcr mi = case mi of - ModMod m -> isModCnc m && mstatus m /= MSIncomplete - _ -> False -- auxiliaries |
