[cfe-commits] r135304 - /cfe/trunk/include/clang/AST/DeclObjC.h

Douglas Gregor dgregor at apple.com
Fri Jul 15 15:11:27 PDT 2011


On Jul 15, 2011, at 3:04 PM, Argyrios Kyrtzidis wrote:

> 
> On Jul 15, 2011, at 2:49 PM, Douglas Gregor wrote:
> 
>> 
>> On Jul 15, 2011, at 2:39 PM, Argyrios Kyrtzidis wrote:
>> 
>>> Author: akirtzidis
>>> Date: Fri Jul 15 16:39:32 2011
>>> New Revision: 135304
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=135304&view=rev
>>> Log:
>>> The canonical decl for an ObjCImplDecl is it's interface class. Fixes rdar://8728637.
>>> 
>>> Modified:
>>>  cfe/trunk/include/clang/AST/DeclObjC.h
>>> 
>>> Modified: cfe/trunk/include/clang/AST/DeclObjC.h
>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=135304&r1=135303&r2=135304&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/AST/DeclObjC.h (original)
>>> +++ cfe/trunk/include/clang/AST/DeclObjC.h Fri Jul 15 16:39:32 2011
>>> @@ -1122,6 +1122,12 @@
>>>     ClassInterface(classInterface) {}
>>> 
>>> public:
>>> +  virtual Decl *getCanonicalDecl() {
>>> +    if (Decl *interface = getClassInterface())
>>> +      return interface;
>>> +    return this;
>>> +  }
>>> +
>> 
>> I think this change should be limited to libclang's clang_getCanonicalCursor(). Sema and AST are almost certainly not ready for getCanonicalCursor() to change the kind of declaration node except in the *very* limited cases corresponding to using declarations.
> 
> How does it affect negatively Sema and AST, could you give an example ?

It's assumed that calling getCanonicalDecl() on a declaration returns a declaration of the same kind… but interfaces and implementations are handled very differently (especially in Sema), so getCanonicalDecl() should not map one to the other.

It's really only in the libclang world where we want to equate interfaces and implementations. The same issue occurs with categories and category implementations.

	- Doug



More information about the cfe-commits mailing list