xref: /aosp_15_r20/external/clang/test/SemaCXX/warn-implicit-conversion-floating-point-to-bool.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -verify -fsyntax-only %s
2*67e74705SXin Li 
3*67e74705SXin Li float foof(float x);
4*67e74705SXin Li double food(double x);
5*67e74705SXin Li void foo(bool b, float f);
6*67e74705SXin Li 
bar()7*67e74705SXin Li void bar() {
8*67e74705SXin Li 
9*67e74705SXin Li   float c = 1.7;
10*67e74705SXin Li   bool b = c;
11*67e74705SXin Li 
12*67e74705SXin Li   double e = 1.7;
13*67e74705SXin Li   b = e;
14*67e74705SXin Li 
15*67e74705SXin Li   b = foof(4.0);
16*67e74705SXin Li 
17*67e74705SXin Li   b = foof(c < 1); // expected-warning {{implicit conversion turns floating-point number into bool: 'float' to 'bool'}}
18*67e74705SXin Li 
19*67e74705SXin Li   b = food(e < 2); // expected-warning {{implicit conversion turns floating-point number into bool: 'double' to 'bool'}}
20*67e74705SXin Li 
21*67e74705SXin Li   foo(c, b);    // expected-warning {{implicit conversion turns floating-point number into bool: 'float' to 'bool'}}
22*67e74705SXin Li   foo(c, c);
23*67e74705SXin Li 
24*67e74705SXin Li }
25