diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/SemaObjC/format-strings-objc.m | 13 | ||||
-rw-r--r-- | clang/test/SemaObjC/format-strings-system.h | 10 |
2 files changed, 21 insertions, 2 deletions
diff --git a/clang/test/SemaObjC/format-strings-objc.m b/clang/test/SemaObjC/format-strings-objc.m index 987889bc232..c1285b2e13d 100644 --- a/clang/test/SemaObjC/format-strings-objc.m +++ b/clang/test/SemaObjC/format-strings-objc.m @@ -111,11 +111,20 @@ NSString *test_literal_propagation(void) { } // Do not emit warnings when using NSLocalizedString -extern NSString *GetLocalizedString(NSString *str); -#define NSLocalizedString(key) GetLocalizedString(key) +#include "format-strings-system.h" + +// Test it inhibits diag only for macros in system headers +#define MyNSLocalizedString(key) GetLocalizedString(key) +#define MyNSAssert(fmt, arg) NSLog(fmt, arg, 0, 0) void check_NSLocalizedString() { [Foo fooWithFormat:NSLocalizedString(@"format"), @"arg"]; // no-warning + [Foo fooWithFormat:MyNSLocalizedString(@"format"), @"arg"]; // expected-warning {{format string is not a string literal}}} +} + +void check_NSAssert() { + NSAssert(@"Hello %@", @"World"); // no-warning + MyNSAssert(@"Hello %@", @"World"); // expected-warning {{data argument not used by format string}} } typedef __WCHAR_TYPE__ wchar_t; diff --git a/clang/test/SemaObjC/format-strings-system.h b/clang/test/SemaObjC/format-strings-system.h new file mode 100644 index 00000000000..73b776845cb --- /dev/null +++ b/clang/test/SemaObjC/format-strings-system.h @@ -0,0 +1,10 @@ + +#pragma clang system_header + +@class NSString; + +// Do not emit warnings when using NSLocalizedString +extern NSString *GetLocalizedString(NSString *str); +#define NSLocalizedString(key) GetLocalizedString(key) + +#define NSAssert(fmt, arg) NSLog(fmt, arg, 0, 0) |