[clang] [Clang][diagnostics] Fix structured binding shadows template param loc (PR #129116)
Amr Hesham via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 27 12:52:37 PST 2025
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 <amr96 at 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 at +1 {{decomposition declarations are a C++17 extension}}
+ auto [T] = arr{}; // expected-error {{declaration of 'T' shadows template parameter}}
+}
More information about the cfe-commits
mailing list