150
|
1 // RUN: %clang_cc1 -verify -fsyntax-only -Wstring-conversion %s
|
|
2
|
|
3 void do_nothing();
|
|
4 void assert_error();
|
|
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.
|
|
16 void test1() {
|
|
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
|
|
28 void test2() {
|
|
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 }
|