diff options
| author | aarne <unknown> | 2003-11-05 14:42:29 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2003-11-05 14:42:29 +0000 |
| commit | 49c17be41a7d572d27df74eb7351b672e85953a1 (patch) | |
| tree | 2856b2b2af3c3d6adea285dcb42173b920751897 /src/GF/Compile/Rebuild.hs | |
| parent | ed1d2a2954a3c955625cf210905a67e0683c8411 (diff) | |
working with interfaces
Diffstat (limited to 'src/GF/Compile/Rebuild.hs')
| -rw-r--r-- | src/GF/Compile/Rebuild.hs | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/GF/Compile/Rebuild.hs b/src/GF/Compile/Rebuild.hs index 6bb25ed7f..5a551ea6c 100644 --- a/src/GF/Compile/Rebuild.hs +++ b/src/GF/Compile/Rebuild.hs @@ -11,7 +11,8 @@ import Ident import Modules import Operations --- rebuilding instance + interface, and "with" modules, prior to renaming. AR 24/10/2003 +-- rebuilding instance + interface, and "with" modules, prior to renaming. +-- AR 24/10/2003 rebuildModule :: [SourceModule] -> SourceModule -> Err SourceModule rebuildModule ms mo@(i,mi) = do @@ -28,7 +29,7 @@ rebuildModule ms mo@(i,mi) = do MTInstance i0 -> do m0 <- lookupModule gr i0 m' <- case m0 of - ModMod m1 | mtype m1 == MTInterface -> do + ModMod m1 | isResourceModule m0 -> do ---- mtype m1 == MTInterface -> do ---- checkCompleteInstance m1 m -- do this later, in CheckGrammar js' <- extendMod i (jments m1) (jments m) return $ replaceJudgements m js' @@ -41,7 +42,8 @@ rebuildModule ms mo@(i,mi) = do ModWith mt stat ext ops -> do let insts = [(inf,inst) |OQualif _ inf inst <- ops] let infs = map fst insts - let stat' = ifNull MSComplete (const MSIncomplete) [i | i <- is, notElem i infs] + let stat' = ifNull MSComplete (const MSIncomplete) + [i | i <- is, notElem i infs] testErr (stat' == MSComplete || stat == MSIncomplete) ("module" +++ prt i +++ "remains incomplete") Module mt0 stat0 fs me ops0 js <- do @@ -52,7 +54,8 @@ rebuildModule ms mo@(i,mi) = do let ops1 = ops ++ [o | o <- ops0, notElem (openedModule o) infs] ++ [oQualif i i | i <- map snd insts] ---- --- check if me is incomplete - return $ ModMod $ Module mt0 stat' fs me ops1 (mapTree (qualifInstanceInfo insts) js) + return $ ModMod $ Module mt0 stat' fs me ops1 + (mapTree (qualifInstanceInfo insts) js) _ -> return mi return (i,mi') @@ -75,8 +78,8 @@ qualifInstanceInfo insts (c,i) = (c,qualInfo i) where qualInfo i = case i of ResOper pty pt -> ResOper (qualP pty) (qualP pt) CncCat pty pt pp -> CncCat (qualP pty) (qualP pt) (qualP pp) - CncFun mp pt pp -> CncFun mp (qualP pt) (qualP pp) ---- mp - ----- ResParam (Yes ps) -> ResParam (yes (map qualParam ps)) + CncFun mp pt pp -> CncFun (qualLin mp) (qualP pt) (qualP pp) ---- mp + ResParam (Yes ps) -> ResParam (yes (map qualParam ps)) ResValue pty -> ResValue (qualP pty) _ -> i qualP pt = case pt of @@ -88,7 +91,9 @@ qualifInstanceInfo insts (c,i) = (c,qualInfo i) where Q m c -> Q (qualId m) c QC m c -> QC (qualId m) c _ -> composSafeOp qual t - - -- NB constructor patterns never appear in interfaces so we need not rename them + qualParam (p,co) = (p,[(x,qual t) | (x,t) <- co]) + qualLin (Just (c,(co,t))) = (Just (c,([(x,qual t) | (x,t) <- co], qual t))) + qualLin Nothing = Nothing + -- NB constructor patterns never appear in interfaces so we need not rename them |
