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