diff options
author | Douglas Gregor <dgregor@apple.com> | 2008-11-06 15:17:27 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2008-11-06 15:17:27 +0000 |
commit | 85bb3dad385e9c2a57cf5aa2d2116d8381953a5a (patch) | |
tree | d0a78fd2e864d92c36dce6ea85b8137e2e835e49 | |
parent | 1394af716a045ffdbda682e283cd25d7b532d967 (diff) |
Add the remaining C++0x keywords
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58802 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/TokenKinds.def | 10 | ||||
-rw-r--r-- | lib/Parse/ParseExpr.cpp | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/include/clang/Basic/TokenKinds.def b/include/clang/Basic/TokenKinds.def index 9b636183dd..a557d5b9b9 100644 --- a/include/clang/Basic/TokenKinds.def +++ b/include/clang/Basic/TokenKinds.def @@ -268,9 +268,19 @@ CXX_KEYWORD_OPERATOR(xor , caret) CXX_KEYWORD_OPERATOR(xor_eq , caretequal) // C++0x keywords +KEYWORD(alignof , NOTC90|NOTC99|NOTCPP) +KEYWORD(axiom , NOTC90|NOTC99|NOTCPP) KEYWORD(char16_t , NOTC90|NOTC99|NOTCPP) KEYWORD(char32_t , NOTC90|NOTC99|NOTCPP) +KEYWORD(concept , NOTC90|NOTC99|NOTCPP) +KEYWORD(concept_map , NOTC90|NOTC99|NOTCPP) +KEYWORD(constexpr , NOTC90|NOTC99|NOTCPP) +KEYWORD(decltype , NOTC90|NOTC99|NOTCPP) +KEYWORD(late_check , NOTC90|NOTC99|NOTCPP) +KEYWORD(nullptr , NOTC90|NOTC99|NOTCPP) +KEYWORD(requires , NOTC90|NOTC99|NOTCPP) KEYWORD(static_assert , NOTC90|NOTC99|NOTCPP) +KEYWORD(thread_local , NOTC90|NOTC99|NOTCPP) // GNU Extensions. KEYWORD(_Decimal32 , EXTC90|EXTC99|EXTCPP|EXTCPP0x) diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index 7ab9d869c2..b7376954d9 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -348,6 +348,7 @@ Parser::ParseRHSOfBinaryExpression(ExprResult LHS, unsigned MinPrec) { /// 'sizeof' '(' type-name ')' /// [GNU] '__alignof' unary-expression /// [GNU] '__alignof' '(' type-name ')' +/// [C++0x] 'alignof' '(' type-id ')' /// [GNU] '&&' identifier /// /// unary-operator: one of @@ -530,8 +531,10 @@ Parser::ExprResult Parser::ParseCastExpression(bool isUnaryExpression) { } case tok::kw_sizeof: // unary-expression: 'sizeof' unary-expression // unary-expression: 'sizeof' '(' type-name ')' + case tok::kw_alignof: case tok::kw___alignof: // unary-expression: '__alignof' unary-expression // unary-expression: '__alignof' '(' type-name ')' + // unary-expression: 'alignof' '(' type-id ')' return ParseSizeofAlignofExpression(); case tok::ampamp: { // unary-expression: '&&' identifier SourceLocation AmpAmpLoc = ConsumeToken(); @@ -712,8 +715,10 @@ Parser::ExprResult Parser::ParsePostfixExpressionSuffix(ExprResult LHS) { /// 'sizeof' '(' type-name ')' /// [GNU] '__alignof' unary-expression /// [GNU] '__alignof' '(' type-name ')' +/// [C++0x] 'alignof' '(' type-id ')' Parser::ExprResult Parser::ParseSizeofAlignofExpression() { - assert((Tok.is(tok::kw_sizeof) || Tok.is(tok::kw___alignof)) && + assert((Tok.is(tok::kw_sizeof) || Tok.is(tok::kw___alignof) + || Tok.is(tok::kw_alignof)) && "Not a sizeof/alignof expression!"); Token OpTok = Tok; ConsumeToken(); |