reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // 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}} } |