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