diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-06-03 09:21:24 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-06-03 09:21:24 +0000 |
| commit | 8d98fec81eb0bc54cbc8b210c4045a52a0c09d79 (patch) | |
| tree | 2e578bb28f7f04528cf2fccd710ff6a1e1749013 /src-3.0/GF/Grammar | |
| parent | 9dbf9c56609132c7a3731819b53e73045c430e3b (diff) | |
overload extension: syntax overload OldModule* {def*}
Diffstat (limited to 'src-3.0/GF/Grammar')
| -rw-r--r-- | src-3.0/GF/Grammar/Grammar.hs | 2 | ||||
| -rw-r--r-- | src-3.0/GF/Grammar/Lookup.hs | 8 |
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" |
