summaryrefslogtreecommitdiff
path: root/src/GF/Compile/ShellState.hs
diff options
context:
space:
mode:
authoraarne <unknown>2005-11-11 22:24:33 +0000
committeraarne <unknown>2005-11-11 22:24:33 +0000
commit00b435c839b12539a78e9d5040f94d2284d37c0b (patch)
tree1a74f03ecc42f53e034998fb29b0ab12256ae6e8 /src/GF/Compile/ShellState.hs
parentc52e57411b79b543f626651783a5cf2306c916f7 (diff)
compilation of functors
Diffstat (limited to 'src/GF/Compile/ShellState.hs')
-rw-r--r--src/GF/Compile/ShellState.hs19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/GF/Compile/ShellState.hs b/src/GF/Compile/ShellState.hs
index 4766bf685..3773d59f9 100644
--- a/src/GF/Compile/ShellState.hs
+++ b/src/GF/Compile/ShellState.hs
@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
--- > CVS $Date: 2005/11/09 22:34:01 $
+-- > CVS $Date: 2005/11/11 23:24:34 $
-- > CVS $Author: aarne $
--- > CVS $Revision: 1.51 $
+-- > CVS $Revision: 1.52 $
--
-- (Description of the module)
-----------------------------------------------------------------------------
@@ -313,9 +313,10 @@ purgeShellState sh = ShSt {
where
abstr = abstract sh
concrs = [((a,i),b) | ((a,i),b) <- concretes sh, elem i needed]
- needed = nub $ concatMap (requiredCanModules (canModules sh)) acncs
+ isSingle = length (abstracts sh) == 1
+ needed = nub $ concatMap (requiredCanModules isSingle (canModules sh)) acncs
purge = nubBy (\x y -> fst x == fst y) . filter (flip elem needed . fst)
- acncs = maybe [] singleton (abstract sh) ++ map (snd . fst) (actualConcretes sh)
+ acncs = maybe [] singleton abstr ++ map (snd . fst) (actualConcretes sh)
changeMain :: Maybe Ident -> ShellState -> Err ShellState
changeMain Nothing (ShSt _ _ cs ms ss cfs old_pis mcfgs cfgs pinfos mos pbs os rs acs s) =
@@ -345,8 +346,8 @@ qualifTop :: StateGrammar -> G.QIdent -> G.QIdent
qualifTop gr (_,c) = (absId gr,c)
stateGrammarOfLang :: ShellState -> Language -> StateGrammar
-stateGrammarOfLang st l = StGr {
- absId = maybe (identC "Abs") id (abstract st), ---
+stateGrammarOfLang st0 l = StGr {
+ absId = err (const (identC "Abs")) id $ M.abstractOfConcrete allCan l, ---
cncId = l,
grammar = can,
cf = maybe emptyCF id (lookup l (cfs st)),
@@ -358,9 +359,11 @@ stateGrammarOfLang st l = StGr {
loptions = errVal noOptions $ lookupOptionsCan can
}
where
+ st = purgeShellState $ st0 {concrete = Just l}
allCan = canModules st
- can = M.partOfGrammar allCan
- (l, maybe M.emptyModInfo id (lookup l (M.modules allCan)))
+ can = allCan
+---- can = M.partOfGrammar allCan
+---- (l, maybe M.emptyModInfo id (lookup l (M.modules allCan)))
grammarOfLang :: ShellState -> Language -> CanonGrammar
cfOfLang :: ShellState -> Language -> CF