summaryrefslogtreecommitdiff
path: root/src-3.0/GF/Grammar
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-03 09:21:24 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-03 09:21:24 +0000
commit8d98fec81eb0bc54cbc8b210c4045a52a0c09d79 (patch)
tree2e578bb28f7f04528cf2fccd710ff6a1e1749013 /src-3.0/GF/Grammar
parent9dbf9c56609132c7a3731819b53e73045c430e3b (diff)
overload extension: syntax overload OldModule* {def*}
Diffstat (limited to 'src-3.0/GF/Grammar')
-rw-r--r--src-3.0/GF/Grammar/Grammar.hs2
-rw-r--r--src-3.0/GF/Grammar/Lookup.hs8
2 files changed, 6 insertions, 4 deletions
diff --git a/src-3.0/GF/Grammar/Grammar.hs b/src-3.0/GF/Grammar/Grammar.hs
index d16c6d381..4210358f1 100644
--- a/src-3.0/GF/Grammar/Grammar.hs
+++ b/src-3.0/GF/Grammar/Grammar.hs
@@ -98,7 +98,7 @@ data Info =
| ResValue (Perh (Type,Maybe Int)) -- ^ (/RES/) to mark parameter constructors for lookup
| ResOper (Perh Type) (Perh Term) -- ^ (/RES/)
- | ResOverload [Term] [(Type,Term)] -- ^ (/RES/)
+ | ResOverload [Ident] [(Type,Term)] -- ^ (/RES/) idents: modules inherited
-- judgements in concrete syntax
| CncCat (Perh Type) (Perh Term) MPr -- ^ (/CNC/) lindef ini'zed,
diff --git a/src-3.0/GF/Grammar/Lookup.hs b/src-3.0/GF/Grammar/Lookup.hs
index 36cd2101c..c8c07069b 100644
--- a/src-3.0/GF/Grammar/Lookup.hs
+++ b/src-3.0/GF/Grammar/Lookup.hs
@@ -116,9 +116,11 @@ lookupOverload gr m c = do
ModMod mo -> do
info <- lookupIdentInfo mo c
case info of
- ResOverload os tysts ->
- return [(map snd args,(val,tr)) |
- (ty,tr) <- tysts, Ok (args,val) <- [typeFormCnc ty]]
+ ResOverload os tysts -> do
+ tss <- mapM (\x -> lookupOverload gr x c) os
+ return $ [(map snd args,(val,tr)) |
+ (ty,tr) <- tysts, Ok (args,val) <- [typeFormCnc ty]] ++
+ concat tss
AnyInd _ n -> lookupOverload gr n c
_ -> Bad $ prt c +++ "is not an overloaded operation"