1 // RUN: cp %s %t 2 // RUN: %clang_cc1 -fsyntax-only -fixit %t 3 // RUN: %clang_cc1 -E -o - %t | FileCheck %s 4 5 /* This is a test of the various code modification hints that are 6 provided as part of warning or extension diagnostics. Only 7 warnings for format strings within the function call will be 8 fixed by -fixit. Other format strings will be left alone. */ 9 10 int printf(char const *, ...); 11 int scanf(char const *, ...); 12 13 void pr9751() { 14 const char kFormat1[] = "%s"; 15 printf(kFormat1, 5); 16 printf("%s", 5); 17 18 const char kFormat2[] = "%.3p"; 19 void *p; 20 printf(kFormat2, p); 21 printf("%.3p", p); 22 23 const char kFormat3[] = "%0s"; 24 printf(kFormat3, "a"); 25 printf("%0s", "a"); 26 27 const char kFormat4[] = "%hhs"; 28 printf(kFormat4, "a"); 29 printf("%hhs", "a"); 30 31 const char kFormat5[] = "%-0d"; 32 printf(kFormat5, 5); 33 printf("%-0d", 5); 34 35 const char kFormat6[] = "%00d"; 36 int *i; 37 scanf(kFormat6, i); 38 scanf("%00d", i); 39 } 40 41 // CHECK: const char kFormat1[] = "%s"; 42 // CHECK: printf(kFormat1, 5); 43 // CHECK: printf("%d", 5); 44 45 // CHECK: const char kFormat2[] = "%.3p"; 46 // CHECK: void *p; 47 // CHECK: printf(kFormat2, p); 48 // CHECK: printf("%p", p); 49 50 // CHECK: const char kFormat3[] = "%0s"; 51 // CHECK: printf(kFormat3, "a"); 52 // CHECK: printf("%s", "a"); 53 54 // CHECK: const char kFormat4[] = "%hhs"; 55 // CHECK: printf(kFormat4, "a"); 56 // CHECK: printf("%s", "a"); 57 58 // CHECK: const char kFormat5[] = "%-0d"; 59 // CHECK: printf(kFormat5, 5); 60 // CHECK: printf("%-d", 5); 61 62 // CHECK: const char kFormat6[] = "%00d"; 63 // CHECK: int *i; 64 // CHECK: scanf(kFormat6, i); 65 // CHECK: scanf("%d", i); 66