On Fri, Jan 20, 2012 at 5:03 PM, Jean-Daniel Dupas
<[email protected]> wrote:
>
> Le 20 janv. 2012 à 23:44, Eli Friedman a écrit :
>
>> On Fri, Jan 20, 2012 at 2:09 PM, Jean-Daniel Dupas
>> <[email protected]> wrote:
>>> Hi,
>>>
>>> Actually, clang automatically add a "format(printf)" attribute to the 
>>> declarations of NSLog/NSLogv functions.
>>> This is actually wrong, as NSLog expect an NSString format attribute. It is 
>>> not really an issue as the code that checks the format string is the same 
>>> for printf and NSString,
>>> but actually I'm working on adding support for CFString format, and having 
>>> the wrong tag on NSLog functions prevent some code factoring between 
>>> CFString and NSString format checking.
>>>
>>> Now that NSString format is properly checked, this trick is no longer 
>>> needed, so I'd like to stop forcing the type to printf, and use NSString 
>>> instead.
>>>
>>> This patch also reduce the scope of this hack to objc code only (so if by 
>>> any change someone write a C library with an NSLog function, clang will not 
>>> try to tag it with an NSString format attribute).
>>
>> If you're going to be in the area anyway, can you get rid of the hack
>> altogether and add definitions of these functions into Builtins.def?
>> These functions shouldn't need any special logic.
>>
>> -Eli
>
>
> I have nothing against completely removing this hack, especially as these 
> functions are properly declared in the Foundation headers,
> but is it worth putting a definition in Builtins.def ? Unlike other objc 
> functions defined in Builtins.def, NSLog functions are not part of the 
> runtime.

Strictly speaking, it isn't, but we're already pretending it is anyway
by marking it with a format attribute, no?

-Eli

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to