[PATCH] D148712: [clang] Diagnose shadowing of lambda's template parameter by a capture
Mariya Podchishchaeva via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 20 02:12:56 PDT 2023
Fznamznon marked 2 inline comments as done.
Fznamznon added inline comments.
================
Comment at: clang/lib/Sema/SemaLambda.cpp:1381
+ if (Capture.Id == TP->getIdentifier()) {
+ Diag(Capture.Loc, diag::err_template_param_shadow) << Capture.Id;
+ Diag(TP->getLocation(), diag::note_template_param_here);
----------------
shafik wrote:
> It is really a shame that this is just different enough that we can't turn `CheckRedefinition` into a generic lambda and reuse it here. The code duplication is very unfortunate.
What I could do here is modify `err_parameter_shadow_capture` message so it says either `a lambda parameter cannot shadow an explicitly captured entity` or `a lambda template parameter cannot shadow an explicitly captured entity` and make `CheckRedefinition` accept a `NamedDecl` and a flag whether we're diagnosing a template parameter. Then `CheckRedefinition` can be reused, resolving the concerns about code duplication and the fact that explicit capture comes before the template parameter. That would probably be inconsistent with how the templates are diagnosed now though. WDYT?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D148712/new/
https://reviews.llvm.org/D148712
More information about the cfe-commits
mailing list