summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-03-22 19:14:27 -0400
committerJoe Crayne <joe@jerkface.net>2019-03-22 19:14:27 -0400
commit6cbcc42ef4ac75a9bccb4e9d0acc53116c7c68e8 (patch)
tree09ca5acc642cd194bb88506fcc5cad0aee836bbf
parenta7ef7551b3bc078c6992619e3fe847324b074d24 (diff)
Option to suppress do-syntax.
-rw-r--r--monkeypatch.hs8
1 files changed, 7 insertions, 1 deletions
diff --git a/monkeypatch.hs b/monkeypatch.hs
index 37e52a6..bc55425 100644
--- a/monkeypatch.hs
+++ b/monkeypatch.hs
@@ -573,6 +573,9 @@ insertComment c stmts = everywhere (mkT go) stmts
573mixComments :: [StyledComment] -> [CCompoundBlockItem NodeInfo] -> [CCompoundBlockItem NodeInfo] 573mixComments :: [StyledComment] -> [CCompoundBlockItem NodeInfo] -> [CCompoundBlockItem NodeInfo]
574mixComments cs stmts = foldr insertComment stmts cs 574mixComments cs stmts = foldr insertComment stmts cs
575 575
576applyDoSyntax' C2HaskellOptions{oSuppressDo=True} x = x
577applyDoSyntax' _ x = applyDoSyntax x
578
576transpile :: C2HaskellOptions -> FilePath -> IncludeStack -> CTranslationUnit NodeInfo -> IO () 579transpile :: C2HaskellOptions -> FilePath -> IncludeStack -> CTranslationUnit NodeInfo -> IO ()
577transpile o fname incs (CTranslUnit edecls _) = do 580transpile o fname incs (CTranslUnit edecls _) = do
578 let db = foldr update initTranspile edecls 581 let db = foldr update initTranspile edecls
@@ -632,7 +635,7 @@ transpile o fname incs (CTranslUnit edecls _) = do
632 return $ foldr applyComputation (Computation Map.empty Map.empty retUnit) xs 635 return $ foldr applyComputation (Computation Map.empty Map.empty retUnit) xs
633 case mhask of 636 case mhask of
634 Just hask -> do printHeader 637 Just hask -> do printHeader
635 mapM_ (putStrLn . (" "++)) $ lines $ HS.prettyPrint $ applyDoSyntax $ comp hask 638 mapM_ (putStrLn . (" "++)) $ lines $ HS.prettyPrint $ applyDoSyntax' o $ comp hask
636 Nothing -> forM_ (oSelectFunction o) $ \_ -> do 639 Nothing -> forM_ (oSelectFunction o) $ \_ -> do
637 printHeader 640 printHeader
638 forM_ bdy $ \d -> do 641 forM_ bdy $ \d -> do
@@ -955,6 +958,7 @@ data C2HaskellOptions = C2HaskellOptions
955 , oPreprocess :: Bool 958 , oPreprocess :: Bool
956 , oTranspile :: Bool 959 , oTranspile :: Bool
957 , oCommentsOnly :: Bool 960 , oCommentsOnly :: Bool
961 , oSuppressDo :: Bool
958 } 962 }
959 963
960defopts :: C2HaskellOptions 964defopts :: C2HaskellOptions
@@ -966,6 +970,7 @@ defopts = C2HaskellOptions
966 , oPreprocess = False 970 , oPreprocess = False
967 , oTranspile = False 971 , oTranspile = False
968 , oCommentsOnly = False 972 , oCommentsOnly = False
973 , oSuppressDo = False
969 } 974 }
970 975
971parseOptions :: [String] -> C2HaskellOptions -> C2HaskellOptions 976parseOptions :: [String] -> C2HaskellOptions -> C2HaskellOptions
@@ -976,6 +981,7 @@ parseOptions ("-p":args) o = parseOptions args o{ oPrettyC = True }
976parseOptions ("--cpp":args) o = parseOptions args o{ oPreprocess = True } 981parseOptions ("--cpp":args) o = parseOptions args o{ oPreprocess = True }
977parseOptions ("-v":args) o = parseOptions args o{ oVerbose = True } 982parseOptions ("-v":args) o = parseOptions args o{ oVerbose = True }
978parseOptions ("--tohs":args) o = parseOptions args o{ oTranspile = True } 983parseOptions ("--tohs":args) o = parseOptions args o{ oTranspile = True }
984parseOptions ("--nodo":args) o = parseOptions args o{ oSuppressDo = True }
979parseOptions ("--comments":args) o = parseOptions args o{ oCommentsOnly = True } 985parseOptions ("--comments":args) o = parseOptions args o{ oCommentsOnly = True }
980parseOptions as o = error (show as) 986parseOptions as o = error (show as)
981 987