[cfe-commits] r135314 - in /cfe/trunk: include/clang/AST/DeclObjC.h tools/libclang/CIndex.cpp

Argyrios Kyrtzidis kyrtzidis at apple.com
Fri Jul 15 15:38:52 PDT 2011


On Jul 15, 2011, at 3:29 PM, Douglas Gregor wrote:

> 
> On Jul 15, 2011, at 3:27 PM, Argyrios Kyrtzidis wrote:
> 
>> Author: akirtzidis
>> Date: Fri Jul 15 17:27:18 2011
>> New Revision: 135314
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=135314&view=rev
>> Log:
>> Revert r135304 and apply fix in clang_getCanonicalCursor per Doug's, Fariborz's comments.
> 
> Thanks! One last comment, though…
> 
>> Modified:
>>   cfe/trunk/include/clang/AST/DeclObjC.h
>>   cfe/trunk/tools/libclang/CIndex.cpp
>> 
>> Modified: cfe/trunk/include/clang/AST/DeclObjC.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=135314&r1=135313&r2=135314&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/AST/DeclObjC.h (original)
>> +++ cfe/trunk/include/clang/AST/DeclObjC.h Fri Jul 15 17:27:18 2011
>> @@ -1122,12 +1122,6 @@
>>      ClassInterface(classInterface) {}
>> 
>> public:
>> -  virtual Decl *getCanonicalDecl() {
>> -    if (Decl *interface = getClassInterface())
>> -      return interface;
>> -    return this;
>> -  }
>> -
>>  const ObjCInterfaceDecl *getClassInterface() const { return ClassInterface; }
>>  ObjCInterfaceDecl *getClassInterface() { return ClassInterface; }
>>  void setClassInterface(ObjCInterfaceDecl *IFace);
>> 
>> Modified: cfe/trunk/tools/libclang/CIndex.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndex.cpp?rev=135314&r1=135313&r2=135314&view=diff
>> ==============================================================================
>> --- cfe/trunk/tools/libclang/CIndex.cpp (original)
>> +++ cfe/trunk/tools/libclang/CIndex.cpp Fri Jul 15 17:27:18 2011
>> @@ -4141,8 +4141,13 @@
>>  if (!clang_isDeclaration(C.kind))
>>    return C;
>> 
>> -  if (Decl *D = getCursorDecl(C))
>> +  if (Decl *D = getCursorDecl(C)) {
>> +    if (ObjCImplDecl *ImplD = dyn_cast<ObjCImplDecl>(D))
>> +      if (ObjCInterfaceDecl *IFD = ImplD->getClassInterface())
>> +        return MakeCXCursor(IFD, getCursorTU(C));
>> +
>>    return MakeCXCursor(D->getCanonicalDecl(), getCursorTU(C));
>> +  }
> 
> 
> I think the canonical cursor of a category implementation should be the category, rather than the interface.

In r135316, thanks!

> 
> 	- Doug





More information about the cfe-commits mailing list