forked from GitHub/gf-core
overload extension: syntax overload OldModule* {def*}
This commit is contained in:
@@ -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 ()
|
||||
|
||||
|
||||
@@ -171,7 +171,7 @@ renameInfo mo status (i,info) = errIn
|
||||
|
||||
ResOper pty ptr -> liftM2 ResOper (ren pty) (ren ptr)
|
||||
ResOverload os tysts ->
|
||||
liftM2 ResOverload (mapM rent os) (mapM (pairM rent) tysts)
|
||||
liftM (ResOverload os) (mapM (pairM rent) tysts)
|
||||
|
||||
ResParam (Yes (pp,m)) -> do
|
||||
pp' <- mapM (renameParam status) pp
|
||||
|
||||
Reference in New Issue
Block a user