[clang] [Clang][diagnostics] Improve the diagnostics for chained comparisons (PR #129285)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 28 11:12:03 PST 2025


================
@@ -85,7 +85,7 @@ void f(int x, int y, int z) {
   if ((a<y) != -1) {}// expected-warning {{comparison of constant -1 with boolean expression is always true}}
 
   if ((a<y) == z) {} // no warning
-  if (a>y<z)      {} // expected-error {{comparisons like 'X<=Y<=Z' don't have their mathematical meaning}}
+  if (a>y<z)      {} // expected-error {{comparisons like 'a > y < z' don't have their mathematical meaning}}
----------------
erichkeane wrote:

I don't like the one with the actual expression in it, as that is going to get arbitrarily large.  That said, I DO wonder if there is value in using the actual operators instead of just `<=` for both sides (so not printing the expression, just the operators, and still `X`, `Y`, `Z`).  That would require keeping `like` though.

https://github.com/llvm/llvm-project/pull/129285


More information about the cfe-commits mailing list