[PATCH] D127759: [Diagnostic] Clarify -Winfinite-recursion message
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 14 10:51:18 PDT 2022
aaron.ballman added inline comments.
================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:63
def warn_infinite_recursive_function : Warning<
- "all paths through this function will call itself">,
+ "In order to understand recursion, you must first understand recursion">,
InGroup<InfiniteRecursion>, DefaultIgnore;
----------------
erichkeane wrote:
> aaron.ballman wrote:
> > A few things:
> >
> > * Diagnostics in Clang are not intended to be grammatically correct, so they don't start with a capital letter or end with a trailing full stop (so if this wording was kept, you should use `in order` instead of `In order`).
> > * While this is a cute way to get the point across, we want the diagnostic to help guide the user as to why their code is wrong so they have the best chance to fix the issue.
> >
> > I think the original wording isn't too bad here because it's lexically associated with the function definition itself (so the "this function" is clear in situ), but I do think "will call itself" is a bit awkward. Perhaps "this function is called recursively on all paths through the function", but I don't feel strongly either.
> I like the suggestion by Aaron here, "function %0 is called recursively through all paths through %0" (or the function). Perhaps the double %0 is a touch of a recursion joke as well :)
TBH, I'd probably skip the %0 because the warning is issued on the same line as the function definition itself, so the name should already be obvious to the user.
This diagnostic doesn't currently handle mutually recursive functions, and I kind of worry that adding %0 implies we support that case when we don't.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D127759/new/
https://reviews.llvm.org/D127759
More information about the cfe-commits
mailing list