15294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=c++11 %s
25294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg
35294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborgextern "C" {
45294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborgextern int scanf(const char *restrict, ...);
55294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborgextern int printf(const char *restrict, ...);
65294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg}
75294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg
85294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborgvoid f(char **sp, float *fp) {
9ce506ae231703a23ea95335cd4de19c60082f361Ted Kremenek  scanf("%as", sp); // expected-warning{{format specifies type 'float *' but the argument has type 'char **'}}
105294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg
115294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg  printf("%a", 1.0);
125294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg  scanf("%afoobar", fp);
13a73cdcbc1dc1ed98c54556c6adcd2b12301759ccDavid Blaikie  printf(nullptr);
14a73cdcbc1dc1ed98c54556c6adcd2b12301759ccDavid Blaikie  printf(*sp); // expected-warning {{not a string literal}}
15df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith
16df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith  // PR13099
17df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith  printf(
18df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith    R"foobar(%)foobar"
19df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith    R"bazquux(d)bazquux" // expected-warning {{more '%' conversions than data arguments}}
20df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith    R"xyzzy()xyzzy");
21df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith
22df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith  printf(u8"this is %d test", 0); // ok
23df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith  printf(u8R"foo(
24df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith      \u1234\U0010fffe
25df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith      %d)foo" // expected-warning {{more '%' conversions than data arguments}}
26df9ef1bc8c3780307ab2ed81bf5e31c23310b936Richard Smith  );
275294c792c715b8dba26711be482b7a32be04d4d5Hans Wennborg}
28