annotate gcc/testsuite/g++.dg/warn/Wparentheses-23.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do compile }
kono
parents:
diff changeset
2 // { dg-options "-Wparentheses" }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 // Template version of Wparentheses-22.C.
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 int foo (int);
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 class C
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 public:
kono
parents:
diff changeset
11 C()
kono
parents:
diff changeset
12 : b(0)
kono
parents:
diff changeset
13 { }
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 // Use default assignment constructor.
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 // Provide conversion to bool so that an instance of this class will
kono
parents:
diff changeset
18 // work as a condition.
kono
parents:
diff changeset
19 operator bool() const
kono
parents:
diff changeset
20 { return b != 0; }
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 private:
kono
parents:
diff changeset
23 int b;
kono
parents:
diff changeset
24 };
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 C a, b, c;
kono
parents:
diff changeset
27 bool d;
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 template<class T>
kono
parents:
diff changeset
30 void
kono
parents:
diff changeset
31 bar (T)
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 if (a = b) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
34 foo (0);
kono
parents:
diff changeset
35 if ((a = b))
kono
parents:
diff changeset
36 foo (1);
kono
parents:
diff changeset
37 if (a = a) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
38 foo (2);
kono
parents:
diff changeset
39 if ((a = a))
kono
parents:
diff changeset
40 foo (3);
kono
parents:
diff changeset
41 if (b = c) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
42 foo (4);
kono
parents:
diff changeset
43 else
kono
parents:
diff changeset
44 foo (5);
kono
parents:
diff changeset
45 if ((b = c))
kono
parents:
diff changeset
46 foo (6);
kono
parents:
diff changeset
47 else
kono
parents:
diff changeset
48 foo (7);
kono
parents:
diff changeset
49 if (b = b) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
50 foo (8);
kono
parents:
diff changeset
51 else
kono
parents:
diff changeset
52 foo (9);
kono
parents:
diff changeset
53 if ((b = b))
kono
parents:
diff changeset
54 foo (10);
kono
parents:
diff changeset
55 else
kono
parents:
diff changeset
56 foo (11);
kono
parents:
diff changeset
57 while (c = b) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
58 foo (12);
kono
parents:
diff changeset
59 while ((c = b))
kono
parents:
diff changeset
60 foo (13);
kono
parents:
diff changeset
61 while (c = c) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
62 foo (14);
kono
parents:
diff changeset
63 while ((c = c))
kono
parents:
diff changeset
64 foo (15);
kono
parents:
diff changeset
65 do foo (16); while (a = b); // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
66 do foo (17); while ((a = b));
kono
parents:
diff changeset
67 do foo (18); while (a = a); // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
68 do foo (19); while ((a = a));
kono
parents:
diff changeset
69 for (;c = b;) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
70 foo (20);
kono
parents:
diff changeset
71 for (;(c = b);)
kono
parents:
diff changeset
72 foo (21);
kono
parents:
diff changeset
73 for (;c = c;) // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
74 foo (22);
kono
parents:
diff changeset
75 for (;(c = c);)
kono
parents:
diff changeset
76 foo (23);
kono
parents:
diff changeset
77 d = a = b; // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
78 foo (24);
kono
parents:
diff changeset
79 d = (a = b);
kono
parents:
diff changeset
80 foo (25);
kono
parents:
diff changeset
81 d = a = a; // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
82 foo (26);
kono
parents:
diff changeset
83 d = (a = a);
kono
parents:
diff changeset
84 foo (27);
kono
parents:
diff changeset
85 if (C(a))
kono
parents:
diff changeset
86 foo (28);
kono
parents:
diff changeset
87 }
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 template<class T>
kono
parents:
diff changeset
90 bool
kono
parents:
diff changeset
91 bar1 (T)
kono
parents:
diff changeset
92 {
kono
parents:
diff changeset
93 return a = b; // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
94 }
kono
parents:
diff changeset
95
kono
parents:
diff changeset
96 template<class T>
kono
parents:
diff changeset
97 bool
kono
parents:
diff changeset
98 bar2 (T)
kono
parents:
diff changeset
99 {
kono
parents:
diff changeset
100 return (a = b);
kono
parents:
diff changeset
101 }
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 template<class T>
kono
parents:
diff changeset
104 bool
kono
parents:
diff changeset
105 bar3 (T)
kono
parents:
diff changeset
106 {
kono
parents:
diff changeset
107 return a = a; // { dg-warning "assignment" "correct warning" }
kono
parents:
diff changeset
108 }
kono
parents:
diff changeset
109
kono
parents:
diff changeset
110 template<class T>
kono
parents:
diff changeset
111 bool
kono
parents:
diff changeset
112 bar4 (T)
kono
parents:
diff changeset
113 {
kono
parents:
diff changeset
114 return (a = a);
kono
parents:
diff changeset
115 }
kono
parents:
diff changeset
116
kono
parents:
diff changeset
117 template void bar<int> (int); // { dg-message "required" }
kono
parents:
diff changeset
118 template bool bar1<int> (int); // { dg-message "required" }
kono
parents:
diff changeset
119 template bool bar2<int> (int);
kono
parents:
diff changeset
120 template bool bar3<int> (int); // { dg-message "required" }
kono
parents:
diff changeset
121 template bool bar4<int> (int);