cpphs 1.19.3 → 1.20
raw patch · 5 files changed
+33/−13 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Language.Preprocessor.Cpphs: ansi :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: boolopts :: CpphsOptions -> BoolOptions
- Language.Preprocessor.Cpphs: defines :: CpphsOptions -> [(String, String)]
- Language.Preprocessor.Cpphs: hashline :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: includes :: CpphsOptions -> [String]
- Language.Preprocessor.Cpphs: infiles :: CpphsOptions -> [FilePath]
- Language.Preprocessor.Cpphs: lang :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: layout :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: literate :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: locations :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: macros :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: outfiles :: CpphsOptions -> [FilePath]
- Language.Preprocessor.Cpphs: pragma :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: preInclude :: CpphsOptions -> [FilePath]
- Language.Preprocessor.Cpphs: stripC89 :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: stripEol :: BoolOptions -> Bool
- Language.Preprocessor.Cpphs: warnings :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [ansi] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [boolopts] :: CpphsOptions -> BoolOptions
+ Language.Preprocessor.Cpphs: [defines] :: CpphsOptions -> [(String, String)]
+ Language.Preprocessor.Cpphs: [hashline] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [includes] :: CpphsOptions -> [String]
+ Language.Preprocessor.Cpphs: [infiles] :: CpphsOptions -> [FilePath]
+ Language.Preprocessor.Cpphs: [lang] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [layout] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [literate] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [locations] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [macros] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [outfiles] :: CpphsOptions -> [FilePath]
+ Language.Preprocessor.Cpphs: [pragma] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [preInclude] :: CpphsOptions -> [FilePath]
+ Language.Preprocessor.Cpphs: [stripC89] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [stripEol] :: BoolOptions -> Bool
+ Language.Preprocessor.Cpphs: [warnings] :: BoolOptions -> Bool
Files
- CHANGELOG +4/−0
- Language/Preprocessor/Cpphs/CppIfdef.hs +14/−6
- README +1/−1
- cpphs.cabal +2/−2
- docs/index.html +12/−4
CHANGELOG view
@@ -1,3 +1,7 @@+Version 1.20+------------+ * bugfixes for #if defined(FOO) && FOO(a,b)+ Version 1.19 ------------ * expose more of the cpphs API
Language/Preprocessor/Cpphs/CppIfdef.hs view
@@ -216,16 +216,22 @@ -- | Expansion of symbols. expandSymOrCall :: SymTab HashDefine -> TextParser String expandSymOrCall st =- do sym <- parseSym+ do sym <- parseSym+ if sym=="defined" then do arg <- skip parseSym; convert sym [arg]+ <|>+ do arg <- skip $ parenthesis (do x <- skip parseSym;+ skip (return x))+ convert sym [arg]+ <|> convert sym []+ else ( do args <- parenthesis (commit $ fragment `sepBy` skip (isWord ",")) args' <- flip mapM args $ \arg-> case runParser (preExpand st) arg of (Left msg, _) -> fail msg (Right s, _) -> return s convert sym args'- <|>- if (sym=="defined") then do arg <- skip parseSym; convert sym [arg]- else convert sym [] )+ <|> convert sym []+ ) where fragment = many1 (satisfy (`notElem`",)")) convert "defined" [arg] =@@ -238,14 +244,16 @@ convert sym args = case lookupST sym st of Nothing -> if null args then return sym- else fail (disp sym args++" is not a defined macro")+ else return "0"+ -- else fail (disp sym args++" is not a defined macro") Just (a@SymbolReplacement{}) -> do reparse (replacement a) return "" Just (a@MacroExpansion{}) -> do reparse (expandMacro a args False) return "" Just (a@AntiDefined{}) -> if null args then return sym- else fail (disp sym args++" explicitly undefined with -U")+ else return "0"+ -- else fail (disp sym args++" explicitly undefined with -U") disp sym args = let len = length args chars = map (:[]) ['a'..'z'] in sym ++ if null args then ""
README view
@@ -30,7 +30,7 @@ COPYRIGHT ----------Copyright (c) 2004-2015 Malcolm Wallace (Malcolm.Wallace@me.com)+Copyright (c) 2004-2016 Malcolm Wallace (Malcolm.Wallace@me.com) LICENCE
cpphs.cabal view
@@ -1,6 +1,6 @@ Name: cpphs-Version: 1.19.3-Copyright: 2004-2015, Malcolm Wallace+Version: 1.20+Copyright: 2004-2016, Malcolm Wallace License: LGPL License-File: LICENCE-LGPL Cabal-Version: >= 1.6
docs/index.html view
@@ -198,12 +198,11 @@ <b>Current stable version:</b> <p>-cpphs-1.19.3, release date 2015-08-23<br>+cpphs-1.20, release date 2016-03-04<br> By HTTP: <a href="http://hackage.haskell.org/package/cpphs">Hackage</a>. <ul>-<li> bugfix for hlint ticket #161, for- the interaction of --unlit and --linepragma options+<li> bugfix for #if defined(FOO) && FOO(a,b) </ul> <p>@@ -227,6 +226,15 @@ <b>Older versions:</b> <p>+cpphs-1.19.3, release date 2015-08-23<br>+By HTTP:+<a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.+<ul>+<li> bugfix for hlint ticket #161, for+ the interaction of --unlit and --linepragma options+</ul>++<p> cpphs-1.19.2, release date 2015-07-31<br> By HTTP: <a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.@@ -753,7 +761,7 @@ Malcolm.Wallace@me.com</a> </ul> -<p><b>Copyright:</b> © 2004-2015 Malcolm Wallace+<p><b>Copyright:</b> © 2004-2016 Malcolm Wallace <p><b>License:</b> The library modules in cpphs are distributed under the terms of the LGPL (see file <a href="LICENCE-LGPL">LICENCE-LGPL</a>