diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-04-26 16:15:35 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-04-26 16:15:35 +0000 |
commit | 74aeef50a0cc0547f387a38d32b77a2592ccc823 (patch) | |
tree | fe9ab0af5b819e3903258ff5c2ab860573a7f66c /clang/lib/Parse/ParseExpr.cpp | |
parent | af7e8c367f25d6e6cbc6ab50f56ad41d42617f7d (diff) | |
download | bcm5719-llvm-74aeef50a0cc0547f387a38d32b77a2592ccc823.tar.gz bcm5719-llvm-74aeef50a0cc0547f387a38d32b77a2592ccc823.zip |
Implement C++1y decltype(auto).
llvm-svn: 180610
Diffstat (limited to 'clang/lib/Parse/ParseExpr.cpp')
-rw-r--r-- | clang/lib/Parse/ParseExpr.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index 956ba36d3c8..326056daf44 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -691,8 +691,14 @@ ExprResult Parser::ParseCastExpression(bool isUnaryExpression, Res = getExprAnnotation(Tok); ConsumeToken(); break; - + case tok::kw_decltype: + // Annotate the token and tail recurse. + if (TryAnnotateTypeOrScopeToken()) + return ExprError(); + assert(Tok.isNot(tok::kw_decltype)); + return ParseCastExpression(isUnaryExpression, isAddressOfOperand); + case tok::identifier: { // primary-expression: identifier // unqualified-id: identifier // constant: enumeration-constant |