[cfe-commits] r58866 - in /cfe/trunk: include/clang/AST/DeclBase.h include/clang/Basic/DiagnosticKinds.def lib/Parse/ParseDecl.cpp lib/Sema/SemaDecl.cpp test/SemaCXX/destructor.cpp

Chris Lattner clattner at apple.com
Wed Nov 12 13:32:34 PST 2008

On Nov 11, 2008, at 12:24 PM, Argiris Kirtzidis wrote:
>> One possible fix would be to give the the Declarator a dummy name  
>> (e.g., "<destructor>", "<conversion function">) or make use of the  
>> flags that say that this isn't a normal named declarator, then make  
>> NamedDecl::getName() virtual and override it for destructors,  
>> conversion operators, etc., to form the name on-demand. Since  
>> getName() isn't invoked unless we're emitting a diagnostic--- 
>> definitely not in the hot path---it's probably a good tradeoff.  
>> We'll have to be a little careful throughough, since  
>> getIdentifier() and getName() will have different strings  
>> associated with them.
> Another benefit of using different IdentifierInfos for "~C" and "C"  
> is that the unique IdentifierInfo for the destructor allows it to be  
> cached by the IdentifierResolver.

I don't think that follows.  There is nothing that would prevent using  
something like our "Selector" class (which handles similar [in spirit]  
things for ObjC).  Selectors wrap identifier infos, are uniqued and  
are pointer sized by-value objects.


More information about the cfe-commits mailing list