From e85c6f4b385da2b3da447a4b389dadd3f8d8990f Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Wed, 4 Jun 2014 16:18:16 +0200 Subject: [PATCH] C++11: Fix parsing of expressions like vector{1}. The parser considers '{' an operator and thus thought "template-id {" couldn't possibly be valid. This patch adds '{' as an exception to the rule. Change-Id: I40730fcdc5cade48566b4c8b6fde390f455bbdba Reviewed-by: Nikolai Kosjar --- src/libs/3rdparty/cplusplus/Parser.cpp | 1 + tests/auto/cplusplus/cxx11/data/braceInitializers.3.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 876b138b6ab..dfd6d1e49aa 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -4731,6 +4731,7 @@ bool Parser::parseNameId(NameAST *&name) case T_SEMICOLON: case T_LBRACKET: case T_LPAREN: + case T_LBRACE: return true; case T_THIS: diff --git a/tests/auto/cplusplus/cxx11/data/braceInitializers.3.cpp b/tests/auto/cplusplus/cxx11/data/braceInitializers.3.cpp index 5105b4690c5..6f15afbcc5a 100644 --- a/tests/auto/cplusplus/cxx11/data/braceInitializers.3.cpp +++ b/tests/auto/cplusplus/cxx11/data/braceInitializers.3.cpp @@ -1,6 +1,7 @@ auto x = int{}; auto y = Foo{}; auto z = typename Foo{}; +auto a = Foo{}; auto d = new C(1, abc...); auto e = new C{1, 2, 3};