Erik Pilkington | f7766b1e | 2019-10-04 19:20:27 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-format -Wformat-pedantic %s |
| 2 | // RUN: %clang_cc1 -xobjective-c -fblocks -fsyntax-only -verify -Wno-format -Wformat-pedantic %s |
| 3 | // RUN: %clang_cc1 -xc++ -fsyntax-only -verify -Wno-format -Wformat-pedantic %s |
Nathan Huckleberry | cc01d64 | 2019-08-23 18:01:57 +0000 | [diff] [blame] | 4 | |
Erik Pilkington | f7766b1e | 2019-10-04 19:20:27 +0000 | [diff] [blame] | 5 | __attribute__((format(printf, 1, 2))) |
Nathan Huckleberry | cc01d64 | 2019-08-23 18:01:57 +0000 | [diff] [blame] | 6 | int printf(const char *restrict, ...); |
| 7 | |
Erik Pilkington | f7766b1e | 2019-10-04 19:20:27 +0000 | [diff] [blame] | 8 | int main() { |
| 9 | printf("%p", (int *)0); // expected-warning {{format specifies type 'void *' but the argument has type 'int *'}} |
| 10 | printf("%p", (void *)0); |
Nathan Huckleberry | cc01d64 | 2019-08-23 18:01:57 +0000 | [diff] [blame] | 11 | |
Erik Pilkington | f7766b1e | 2019-10-04 19:20:27 +0000 | [diff] [blame] | 12 | #ifdef __OBJC__ |
| 13 | printf("%p", ^{}); // expected-warning {{format specifies type 'void *' but the argument has type 'void (^)(void)'}} |
| 14 | printf("%p", (id)0); // expected-warning {{format specifies type 'void *' but the argument has type 'id'}} |
| 15 | #endif |
| 16 | |
| 17 | #ifdef __cplusplus |
| 18 | printf("%p", nullptr); // expected-warning {{format specifies type 'void *' but the argument has type 'nullptr_t'}} |
| 19 | #endif |
Nathan Huckleberry | cc01d64 | 2019-08-23 18:01:57 +0000 | [diff] [blame] | 20 | } |