PR19352 getLocation() points to the wrong position for FriendDecls

Richard Smith richard at metafoo.co.uk
Thu May 8 16:43:27 PDT 2014


Can you use TSI->getTypeLoc().getLocStart() instead of wiring through a new
SourceLocation?

On Thu, May 8, 2014 at 4:37 PM, Nikola Smiljanic <popizdeh at gmail.com> wrote:

> Nudge nudge :)
>
>
> On Tue, Apr 29, 2014 at 5:35 PM, Manuel Klimek <klimek at google.com> wrote:
>
>> +richard
>>
>> This makes sense to me, but I don't understand the code well enough to
>> approve... Looping in Richard for an expert opinion ;)
>>
>>
>> On Tue, Apr 29, 2014 at 5:13 AM, Nikola Smiljanic <popizdeh at gmail.com>wrote:
>>
>>> Ping.
>>>
>>>
>>> On Wed, Apr 16, 2014 at 8:38 PM, Nikola Smiljanic <popizdeh at gmail.com>wrote:
>>>
>>>> LocStart in CheckFriendTypeDecl is the start of DeclSpec range. This is
>>>> OK for checking that declaration starts with 'friend' keyword but is
>>>> redundant when it comes to FriendDecl creation. Location of the keyword is
>>>> already passed as FriendLoc.
>>>>
>>>> I've added another parameter to this function that points to location
>>>> of the type from the declaration. The call to CheckFriendTypeDecl from
>>>> SemaTemplateInstantiateDecl now isn't technically correct because it's
>>>> passing the the type location as LocStart. But the error that's checked for
>>>> using this parameter can only happen inside class declaration, not
>>>> instantiated template, I think :)
>>>>
>>>> Is there a way to test this? I'm not seeing any regressions.
>>>>
>>>> struct A{};
>>>> typedef A Atypedef;
>>>>
>>>> namespace ns { struct B{}; }
>>>>
>>>>  template <typename T>
>>>> class C
>>>> {
>>>> friend class A; // points to A
>>>> friend Atypedef; // points to Atypedef
>>>> friend T; //  points to T
>>>> friend decltype(whatever); // points to decltype
>>>> friend ns::B; // points to B
>>>> friend typename T::something; // points to something
>>>> }
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140508/dfb03f52/attachment.html>


More information about the cfe-commits mailing list