[clang] [Clang] Unify interface for accessing template arguments as written for class/variable template specializations (PR #81642)
Chuanqi Xu via cfe-commits
cfe-commits at lists.llvm.org
Sun Feb 18 00:15:14 PST 2024
================
@@ -1792,23 +1807,11 @@ class ClassTemplateSpecializationDecl
llvm::PointerUnion<ClassTemplateDecl *, SpecializedPartialSpecialization *>
SpecializedTemplate;
- /// Further info for explicit template specialization/instantiation.
- struct ExplicitSpecializationInfo {
- /// The type-as-written.
- TypeSourceInfo *TypeAsWritten = nullptr;
-
- /// The location of the extern keyword.
- SourceLocation ExternLoc;
-
- /// The location of the template keyword.
- SourceLocation TemplateKeywordLoc;
-
- ExplicitSpecializationInfo() = default;
- };
-
/// Further info for explicit template specialization/instantiation.
/// Does not apply to implicit specializations.
- ExplicitSpecializationInfo *ExplicitInfo = nullptr;
+ llvm::PointerUnion<const ASTTemplateArgumentListInfo *,
+ ExplicitInstantiationInfo *>
+ ExplicitInfo = nullptr;
----------------
ChuanqiXu9 wrote:
I spent some time to understand `const ASTTemplateArgumentListInfo *` is only meaningful for partial specializations. Can we reuse ExplicitInstantiationInfo::TemplateArgsAsWrittenTemplateArgsAsWritten? And make `ExplicitInstantiationInfo` to `InstantiationInfo` so that we can use it generally?
https://github.com/llvm/llvm-project/pull/81642
More information about the cfe-commits
mailing list