diff options
author | Joe Crayne <joe@jerkface.net> | 2018-11-21 14:50:23 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2018-11-21 14:50:23 -0500 |
commit | 247fc0956e73356ec9339d9d8033749f707a3f38 (patch) | |
tree | b05779a6de3ca2f2df905348c8d531fd9a5caf56 | |
parent | 4c37b2f61273995fe7126a57b8c47a6ebda0b6a2 (diff) |
Put haskell type in stub error message.
-rw-r--r-- | c2haskell.hs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/c2haskell.hs b/c2haskell.hs index c55458a..df97487 100644 --- a/c2haskell.hs +++ b/c2haskell.hs | |||
@@ -497,6 +497,7 @@ changeName f d = d | |||
497 | 497 | ||
498 | makeAcceptableDecl (HS.TypeDecl a (DHead b (HS.Ident c signame)) ftyp) | 498 | makeAcceptableDecl (HS.TypeDecl a (DHead b (HS.Ident c signame)) ftyp) |
499 | = (HS.TypeDecl a (DHead b (HS.Ident c signame)) (makeFunctionUseIO $ makeAcceptableImport ftyp)) | 499 | = (HS.TypeDecl a (DHead b (HS.Ident c signame)) (makeFunctionUseIO $ makeAcceptableImport ftyp)) |
500 | makeAcceptableDecl (HS.TypeSig a b ftyp) = HS.TypeSig a b (makeFunctionUseIO $ makeAcceptableImport ftyp) | ||
500 | 501 | ||
501 | makeSetter d = -- @(CDeclExt (CDecl xs ys pos)) = | 502 | makeSetter d = -- @(CDeclExt (CDecl xs ys pos)) = |
502 | let name = concatMap identToString $ take 1 $ catMaybes $ sym d | 503 | let name = concatMap identToString $ take 1 $ catMaybes $ sym d |
@@ -537,7 +538,8 @@ makeStub d = -- @(CDeclExt (CDecl xs ys pos)) = | |||
537 | (args,vs) = makeParameterNames oargs | 538 | (args,vs) = makeParameterNames oargs |
538 | name = concatMap identToString $ take 1 $ catMaybes $ sym d | 539 | name = concatMap identToString $ take 1 $ catMaybes $ sym d |
539 | rval = True -- todo: Set False for void function. | 540 | rval = True -- todo: Set False for void function. |
540 | in setBody (stubBody ("f_"++name) vs rval) $ changeArgList (const $ args:xs) d | 541 | msg = "undefined: " ++ HS.prettyPrint (makeAcceptableDecl $ head $ sig d) ++ "\n" |
542 | in setBody (stubBody ("f_"++name) vs rval msg) $ changeArgList (const $ args:xs) d | ||
541 | 543 | ||
542 | 544 | ||
543 | parameterIdent :: CDeclaration a -> Maybe Ident | 545 | parameterIdent :: CDeclaration a -> Maybe Ident |
@@ -585,7 +587,7 @@ voidp = [ CFunDeclr | |||
585 | where n = undefNode | 587 | where n = undefNode |
586 | 588 | ||
587 | 589 | ||
588 | stubBody name vs rval = | 590 | stubBody name vs rval msg = |
589 | CCompound [] | 591 | CCompound [] |
590 | [ CBlockStmt | 592 | [ CBlockStmt |
591 | (CIf | 593 | (CIf |
@@ -614,10 +616,7 @@ stubBody name vs rval = | |||
614 | undefNode | 616 | undefNode |
615 | where | 617 | where |
616 | printmsg = (CExpr (Just (C.CCall (CVar (C.Ident "fputs" 0 undefNode) undefNode) | 618 | printmsg = (CExpr (Just (C.CCall (CVar (C.Ident "fputs" 0 undefNode) undefNode) |
617 | [ CConst | 619 | [ CConst (CStrConst (cString msg) undefNode) |
618 | (CStrConst | ||
619 | (cString $ "missing symbol: " ++ name ++ ".\n") | ||
620 | undefNode) | ||
621 | , CVar (C.Ident "stderr" 0 undefNode) undefNode | 620 | , CVar (C.Ident "stderr" 0 undefNode) undefNode |
622 | ] | 621 | ] |
623 | undefNode)) undefNode) | 622 | undefNode)) undefNode) |