[PATCH] D107292: [clang] adds warning to alert user when they use alternative tokens as references

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 3 04:09:25 PDT 2021


aaron.ballman added a comment.

In D107292#2920637 <https://reviews.llvm.org/D107292#2920637>, @dblaikie wrote:

> Not a huge objection - but minor quandry: What's the motivation for this patch? I don't know of any codebase that encourages/uses the alternative tokens and I wonder if adding more usability to them is a worthwhile investment in clang's codebase complexity, etc.

To me, the motivation comes from a signature like: `void foo(int and);` because it looks reasonable until you realize in C++ it means `void foo(int &&);` rather than declaring a parameter name of type `int`. What's worse, it can come up naturally in header files because it's a valid declaration in C if iso646.h is not included. So it's plausible to write the signature in a library exposing a C interface that changes the function signature when compiled in C++ -- this warning helps alert the programmer to such a situation.

I'm not aware of any popular coding guidelines that suggest using alternative tokens, but their use does show up in the wild.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D107292/new/

https://reviews.llvm.org/D107292



More information about the cfe-commits mailing list