[cfe-dev] getLocation() for a friend type declaration

Дмитрий Борисенков stackoverflow at xakep.ru
Mon Apr 7 02:51:51 PDT 2014


Hello Manuel,

I've implemented RecursiveASTVisitor with the following VisitXXX method:

   bool VisitFriendDecl(FriendDecl *Declaration) {
      FullSourceLoc FullLocation =
Context->getFullLoc(Declaration->getLocation());
      if (FullLocation.isValid()){
        llvm::outs() << "Found friend declaration at "
                     << FullLocation.getSpellingLineNumber() << ":"
                     << FullLocation.getSpellingColumnNumber() << "\n";
      }
      return true;
    }

Then I run a tool which contains my visitor on the following (incorrect)
code

  1 template<typename T>
  2 class F{};
  3 class F1{};
  4 void f(){};
  5
  6 class classX
  7 {
  8   friend class classXfriend;
  9   friend class F<int>;
 10   friend class F1;
 11   friend void f();
 12 };

Tool displayed the following:

Found friend declaration at 8:3
Found friend declaration at 9:3
Found friend declaration at 10:3
Found friend declaration at 11:15

As you can see getLocation() refers to a friend keyword token in the case
of a friend type declaration. Tool works with compilable code in the same
way.

--
Kind regards, Dmitry



On Fri, Apr 4, 2014 at 9:50 PM, Manuel Klimek <klimek at google.com> wrote:

> On Thu, Apr 3, 2014 at 11:41 AM, Дмитрий Борисенков <
> stackoverflow at xakep.ru> wrote:
>
>> Hello,
>>
>> I'm trying to get a source location for a type name identifier in
>> FriendDecl, but getLocation() method returns source location of keyword
>> 'friend'. Such behavior confused me a bit, because usually getLocation()
>> returns an identifier location. I've released I can get location which I
>> need through DeclSpec::getTypeSpecTypeNameLoc(). But could you explain me
>> why getLocation() behavior differs from expected one (at least expected by
>> me) in this case?
>>
>
> From the code this shouldn't be the case. Unless you're calling
> getFriendLoc() instead of getLocation().
>
> Cheers,
> /Manuel
>
>
>>
>>
>> --
>> Kind regards, Dmitry Borisenkov
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>>
>


-- 
С уважением, Борисенков Дмитрий
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140407/c7d9525b/attachment.html>


More information about the cfe-dev mailing list