summaryrefslogtreecommitdiff
path: root/src/GF/Devel/Compile/Rename.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-12-09 10:52:19 +0000
committeraarne <aarne@cs.chalmers.se>2007-12-09 10:52:19 +0000
commit6a4218e9efebc8b037cf2410a5e07a3fb20a5069 (patch)
tree01185ad42df649c258725d18cdea54d7809832c3 /src/GF/Devel/Compile/Rename.hs
parentb693ba103cac076bb8fe7d83a36f4fa9808321f4 (diff)
extend behaviour for interface and incomplete
Diffstat (limited to 'src/GF/Devel/Compile/Rename.hs')
-rw-r--r--src/GF/Devel/Compile/Rename.hs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/GF/Devel/Compile/Rename.hs b/src/GF/Devel/Compile/Rename.hs
index fe4f8175f..b6d44c7ed 100644
--- a/src/GF/Devel/Compile/Rename.hs
+++ b/src/GF/Devel/Compile/Rename.hs
@@ -47,12 +47,15 @@ renameSourceTerm g m t = do
-}
renameModule :: GF -> SourceModule -> Err SourceModule
-renameModule gf sm@(name,mo) = errIn ("renaming module" +++ prt name) $ do
- let gf1 = gf {gfmodules = Map.insert name mo (gfmodules gf)}
- let rename = renameTerm (gf1,sm) []
- mo1 <- termOpModule rename mo
- let mo2 = mo1 {mopens = [(i,i) | (_,i) <- mopens mo1]}
- return (name,mo2)
+renameModule gf sm@(name,mo) = case mtype mo of
+ MTInterface -> return sm
+ _ | not (isCompleteModule mo) -> return sm
+ _ -> errIn ("renaming module" +++ prt name) $ do
+ let gf1 = gf {gfmodules = Map.insert name mo (gfmodules gf)}
+ let rename = renameTerm (gf1,sm) []
+ mo1 <- termOpModule rename mo
+ let mo2 = mo1 {mopens = nub [(i,i) | (_,i) <- mopens mo1]}
+ return (name,mo2)
type RenameEnv = (GF,SourceModule)