Of course, cpphs solved this problem nearly a decade ago.
Regards,
Malcolm
On 3 Nov 2013, at 17:57, Mark Lentczner wrote:
> Turns out that c pre-processing removes C style (/*…*/) comments. Of course,
> it will do this anywhere in the source. The following program can tell if it
> is compiled -cpp or not:
>
> module Main where
>
> (*/**) :: Double -> Double -> Double
> (*/**) a b = a / (2 ** b)
>
> howCompiled = if use > 1/16 then "normal" else "-cpp"
> where
> use = 1 */** 2 + 3 */** 4
>
> main = putStrLn $ "compiled " ++ howCompiled
>
> When run:
>
> & runhaskell CppTest.hs
> compiled normal
>
> & runhaskell -cpp CppTest.hs
> compiled -cpp
>
> An example in the wild is in the package wai-extra, in the file
> Network/Wai/Middleware/RequestLogger.hs where the */* construct appears twice
> in the comments.
>
> Short of defining and implementing our own CPP-like preprocessing (something
> we might actually consider), I don't think there really is any fix for this,
> so the bug is that it should appear in the GHC documentation on CPP mode
> (§4.12.3), along with similar warnings about trailing back-slashes.
>
> Note that the way in which a multi-line comment is removed differs between
> gcc and clang. In gcc, the comment is removed and content of the line before
> the comment, and contents of the line after the comment are joined into a
> single line. In clang, the two line fragments are kept on separate lines. In
> both cases extra empty lines are added to keep the line count the same.
>
> The consequence of the gcc / clang difference is that neither the above code,
> nor wai-extra will compile with clang.
>
> Note: As far as I can tell this is not a clang bug, but a failure of specs:
> The C definition of comments and their removal is vague, and my guess is gcc
> choose its method based on historical use. The C++ definition makes it clear
> that comments are whitespace, even once removed, and so the clang method is
> correct.
>
> - Mark
>
> _______________________________________________
> ghc-devs mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/ghc-devs
_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs