[cfe-dev] Get location of #pragma

Daniel Powell divot.powell at googlemail.com
Sat Jun 16 07:43:08 PDT 2012


> HandlePragma should take a SourceRange that covers the '#pragma' or
>> '_Pragma', so that this information is available to the pragma handlers. It
>> should be a fairly simple change to Clang; would you like to contribute a
>> patch for it?
>>
>
> Happy to. Just to check, you are suggesting I modify the current
> HandlePragma method to have the following prototype?
> virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind
> Introducer, Token &FirstToken, SourceLocation IntroducerLoc) = 0;
>

Sorry, make that:
virtual void HandlePragma(Preprocessor &PP, PragmaIntroducerKind
Introducer, Token &FirstToken, SourceRange IntroducerRange) = 0;

Cheers,

Dan




>
> With the three types of pragma supported (#pragma, _Pragma and __Pragma)
> their locations only appear available when the preprocessor first discovers
> the token (HandleDirective, Handle_Pragma and HandleMicrosoft__pragma
> respectively), and is lost by the time HandlePragmaDirective is called so
> it's probably best to pass the location from those places to
> HandlePragmaDirective and onwards.
>
> _Pragma and __Pragma are easy, they each have PragmaLoc pointing to the
> keyword. However, by the time #pragma is fully discovered it only has a
> location pointing to "pragma" not "#pragma". I could use the
> getLocWithOffset(-1) method, or catch it at the start of the
> HandleDirective method, which do you think is best?
>
> I'll have to update the existing PragmaHandlers too.
>
> Does all this sound sane? First time someone's asked me to contribute
> something specific back to open source. :-D
>
>
> Cheers,
>
> Dan
>
> --
> --------
> Daniel Powell
> divot.powell at googlemail.com
> http://tinyurl.com/powelld
>
> The University of Edinburgh
> Institute for Computer Systems Architecture
>



-- 
--------
Daniel Powell
divot.powell at googlemail.com
http://tinyurl.com/powelld

The University of Edinburgh
Institute for Computer Systems Architecture
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120616/d36bfe99/attachment.html>


More information about the cfe-dev mailing list