[PATCH] Mimic MSVC whitespace collapse for incompatible token pasting
Reid Kleckner
rnk at google.com
Fri Apr 10 12:59:29 PDT 2015
Sure, this is http://llvm.org/pr23071.
Can this be handled locally by this code?
// If we're in microsoft extensions mode, downgrade this from a
hard
// error to an extension that defaults to an error. This allows
// disabling it.
PP.Diag(Loc, PP.getLangOpts().MicrosoftExt ?
diag::ext_pp_bad_paste_ms
:
diag::err_pp_bad_paste)
<< Buffer;
Any reason we can't do RHS.clearFlag(Token::LeadingSpace) here in
-fms-extensions mode?
On Fri, Apr 10, 2015 at 12:45 PM, Will Wilson <will at indefiant.com> wrote:
> Hi Reid,
>
> Attached is a patch to handle a corner case supported by MSVC. I decided
> to attempt to workaround the behaviour in clang after encountering it in
> public MS headers for XAudio where clang would fail to generate a valid
> UUID due to the UUID components being combined with the '-' UUID
> separators. Clang was attempting to recover but would preserve the leading
> whitespace from the tokens after each failed paste leading to spaces
> creeping into the UUID and causing an error in the __declspace(uuid())
> parsing.
>
> Reference: Microsoft DirectX SDK (June 2010)\Include\XAudio2.h(51)
>
> Test case included and tested against latest trunk.
>
> Let me know if it looks acceptable!
>
> Cheers,
> Will.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150410/9fe59a7e/attachment.html>
More information about the cfe-commits
mailing list