[cfe-commits] r134588 - in /cfe/trunk: lib/Lex/TokenLexer.cpp test/Preprocessor/macro_paste_hashhash.c

Chris Lattner clattner at apple.com
Thu Jul 7 10:47:19 PDT 2011


On Jul 7, 2011, at 10:45 AM, Argyrios Kyrtzidis wrote:

>> This really shouldn't be using SM.isBeforeInSourceLocationOffset.  The way we handle hashhash elsewhere is to turn it into tok::other when it shouldn't cause token pasting.  For example:
>> 
>>     // Turn ## into 'unknown' to avoid # ## # from looking like a paste
>>     // operator.
>>     if (Result.is(tok::hashhash))
>>       Result.setKind(tok::unknown);
>> 
>> Can you rework this to have the argument expansion logic strip tok::hashhash's from arguments instead of using the SM.isBeforeInSourceLocationOffset query?
> 
> Are you sure ? If we keep tok::hashhash we will be able to have the parser provide an error like gcc's diagnostic "error: stray ‘##’ in program".

We can still produce that diagnostic.  Just use "stray '%0' in program" and use the spelling of a tok::other token when reporting the error.

-Chris



More information about the cfe-commits mailing list