format-strings-fixit.c revision 45f9b7e8f23072d662ee1cc758f4ecb0da5e3322
1// RUN: cp %s %t 2// RUN: %clang_cc1 -pedantic -Wall -fixit %t || true 3// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror %t 4 5/* This is a test of the various code modification hints that are 6 provided as part of warning or extension diagnostics. All of the 7 warnings will be fixed by -fixit, and the resulting file should 8 compile cleanly with -Werror -pedantic. */ 9 10int printf(char const *, ...); 11 12void test() { 13 // Basic types 14 printf("%s", (int) 123); 15 printf("abc%0f", "testing testing 123"); 16 printf("%u", (long) -12); 17 printf("%p", 123); 18 printf("%c\n", "x"); 19 printf("%c\n", 1.23); 20 21 // Larger types 22 printf("%+.2d", (unsigned long long) 123456); 23 printf("%1d", (long double) 1.23); 24 25 // Flag handling 26 printf("%0+s", (unsigned) 31337); // 0 flag should stay 27 printf("%#p", (void *) 0); 28 printf("% +f", 1.23); // + flag should stay 29 printf("%0-f", 1.23); // - flag should stay 30 31 // Positional arguments 32 printf("%1$f:%2$.*3$f:%4$.*3$f\n", 1, 2, 3, 4); 33 34 // Precision 35 printf("%10.5d", 1l); // (bug 7394) 36 printf("%.2c", 'a'); 37 38 // Ignored flags 39 printf("%0-f", 1.23); 40 41 // Bad length modifiers 42 printf("%hhs", "foo"); 43 printf("%1$zp", (void *)0); 44} 45