]> granicus.if.org Git - clang/commit
Format strings: offer a cast to 'unichar' for %C in Objective-C contexts.
authorJordan Rose <jordan_rose@apple.com>
Wed, 5 Dec 2012 18:44:49 +0000 (18:44 +0000)
committerJordan Rose <jordan_rose@apple.com>
Wed, 5 Dec 2012 18:44:49 +0000 (18:44 +0000)
commit2cd3440369d9241173e994485ddf2589a50a7d80
treefeb3ef784f50d6eaa7649fc4e34667149fdac37b
parent17ddc54b8b94c58286dec6f99ae1f9e12e30d297
Format strings: offer a cast to 'unichar' for %C in Objective-C contexts.

For most cases where a conversion specifier doesn't match an argument,
we usually guess that the conversion specifier is wrong. However, if
the argument is an integer type and the specifier is %C, it's likely
the user really did mean to print the integer as a character.

(This is more common than %c because there is no way to specify a unichar
literal -- you have to write an integer literal, such as '0x2603',
and then cast it to unichar.)

This does not change the behavior of %S, since there are fewer cases
where printing a literal Unicode *string* is necessary, but this could
easily be changed in the future.

<rdar://problem/11982013>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169400 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/PrintfFormatString.cpp
lib/Sema/SemaChecking.cpp
test/FixIt/format.m
test/FixIt/format.mm [new file with mode: 0644]
test/SemaObjC/format-strings-objc.m