From 8d98fec81eb0bc54cbc8b210c4045a52a0c09d79 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 3 Jun 2008 09:21:24 +0000 Subject: overload extension: syntax overload OldModule* {def*} --- src-3.0/GF/Compile/CheckGrammar.hs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src-3.0/GF/Compile/CheckGrammar.hs') diff --git a/src-3.0/GF/Compile/CheckGrammar.hs b/src-3.0/GF/Compile/CheckGrammar.hs index 2fb4f5895..c580149dc 100644 --- a/src-3.0/GF/Compile/CheckGrammar.hs +++ b/src-3.0/GF/Compile/CheckGrammar.hs @@ -232,7 +232,10 @@ checkResInfo gr mo mm (c,info) = do return (c, ResOper pty' pde') ResOverload os tysts -> chIn "overloading" $ do - tysts' <- mapM (uncurry $ flip check) tysts + --tysts' <- mapM (uncurry $ flip check) tysts + tysts0 <- checkErr $ lookupOverload gr mo c + tysts' <- mapM (uncurry $ flip check) + [(mkFunType args val,tr) | (args,(val,tr)) <- tysts0] let tysts2 = [(y,x) | (x,y) <- tysts'] --- this can only be a partial guarantee, since matching --- with value type is only possible if expected type is given @@ -256,8 +259,8 @@ checkResInfo gr mo mm (c,info) = do checkUniq xss = case xss of x:y:xs - | x == y -> raise $ "ambiguous for argument list" +++ - unwords (map (prtType gr) x) + | x == y -> raise $ "ambiguous for type" +++ + prtType gr (mkFunType (init x) (last x)) | otherwise -> checkUniq $ y:xs _ -> return () -- cgit v1.2.3