| Issue |
184672
|
| Summary |
[clang] warn on operator in macro expansion whose operand doesn't lie entirely within the same macro expansion
|
| Labels |
good first issue,
clang:diagnostics
|
| Assignees |
|
| Reporter |
zygoloid
|
Testcase:
```c++
#define FOO 2+3
// 2+(3*4) == 14, not (2+3)*4 == 20
int n = FOO*4;
```
Clang doesn't warn on this, but I think it should. In general, I think a good heuristic would be: if the location of an operator is within a macro expansion, and an operand of that operator is not entirely within that same macro expansion, then warn. In this case, the `+` operator within `FOO` has an operand that extends to the `4` token, so we should warn.
This seems like something we could quickly and easily check for with our existing source location representation.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs