forked from qt-creator/qt-creator
Recognize C++0x sizeof... expressions.
This commit is contained in:
@@ -1632,8 +1632,18 @@ unsigned SizeofExpressionAST::firstToken() const
|
||||
|
||||
unsigned SizeofExpressionAST::lastToken() const
|
||||
{
|
||||
if (expression)
|
||||
if (rparen_token)
|
||||
return rparen_token + 1;
|
||||
|
||||
else if (expression)
|
||||
return expression->lastToken();
|
||||
|
||||
else if (lparen_token)
|
||||
return lparen_token + 1;
|
||||
|
||||
else if (dot_dot_dot_token)
|
||||
return dot_dot_dot_token + 1;
|
||||
|
||||
return sizeof_token + 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -2887,6 +2887,7 @@ class CPLUSPLUS_EXPORT SizeofExpressionAST: public ExpressionAST
|
||||
{
|
||||
public:
|
||||
unsigned sizeof_token;
|
||||
unsigned dot_dot_dot_token;
|
||||
unsigned lparen_token;
|
||||
ExpressionAST *expression;
|
||||
unsigned rparen_token;
|
||||
|
||||
@@ -4268,6 +4268,11 @@ bool Parser::parseUnaryExpression(ExpressionAST *&node)
|
||||
SizeofExpressionAST *ast = new (_pool) SizeofExpressionAST;
|
||||
ast->sizeof_token = consumeToken();
|
||||
|
||||
// sizeof...(Args)
|
||||
if (_cxx0xEnabled && LA() == T_DOT_DOT_DOT && (LA(2) == T_IDENTIFIER || (LA(2) == T_LPAREN && LA(3) == T_IDENTIFIER
|
||||
&& LA(4) == T_RPAREN)))
|
||||
ast->dot_dot_dot_token = consumeToken();
|
||||
|
||||
if (LA() == T_LPAREN) {
|
||||
unsigned lparen_token = consumeToken();
|
||||
if (parseTypeId(ast->expression) && LA() == T_RPAREN) {
|
||||
|
||||
Reference in New Issue
Block a user