[clang] [clang-tools-extra] [Clang][AST] Introduce `ExplicitInstantiationDecl` to preserve source info and fix diagnostic locations (PR #191658)

Younan Zhang via cfe-commits cfe-commits at lists.llvm.org
Sat Apr 11 20:04:33 PDT 2026


================
@@ -11005,10 +11051,20 @@ DeclResult Sema::ActOnExplicitInstantiation(Scope *S,
                                                HasNoEffect))
       return true;
 
-    // FIXME: We may still want to build some representation of this
-    // explicit specialization.
-    if (HasNoEffect)
-      return (Decl*) nullptr;
+    if (HasNoEffect) {
+      const ASTTemplateArgumentListInfo *ArgsAsWritten = nullptr;
+      if (HasExplicitTemplateArgs)
+        ArgsAsWritten =
+            ASTTemplateArgumentListInfo::Create(Context, TemplateArgs);
+      addExplicitInstantiationDecl(Context, CurContext, D.getCXXScopeSpec(),
+                                   Specialization, ExternLoc, TemplateLoc,
+                                   SourceLocation(), ArgsAsWritten,
+                                   D.getIdentifierLoc(), T, TSK);
+      // Don't return the EID to the Parser — doing so would trigger
+      // unrelated semantic actions (e.g. access checks via
+      // FinalizeDeclaration).
+      return (Decl *)nullptr;
----------------
zyn0217 wrote:

ditto

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


More information about the cfe-commits mailing list