warn-string-conversion.c 1011 B

12345678910111213141516171819202122232425262728293031323334
  1. // RUN: %clang_cc1 -verify -fsyntax-only -Wstring-conversion %s
  2. void do_nothing();
  3. void assert_error();
  4. #define assert1(expr) \
  5. if (expr) \
  6. do_nothing(); \
  7. else \
  8. assert_error()
  9. #define assert2(expr) \
  10. ((expr) ? do_nothing() : assert_error())
  11. // Expection for common assert form.
  12. void test1() {
  13. assert1(0 && "foo");
  14. assert1("foo" && 0);
  15. assert1(0 || "foo"); // expected-warning {{string literal}}
  16. assert1("foo"); // expected-warning {{string literal}}
  17. assert2(0 && "foo");
  18. assert2("foo" && 0);
  19. assert2(0 || "foo"); // expected-warning {{string literal}}
  20. assert2("foo"); // expected-warning {{string literal}}
  21. }
  22. void test2() {
  23. if ("hi") {} // expected-warning {{string literal}}
  24. while ("hello") {} // expected-warning {{string literal}}
  25. for (;"howdy";) {} // expected-warning {{string literal}}
  26. do { } while ("hey"); // expected-warning {{string literal}}
  27. int x = "hey" ? 1 : 2; // expected-warning {{string literal}}
  28. }