[clang] Reapply "[Clang][Sema] Diagnose function/variable templates that shadow their own template parameters (#78274)" (PR #79683)
Krystian Stasiowski via cfe-commits
cfe-commits at lists.llvm.org
Sat Jan 27 04:56:42 PST 2024
================
@@ -885,16 +885,19 @@ bool Sema::DiagnoseUninstantiableTemplate(SourceLocation PointOfInstantiation,
/// that the template parameter 'PrevDecl' is being shadowed by a new
/// declaration at location Loc. Returns true to indicate that this is
/// an error, and false otherwise.
-void Sema::DiagnoseTemplateParameterShadow(SourceLocation Loc, Decl *PrevDecl) {
+void Sema::DiagnoseTemplateParameterShadow(SourceLocation Loc, Decl *PrevDecl,
+ bool IssueWarning) {
----------------
sdkrystian wrote:
I think the more generic `IssueWarning` is less ambiguous. We only issue the warning for variable/function templates the shadow _their own_ template parameters. For example:
```cpp
template<typename T>
struct A
{
template<typename U> void U(); // warning
template<typename U> void T(); // error
void T(); // error
};
```
`ShadowsFunctionOrVariableName` establishes the expectation that its value will be `true` for all the above function declarations (its only `true` for the first one).
https://github.com/llvm/llvm-project/pull/79683
More information about the cfe-commits
mailing list