| // RUN: %clang_cc1 -verify -fsyntax-only -Wstring-conversion %s |
| |
| void do_nothing(); |
| void assert_error(); |
| |
| #define assert1(expr) \ |
| if (expr) \ |
| do_nothing(); \ |
| else \ |
| assert_error() |
| |
| #define assert2(expr) \ |
| ((expr) ? do_nothing() : assert_error()) |
| |
| // Exception for common assert form. |
| void test1() { |
| assert1(0 && "foo"); |
| assert1("foo" && 0); |
| assert1(0 || "foo"); // expected-warning {{string literal}} |
| assert1("foo"); // expected-warning {{string literal}} |
| |
| assert2(0 && "foo"); |
| assert2("foo" && 0); |
| assert2(0 || "foo"); // expected-warning {{string literal}} |
| assert2("foo"); // expected-warning {{string literal}} |
| } |
| |
| void test2() { |
| if ("hi") {} // expected-warning {{string literal}} |
| while ("hello") {} // expected-warning {{string literal}} |
| for (;"howdy";) {} // expected-warning {{string literal}} |
| do { } while ("hey"); // expected-warning {{string literal}} |
| int x = "hey" ? 1 : 2; // expected-warning {{string literal}} |
| } |