[clang] 98afcba - [clang][AST][NFC] Expose clang::isSubstitutedDefaultArgument to clang/AST consumers
Michael Buch via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 16 03:39:10 PST 2022
Author: Michael Buch
Date: 2022-12-16T11:38:50Z
New Revision: 98afcbab66505661045dccb85ee9acdbf9410047
URL: https://github.com/llvm/llvm-project/commit/98afcbab66505661045dccb85ee9acdbf9410047
DIFF: https://github.com/llvm/llvm-project/commit/98afcbab66505661045dccb85ee9acdbf9410047.diff
LOG: [clang][AST][NFC] Expose clang::isSubstitutedDefaultArgument to clang/AST consumers
**Summary**
A use-case has come up in DWARF CodeGen where we want to determine
whether a particular template argument matches the default template
parameter declaration.
Re-using this TypePrinter component there allows us to avoid duplicating
most of this code and immediately allows us to cover a wider range
of use-cases than the DWARF CodeGen does today.
Added:
Modified:
clang/include/clang/AST/Type.h
clang/lib/AST/TypePrinter.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h
index 70f2132e0456..54896e737893 100644
--- a/clang/include/clang/AST/Type.h
+++ b/clang/include/clang/AST/Type.h
@@ -5462,6 +5462,13 @@ void printTemplateArgumentList(raw_ostream &OS,
const PrintingPolicy &Policy,
const TemplateParameterList *TPL = nullptr);
+/// Make a best-effort determination of whether the type T can be produced by
+/// substituting Args into the default argument of Param.
+bool isSubstitutedDefaultArgument(ASTContext &Ctx, TemplateArgument Arg,
+ const NamedDecl *Param,
+ ArrayRef<TemplateArgument> Args,
+ unsigned Depth);
+
/// The injected class name of a C++ class template or class
/// template partial specialization. Used to record that a type was
/// spelled with a bare identifier rather than as a template-id; the
diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp
index 5353243b8a0c..bfab41b7e4de 100644
--- a/clang/lib/AST/TypePrinter.cpp
+++ b/clang/lib/AST/TypePrinter.cpp
@@ -2044,9 +2044,7 @@ static bool isSubstitutedTemplateArgument(ASTContext &Ctx, TemplateArgument Arg,
return false;
}
-/// Make a best-effort determination of whether the type T can be produced by
-/// substituting Args into the default argument of Param.
-static bool isSubstitutedDefaultArgument(ASTContext &Ctx, TemplateArgument Arg,
+bool clang::isSubstitutedDefaultArgument(ASTContext &Ctx, TemplateArgument Arg,
const NamedDecl *Param,
ArrayRef<TemplateArgument> Args,
unsigned Depth) {
More information about the cfe-commits
mailing list