diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-08-31 21:16:32 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-08-31 21:16:32 +0000 |
commit | f328a2857d6dc397ec7a304b07d40893891f7f98 (patch) | |
tree | 773f7c497fe9ff7c2e7c477803fb993efdb58b48 /include/clang/Parse/Action.h | |
parent | 9ac6f62a77be5b281a7ddc24a16669b457ac47c2 (diff) |
Add parsing for references to member function templates with explicit
template argument lists, e.g., x.f<int>().
Semantic analysis will be a separate commit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80624 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Parse/Action.h')
-rw-r--r-- | include/clang/Parse/Action.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/include/clang/Parse/Action.h b/include/clang/Parse/Action.h index f3364352aa..0c70441083 100644 --- a/include/clang/Parse/Action.h +++ b/include/clang/Parse/Action.h @@ -1321,6 +1321,53 @@ public: return ExprEmpty(); } + /// \brief Parsed a reference to a member template-id. + /// + /// This callback will occur instead of ActOnMemberReferenceExpr() when the + /// member in question is a template for which the code provides an + /// explicitly-specified template argument list, e.g., + /// + /// \code + /// x.f<int>() + /// \endcode + /// + /// \param S the scope in which the member reference expression occurs + /// + /// \param Base the expression to the left of the "." or "->". + /// + /// \param OpLoc the location of the "." or "->". + /// + /// \param OpKind the kind of operator, which will be "." or "->". + /// + /// \param SS the scope specifier that precedes the template-id in, e.g., + /// \c x.Base::f<int>(). + /// + /// \param Template the declaration of the template that is being referenced. + /// + /// \param TemplateNameLoc the location of the template name referred to by + /// \p Template. + /// + /// \param LAngleLoc the location of the left angle bracket ('<') + /// + /// \param TemplateArgs the (possibly-empty) template argument list provided + /// as part of the member reference. + /// + /// \param RAngleLoc the location of the right angle bracket ('>') + virtual OwningExprResult + ActOnMemberTemplateIdReferenceExpr(Scope *S, ExprArg Base, + SourceLocation OpLoc, + tok::TokenKind OpKind, + const CXXScopeSpec &SS, + // FIXME: "template" keyword? + TemplateTy Template, + SourceLocation TemplateNameLoc, + SourceLocation LAngleLoc, + ASTTemplateArgsPtr TemplateArgs, + SourceLocation *TemplateArgLocs, + SourceLocation RAngleLoc) { + return ExprEmpty(); + } + /// ActOnFinishFullExpr - Called whenever a full expression has been parsed. /// (C++ [intro.execution]p12). virtual OwningExprResult ActOnFinishFullExpr(ExprArg Expr) { |