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) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits