|  | // 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); |