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