-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[Clang][Sema] Refactor collection of multi-level template argument lists #106585
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
072be6e
6cb3f61
420b553
bd8156b
a37d796
07d100a
37f1461
f1e1272
623e4ac
3c78bbf
e0bd523
658c6c9
4832287
3c8ce5c
fd186a9
66b0d89
b467dfe
c0af059
a82ccbb
e235dce
af67f88
2b98556
86e9e55
fec5107
6b39e14
9e18656
6073ed4
f94fb03
0a64b37
a9b14fa
ad6e50d
3add30a
29745c7
22e4d64
bd6a615
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11389,9 +11389,9 @@ class Sema final : public SemaBase { | |
CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, | ||
const ParsedAttributesView &Attr, TemplateParameterList *TemplateParams, | ||
AccessSpecifier AS, SourceLocation ModulePrivateLoc, | ||
SourceLocation FriendLoc, unsigned NumOuterTemplateParamLists, | ||
TemplateParameterList **OuterTemplateParamLists, | ||
SkipBodyInfo *SkipBody = nullptr); | ||
SourceLocation FriendLoc, | ||
ArrayRef<TemplateParameterList *> OuterTemplateParamLists, | ||
bool IsMemberSpecialization, SkipBodyInfo *SkipBody = nullptr); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have a preference for using an enum instead of bool params (so that callers do: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I still have a preference for something like this, but otherwise |
||
|
||
/// Translates template arguments as provided by the parser | ||
/// into template arguments used by semantic analysis. | ||
|
@@ -11430,7 +11430,8 @@ class Sema final : public SemaBase { | |
DeclResult ActOnVarTemplateSpecialization( | ||
Scope *S, Declarator &D, TypeSourceInfo *DI, LookupResult &Previous, | ||
SourceLocation TemplateKWLoc, TemplateParameterList *TemplateParams, | ||
StorageClass SC, bool IsPartialSpecialization); | ||
StorageClass SC, bool IsPartialSpecialization, | ||
bool IsMemberSpecialization); | ||
|
||
/// Get the specialization of the given variable template corresponding to | ||
/// the specified argument list, or a null-but-valid result if the arguments | ||
|
@@ -13071,28 +13072,14 @@ class Sema final : public SemaBase { | |
/// dealing with a specialization. This is only relevant for function | ||
/// template specializations. | ||
/// | ||
/// \param Pattern If non-NULL, indicates the pattern from which we will be | ||
/// instantiating the definition of the given declaration, \p ND. This is | ||
/// used to determine the proper set of template instantiation arguments for | ||
/// friend function template specializations. | ||
/// | ||
/// \param ForConstraintInstantiation when collecting arguments, | ||
/// ForConstraintInstantiation indicates we should continue looking when | ||
/// encountering a lambda generic call operator, and continue looking for | ||
/// arguments on an enclosing class template. | ||
/// | ||
/// \param SkipForSpecialization when specified, any template specializations | ||
/// in a traversal would be ignored. | ||
/// \param ForDefaultArgumentSubstitution indicates we should continue looking | ||
/// when encountering a specialized member function template, rather than | ||
/// returning immediately. | ||
MultiLevelTemplateArgumentList getTemplateInstantiationArgs( | ||
const NamedDecl *D, const DeclContext *DC = nullptr, bool Final = false, | ||
std::optional<ArrayRef<TemplateArgument>> Innermost = std::nullopt, | ||
bool RelativeToPrimary = false, const FunctionDecl *Pattern = nullptr, | ||
bool ForConstraintInstantiation = false, | ||
bool SkipForSpecialization = false, | ||
bool ForDefaultArgumentSubstitution = false); | ||
bool RelativeToPrimary = false, bool ForConstraintInstantiation = false); | ||
|
||
/// RAII object to handle the state changes required to synthesize | ||
/// a function body. | ||
|
Uh oh!
There was an error while loading. Please reload this page.