aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Parse/Action.h
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-08-31 21:16:32 +0000
committerDouglas Gregor <dgregor@apple.com>2009-08-31 21:16:32 +0000
commitf328a2857d6dc397ec7a304b07d40893891f7f98 (patch)
tree773f7c497fe9ff7c2e7c477803fb993efdb58b48 /include/clang/Parse/Action.h
parent9ac6f62a77be5b281a7ddc24a16669b457ac47c2 (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.h47
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) {