mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 09:46:07 +00:00

ExtWarn/Warnings. Mostly the name of the warning was changed to match the semantics, but in the PR20356 cases, the warning was about valid code, so the diagnostic was changed from ExtWarn to Warning instead. llvm-svn: 213443
31 lines
1.4 KiB
C
31 lines
1.4 KiB
C
/* RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 -Wformat-non-iso -std=c89 %s
|
|
*/
|
|
|
|
int scanf(const char * restrict, ...);
|
|
int printf(const char *restrict, ...);
|
|
|
|
void foo(char **sp, float *fp, int *ip) {
|
|
scanf("%as", sp); /* expected-warning{{'a' length modifier is not supported by ISO C}} */
|
|
scanf("%a[abc]", sp); /* expected-warning{{'a' length modifier is not supported by ISO C}} */
|
|
|
|
/* TODO: Warn that the 'a' conversion specifier is a C99 feature. */
|
|
scanf("%a", fp);
|
|
scanf("%afoobar", fp);
|
|
printf("%a", 1.0);
|
|
printf("%as", 1.0);
|
|
printf("%aS", 1.0);
|
|
printf("%a[", 1.0);
|
|
printf("%afoo", 1.0);
|
|
|
|
scanf("%da", ip);
|
|
|
|
/* Test argument type check for the 'a' length modifier. */
|
|
scanf("%as", fp); /* expected-warning{{format specifies type 'char **' but the argument has type 'float *'}}
|
|
expected-warning{{'a' length modifier is not supported by ISO C}} */
|
|
scanf("%aS", fp); /* expected-warning{{format specifies type 'wchar_t **' (aka 'int **') but the argument has type 'float *'}}
|
|
expected-warning{{'a' length modifier is not supported by ISO C}}
|
|
expected-warning{{'S' conversion specifier is not supported by ISO C}} */
|
|
scanf("%a[abc]", fp); /* expected-warning{{format specifies type 'char **' but the argument has type 'float *'}}
|
|
expected-warning{{'a' length modifier is not supported by ISO C}} */
|
|
}
|