[PATCH] D47687: [Sema] Missing -Wlogical-op-parentheses warnings in macros (PR18971)
Xing via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 17 21:17:44 PDT 2018
Higuoxing added inline comments.
================
Comment at: test/Sema/parentheses.c:114
+ NON_NESTING_VOID_0(i && i || i); // expected-warning {{'&&' within '||'}} \
+ // expected-note {{place parentheses around the '&&' expression to silence this warning}}
+ NON_NESTING_VOID_0((i && i) || i); // no warning.
----------------
Higuoxing wrote:
> dexonsmith wrote:
> > Can you add fix-it CHECKs?
> ```
> llvm/tools/clang/test/Sema/parentheses.c:109:15: note: place parentheses around the '&&' expression to silence this warning
> VOID_CAST(i && i || i); // expected-warning {{'&&' within '||'}} \
> ~~^~~~
> llvm/tools/clang/test/Sema/parentheses.c:17:34: note: expanded from macro 'VOID_CAST'
> #define VOID_CAST(cond) ( (void)(cond) )
> ^~~~
> ```
>
> Sorry, it seems that when deal with expressions in macros, there is no fix-it hint ...
The `suggestParentheses` suppress the fix-it hint when the expression is in macros
```
if (ParenRange.getBegin().isFileID() && ParenRange.getEnd().isFileID() &&
EndLoc.isValid()) {
Self.Diag(Loc, Note)
<< FixItHint::CreateInsertion(ParenRange.getBegin(), "(")
<< FixItHint::CreateInsertion(EndLoc, ")");
} else {
// We can't display the parentheses, so just show the bare note.
Self.Diag(Loc, Note) << ParenRange;
}
```
You see, there is a `isFileID()`
https://reviews.llvm.org/D47687
More information about the cfe-commits
mailing list