[clang] [clang][Modules] Complete the implementation of P2615: Meaningful exports (PR #194201)

Victor Chernyakin via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 27 23:07:34 PDT 2026


================
@@ -1913,3 +1913,19 @@ SourceRange ExplicitInstantiationDecl::getSourceRange() const {
   SourceLocation Begin = ExternLoc.isValid() ? ExternLoc : getLocation();
   return SourceRange(Begin, getEndLoc());
 }
+
+TemplateSpecializationKind clang::getTemplateSpecializationKind(const Decl *D) {
+  if (!D)
+    return TSK_Undeclared;
+
+  if (const auto *Record = dyn_cast<CXXRecordDecl>(D))
+    return Record->getTemplateSpecializationKind();
+  if (const auto *Function = dyn_cast<FunctionDecl>(D))
+    return Function->getTemplateSpecializationKind();
+  if (const auto *Var = dyn_cast<VarDecl>(D))
+    return Var->getTemplateSpecializationKind();
+  if (const auto *EID = dyn_cast<ExplicitInstantiationDecl>(D))
+    return EID->getTemplateSpecializationKind();
+
+  return TSK_Undeclared;
----------------
localspook wrote:

Agreed, but it's consistent with all the node-specific `getTemplateSpecializationKind` methods.

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


More information about the cfe-commits mailing list