diff options
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 11 | ||||
-rw-r--r-- | test/FixIt/no-macro-fixit.c | 3 |
2 files changed, 7 insertions, 7 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 3d2b14933e..ac1128b361 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -10081,12 +10081,11 @@ void Sema::DiagnoseAssignmentAsCondition(Expr *E) { SourceLocation Open = E->getSourceRange().getBegin(); SourceLocation Close = E->getSourceRange().getEnd(); - if (!Open.isMacroID() && !Close.isMacroID()) { - SourceLocation LocForEndOfToken = PP.getLocForEndOfToken(Close); - Diag(Loc, diag::note_condition_assign_silence) - << FixItHint::CreateInsertion(Open, "(") - << FixItHint::CreateInsertion(LocForEndOfToken, ")"); - } + SourceLocation LocForEndOfToken = + Close.isMacroID() ? Close : PP.getLocForEndOfToken(Close); + Diag(Loc, diag::note_condition_assign_silence) + << FixItHint::CreateInsertion(Open, "(") + << FixItHint::CreateInsertion(LocForEndOfToken, ")"); } /// \brief Redundant parentheses over an equality comparison can indicate diff --git a/test/FixIt/no-macro-fixit.c b/test/FixIt/no-macro-fixit.c index 3685ab1087..b6a9285e22 100644 --- a/test/FixIt/no-macro-fixit.c +++ b/test/FixIt/no-macro-fixit.c @@ -10,6 +10,7 @@ void myFunc() { int value; while (value = va_arg(values, int)) { // expected-warning {{using the result of an assignment as a condition without parentheses}} \ - // expected-note {{use '==' to turn this assignment into an equality comparison}} + // expected-note {{use '==' to turn this assignment into an equality comparison}} \ + // expected-note {{place parentheses around the assignment to silence this warning}} } } |