On Jan 24, 2012, at 4:39 PM, Jean-Daniel Dupas wrote:

> Hi,
> 
> 
> 3-macros: In Obj-C and CoreFoundation, the recommended way to localize string 
> are respectively to use NSLocalizedString(key, comment) and 
> CFCopyLocalizedString(key, comment) macros family.
> It is common to use these macros as format string, but as they expand to 
> method/function call, clang will warn about "non literal string" used as 
> format string.
> So, this patch is a tentative to prevent diagnostic for this common usage. It 
> inhibits the "non literal string format" diagnostic when the format type if 
> NS/CFstring and the format argument is a macro expansion.
> Note that while the CFCopyLocalizedString() expands to a function properly 
> tagged with the "format_arg" attribute, we can't rely on it, because 
> interpreting the 'key' parameter as a format string is incorrect IMHO.
> It is a common practice to use some kind of descriptive name for the key 
> (i.e. "UNEXPECTED_ERROR_TITLE") instead of the string value ("An unexpected 
> error occurred: %@").
> Moreover, NSLocalizedString() does not use the "format_arg" attribute.
> 

I don't seem to be getting the warning on the test case, and I don't think you 
have yet checked in the patch.

- Fariborz

> If you have a better idea to limit diagnostic for this common pattern, let me 
> know.
> 
> 
> 
> -- Jean-Daniel
> 
> 
> 
> <1-type.patch><2-block.patch><3-macros.patch><4-objc-const.patch><5-vprintf.patch>_______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

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

Reply via email to