summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppchecksymbols.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppchecksymbols.cpp')
-rw-r--r--src/plugins/cpptools/cppchecksymbols.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index c24acc2f0e..709c175c2a 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -924,10 +924,17 @@ bool CheckSymbols::visit(MemInitializerAST *ast)
} else if (maybeField(nameAST->name)) {
maybeAddField(_context.lookup(nameAST->name, klass), nameAST);
} else {
- // It's a constructor
+ // It's a constructor, count the number of arguments
unsigned arguments = 0;
- for (ExpressionListAST *it = ast->expression_list; it; it = it->next)
- ++arguments;
+ if (ast->expression) {
+ ExpressionListAST *expr_list = 0;
+ if (ExpressionListParenAST *parenExprList = ast->expression->asExpressionListParen())
+ expr_list = parenExprList->expression_list;
+ else if (BracedInitializerAST *bracedInitList = ast->expression->asBracedInitializer())
+ expr_list = bracedInitList->expression_list;
+ for (ExpressionListAST *it = expr_list; it; it = it->next)
+ ++arguments;
+ }
maybeAddFunction(_context.lookup(nameAST->name, klass), nameAST, arguments);
}
@@ -937,7 +944,7 @@ bool CheckSymbols::visit(MemInitializerAST *ast)
}
}
- accept(ast->expression_list);
+ accept(ast->expression);
}
return false;