diff options
author | Christian Kamm <[email protected]> | 2012-09-17 09:58:09 +0200 |
---|---|---|
committer | hjk <[email protected]> | 2012-09-19 11:47:49 +0200 |
commit | b9f6f1bcf72510fedf1b041b359062e8e80f2880 (patch) | |
tree | 64c633468ef4b43133c93aae4e75ba4a4ce25054 /src/plugins/cpptools/cppchecksymbols.cpp | |
parent | 903ba378c2a159bc8e7f2cf43a480484d6a3a217 (diff) |
C++11: Allow uniform initialization in ctor init lists.
So
class C { C() : _x{12}, _y({12}) {} };
now parses correctly.
Change-Id: I4281dcb0541a86b550e74630cad6ae0a59fef1b4
Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins/cpptools/cppchecksymbols.cpp')
-rw-r--r-- | src/plugins/cpptools/cppchecksymbols.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp index c24acc2f0e4..709c175c2ae 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; |