On 21 Feb 2014, at 16:04, Roman Cheplyaka wrote:

> This appears to be a cpphs bug. For the following code
> 
>    #define x (1 == 1)
>    #if x
>    YES
>    #else
>    NO
>    #endif
> 
> cpphs 1.18.1 prints NO, while the expected output (and the output GNU
> cpp produces) is YES.


I acknowledge that this is a bug in cpphs.  It is actually a bit worse than 
this - the following code also outputs NO with cpphs, when it should clearly be 
YES:

    #define x   0 == 0
    #if x
    YES
    #else
    NO
    #endif

It is all to do with the recursive expansion of symbols during parsing, where 
currently we are interpreting the first symbol in the expansion as the intended 
boolean value, rather than re-parsing the whole expanded expression.  Fixing it 
will be a little bit more involved than just adding another clause to the 
parser, but I'm on it.

Regards,
    Malcolm
_______________________________________________
ghc-devs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to