diff options
author | Hans Wennborg <hans@hanshq.net> | 2012-02-22 10:17:01 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2012-02-22 10:17:01 +0000 |
commit | c9dd94685283938a2d9227a0fa448f08d7b19ab4 (patch) | |
tree | 47b9bd818b08934e2c6acf387bcb84522b0ca6f0 /clang/test/Sema/format-strings-c90.c | |
parent | 8eb771d4ca343ae6baf884c9d9a77e09469052bb (diff) | |
download | bcm5719-llvm-c9dd94685283938a2d9227a0fa448f08d7b19ab4.tar.gz bcm5719-llvm-c9dd94685283938a2d9227a0fa448f08d7b19ab4.zip |
Warn about non-standard format strings (pr12017)
This adds the -Wformat-non-standard flag (off by default,
enabled by -pedantic), which warns about non-standard
things in format strings (such as the 'q' length modifier,
the 'S' conversion specifier, etc.)
llvm-svn: 151154
Diffstat (limited to 'clang/test/Sema/format-strings-c90.c')
-rw-r--r-- | clang/test/Sema/format-strings-c90.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/clang/test/Sema/format-strings-c90.c b/clang/test/Sema/format-strings-c90.c index 0b32e82d872..63d58532cb8 100644 --- a/clang/test/Sema/format-strings-c90.c +++ b/clang/test/Sema/format-strings-c90.c @@ -5,9 +5,8 @@ int scanf(const char * restrict, ...); int printf(const char *restrict, ...); void foo(char **sp, float *fp, int *ip) { - /* TODO: Warn that the 'a' length modifier is an extension. */ - scanf("%as", sp); - scanf("%a[abc]", sp); + scanf("%as", sp); /* expected-warning{{'a' is a non-standard length modifier}} */ + scanf("%a[abc]", sp); /* expected-warning{{'a' is a non-standard length modifier}} */ /* TODO: Warn that the 'a' conversion specifier is a C99 feature. */ scanf("%a", fp); @@ -21,7 +20,11 @@ void foo(char **sp, float *fp, int *ip) { 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 *'}} */ - scanf("%aS", fp); /* expected-warning{{format specifies type 'wchar_t **' (aka 'int **') but the argument has type 'float *'}} */ - scanf("%a[abc]", fp); /* expected-warning{{format specifies type 'char **' but the argument has type 'float *'}} */ + scanf("%as", fp); /* expected-warning{{format specifies type 'char **' but the argument has type 'float *'}} + expected-warning{{'a' is a non-standard length modifier}} */ + scanf("%aS", fp); /* expected-warning{{format specifies type 'wchar_t **' (aka 'int **') but the argument has type 'float *'}} + expected-warning{{'a' is a non-standard length modifier}} + expected-warning{{'S' is a non-standard conversion specifier}} */ + scanf("%a[abc]", fp); /* expected-warning{{format specifies type 'char **' but the argument has type 'float *'}} + expected-warning{{'a' is a non-standard length modifier}} */ } |