diff options
Diffstat (limited to 'clang/test/Sema/format-strings-no-fixit.c')
-rw-r--r-- | clang/test/Sema/format-strings-no-fixit.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/clang/test/Sema/format-strings-no-fixit.c b/clang/test/Sema/format-strings-no-fixit.c new file mode 100644 index 0000000..701e945 --- /dev/null +++ b/clang/test/Sema/format-strings-no-fixit.c @@ -0,0 +1,65 @@ +// RUN: cp %s %t +// RUN: %clang_cc1 -fsyntax-only -fixit %t +// RUN: %clang_cc1 -E -o - %t | FileCheck %s + +/* This is a test of the various code modification hints that are + provided as part of warning or extension diagnostics. Only + warnings for format strings within the function call will be + fixed by -fixit. Other format strings will be left alone. */ + +int printf(char const *, ...); +int scanf(char const *, ...); + +void pr9751() { + const char kFormat1[] = "%s"; + printf(kFormat1, 5); + printf("%s", 5); + + const char kFormat2[] = "%.3p"; + void *p; + printf(kFormat2, p); + printf("%.3p", p); + + const char kFormat3[] = "%0s"; + printf(kFormat3, "a"); + printf("%0s", "a"); + + const char kFormat4[] = "%hhs"; + printf(kFormat4, "a"); + printf("%hhs", "a"); + + const char kFormat5[] = "%-0d"; + printf(kFormat5, 5); + printf("%-0d", 5); + + const char kFormat6[] = "%00d"; + int *i; + scanf(kFormat6, i); + scanf("%00d", i); +} + +// CHECK: const char kFormat1[] = "%s"; +// CHECK: printf(kFormat1, 5); +// CHECK: printf("%d", 5); + +// CHECK: const char kFormat2[] = "%.3p"; +// CHECK: void *p; +// CHECK: printf(kFormat2, p); +// CHECK: printf("%p", p); + +// CHECK: const char kFormat3[] = "%0s"; +// CHECK: printf(kFormat3, "a"); +// CHECK: printf("%s", "a"); + +// CHECK: const char kFormat4[] = "%hhs"; +// CHECK: printf(kFormat4, "a"); +// CHECK: printf("%s", "a"); + +// CHECK: const char kFormat5[] = "%-0d"; +// CHECK: printf(kFormat5, 5); +// CHECK: printf("%-d", 5); + +// CHECK: const char kFormat6[] = "%00d"; +// CHECK: int *i; +// CHECK: scanf(kFormat6, i); +// CHECK: scanf("%d", i); |