https://github.com/AmrDeveloper created https://github.com/llvm/llvm-project/pull/129116
Fix structured binding shadows template parameter location Fixes: #129060 >From ed0cf3f026e439288f8334f27555ad26825fd56a Mon Sep 17 00:00:00 2001 From: AmrDeveloper <am...@programmer.net> Date: Thu, 27 Feb 2025 21:49:32 +0100 Subject: [PATCH] [Clang][diagnostics] Fix structured binding shadows template parameter location --- clang/lib/Sema/SemaDeclCXX.cpp | 3 +-- clang/test/CXX/temp/temp.res/temp.local/p6.cpp | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 664d48ccbc382..a3a028b9485d6 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -883,8 +883,7 @@ Sema::ActOnDecompositionDeclarator(Scope *S, Declarator &D, // It's not permitted to shadow a template parameter name. if (Previous.isSingleResult() && Previous.getFoundDecl()->isTemplateParameter()) { - DiagnoseTemplateParameterShadow(D.getIdentifierLoc(), - Previous.getFoundDecl()); + DiagnoseTemplateParameterShadow(B.NameLoc, Previous.getFoundDecl()); Previous.clear(); } diff --git a/clang/test/CXX/temp/temp.res/temp.local/p6.cpp b/clang/test/CXX/temp/temp.res/temp.local/p6.cpp index 00bb35813c39a..e464bb5e7eaef 100644 --- a/clang/test/CXX/temp/temp.res/temp.local/p6.cpp +++ b/clang/test/CXX/temp/temp.res/temp.local/p6.cpp @@ -162,3 +162,8 @@ struct A { }; A<0>::B a; } + +template <typename T> void shadow9() { // expected-note{{template parameter is declared here}} + using arr = int[1]; // expected-warning@+1 {{decomposition declarations are a C++17 extension}} + auto [T] = arr{}; // expected-error {{declaration of 'T' shadows template parameter}} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits