aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppchecksymbols.cpp
diff options
context:
space:
mode:
authorChristian Kamm <[email protected]>2012-09-19 11:26:33 +0200
committerhjk <[email protected]>2012-09-19 12:23:18 +0200
commitaa645254a240845aa69d24896b2e88120884d938 (patch)
treed7a95c5b38d641fa1c073994bc436a6808a80a3d /src/plugins/cpptools/cppchecksymbols.cpp
parent83da5f68bec13dcb05b84a005f4bb3bc7e8bc82b (diff)
C++11: More (expression-list) or brace-init-list.
This time in the 'new' expression. Changed it to make new C(1, abc...) and new C{1, abc} work. Change-Id: I7232798fd083b653ee04ef9ede386d6536133e16 Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins/cpptools/cppchecksymbols.cpp')
-rw-r--r--src/plugins/cpptools/cppchecksymbols.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index 709c175c2ae..cd77278e6bd 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -663,13 +663,14 @@ bool CheckSymbols::visit(NewExpressionAST *ast)
if (binding && nameAST) {
int arguments = 0;
if (ast->new_initializer) {
- if (ExpressionAST *expr = ast->new_initializer->expression) {
- while (BinaryExpressionAST *binExpr = expr->asBinaryExpression()) {
- expr = binExpr->right_expression;
- ++arguments;
- }
+ ExpressionListAST *list = 0;
+ if (ExpressionListParenAST *exprListParen = ast->new_initializer->asExpressionListParen()) {
+ list = exprListParen->expression_list;
+ } else if (BracedInitializerAST *braceInit = ast->new_initializer->asBracedInitializer()) {
+ list = braceInit->expression_list;
}
-
+ for (ExpressionListAST *it = list; it; it = it->next)
+ ++arguments;
}
Scope *scope = enclosingScope();