blob: 7b3aef1ee5da65dfd7a1856a84e7d09807d53807 [file] [log] [blame]
Hans Wennborg5294c792011-12-28 13:10:50 +00001// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=c++11 %s
2
3extern "C" {
4extern int scanf(const char *restrict, ...);
5extern int printf(const char *restrict, ...);
6}
7
8void f(char **sp, float *fp) {
Ted Kremenekce506ae2012-01-20 21:52:58 +00009 scanf("%as", sp); // expected-warning{{format specifies type 'float *' but the argument has type 'char **'}}
Hans Wennborg5294c792011-12-28 13:10:50 +000010
11 printf("%a", 1.0);
12 scanf("%afoobar", fp);
David Blaikiea73cdcb2012-02-10 21:07:25 +000013 printf(nullptr);
14 printf(*sp); // expected-warning {{not a string literal}}
Richard Smithdf9ef1b2012-06-13 05:37:23 +000015
16 // PR13099
17 printf(
18 R"foobar(%)foobar"
19 R"bazquux(d)bazquux" // expected-warning {{more '%' conversions than data arguments}}
20 R"xyzzy()xyzzy");
21
22 printf(u8"this is %d test", 0); // ok
23 printf(u8R"foo(
24 \u1234\U0010fffe
25 %d)foo" // expected-warning {{more '%' conversions than data arguments}}
26 );
Hans Wennborg5294c792011-12-28 13:10:50 +000027}