]> granicus.if.org Git - clang/commit
Add a new warning, -Wlogical-not-parentheses, to -Wparentheses.
authorRichard Trieu <rtrieu@google.com>
Mon, 10 Jun 2013 18:52:07 +0000 (18:52 +0000)
committerRichard Trieu <rtrieu@google.com>
Mon, 10 Jun 2013 18:52:07 +0000 (18:52 +0000)
commitef0e4e6eda13c2dcd6d4d43f1750d1d73202d16a
treee63054b6e6642e5f050916e2583541cf112430ac
parent57e68474b1879ca06360adc6eaf8d547ab0dd157
Add a new warning, -Wlogical-not-parentheses, to -Wparentheses.

This warning triggers on the logical not of a non-boolean expression on the
left hand side of comparison.  Often, the user meant to negate the comparison,
not just the left hand side of the comparison.  Two notes are also emitted,
the first with a fix-it to add parentheses around the comparison, and the other
to put parenthesis around the not expression to silence the warning.

bool not_equal(int x, int y) {
  return !x == y;  // warn here
}

  return !(x == y);  // first fix-it, to negate comparison.

  return (!x) == y;  // second fix-it, to silence warning.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183688 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaExpr.cpp
test/SemaCXX/warn-logical-not-compare.cpp [new file with mode: 0644]