[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