[clang] Reapply "[Clang][Sema] Diagnose function/variable templates that shadow their own template parameters (#78274)" (PR #79683)

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 15 08:30:57 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) {
----------------
AaronBallman wrote:

The javadocs don't help too much because they're in the source file rather than attached to the declaration (so they don't show up in all IDEs, like Visual Studio). We should move them to the header file.

I would recommend we change the logic slightly and name the parameter `SupportedAsExtension`. Then the diagnostic selection becomes `SupportedAsExtension ? (MSVC ? msvc_ext_diag : generic_ext_diag) : err_diag` and it's easier for the caller to reason about whether this shadowing should be supported as an extension or not in any given case.

WDYT?

https://github.com/llvm/llvm-project/pull/79683


More information about the cfe-commits mailing list