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