aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2012-09-12 12:10:37 +0200
committerhjk <qthjk@ovi.com>2012-09-17 14:47:14 +0200
commit813846232bf5185b6cd3346f703b8172114c9943 (patch)
tree5887679e008b88fe084be1dcfe3fbb8fb93ac69a /src/libs
parente5699c09255ec5b85def92bac4f7746bb3f8d3b2 (diff)
C++11: Allow for brace initializers like T v{1, 2}.
And add a basic test. Change-Id: I3b8b87d51a9da154758d17380bba5922795f675c Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/3rdparty/cplusplus/Parser.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp
index e1800229e7..80798eb569 100644
--- a/src/libs/3rdparty/cplusplus/Parser.cpp
+++ b/src/libs/3rdparty/cplusplus/Parser.cpp
@@ -2493,6 +2493,10 @@ bool Parser::parseInitDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_sp
consumeToken();
}
+ const bool isFunctionDeclarator = node
+ && node->postfix_declarator_list
+ && node->postfix_declarator_list->lastValue()
+ && node->postfix_declarator_list->lastValue()->asFunctionDeclarator();
if (declaringClass && LA() == T_COLON
&& (! node || ! node->postfix_declarator_list)) {
unsigned colon_token = consumeToken();
@@ -2506,7 +2510,7 @@ bool Parser::parseInitDeclarator(DeclaratorAST *&node, SpecifierListAST *decl_sp
return true;
}
rewind(colon_token);
- } else if (node->core_declarator && (LA() == T_EQUAL || (! declaringClass && LA() == T_LPAREN))) {
+ } else if (node->core_declarator && (LA() == T_EQUAL || (_cxx0xEnabled && !isFunctionDeclarator && LA() == T_LBRACE) || (! declaringClass && LA() == T_LPAREN))) {
parseInitializer(node->initializer, &node->equal_token);
}
return true;