diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 187ba24f35121ccfab288c7f177032be0753ffcb..150b8c055f4379a7fa5c22355703096c3587f1ca 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -3102,7 +3102,10 @@ bool Parser::parseReturnStatement(StatementAST *&node) if (LA() == T_RETURN) { ReturnStatementAST *ast = new (_pool) ReturnStatementAST; ast->return_token = consumeToken(); - parseExpression(ast->expression); + if (_cxx0xEnabled && LA() == T_LBRACE) + parseBracedInitList0x(ast->expression); + else + parseExpression(ast->expression); match(T_SEMICOLON, &ast->semicolon_token); node = ast; return true; diff --git a/tests/auto/cplusplus/cxx11/data/braceInitializers.1.cpp b/tests/auto/cplusplus/cxx11/data/braceInitializers.1.cpp index f3a0675f38402b76a0101ffe928cd8424ccab746..94e8fae2419f19fd723bf5e8762b348a322c3f04 100644 --- a/tests/auto/cplusplus/cxx11/data/braceInitializers.1.cpp +++ b/tests/auto/cplusplus/cxx11/data/braceInitializers.1.cpp @@ -12,3 +12,7 @@ void main() { Type var2{{1, 2, 3}, 4}; var3 += {1, 2}; } + +T foo() { + return {1, 2, {"foo", 7}}; +}