From 2c43075eceb9cf099ff67bb9141315f83afe52fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 10 Apr 2017 23:05:41 +0200 Subject: [PATCH] AST: weird clang syntax --- lib/tokenlist.cpp | 3 +++ test/testtokenize.cpp | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/tokenlist.cpp b/lib/tokenlist.cpp index 8f6a752d6..383c04eca 100644 --- a/lib/tokenlist.cpp +++ b/lib/tokenlist.cpp @@ -508,6 +508,9 @@ static bool iscpp11init(const Token * const tok) if (!nameToken) return false; + if (Token::Match(nameToken, "%name% { [")) + return false; + const Token *endtok = nullptr; if (Token::Match(nameToken,"%name% {")) endtok = nameToken->linkAt(1); diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index b9fa3cc9b..c66c5ba18 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -8046,7 +8046,10 @@ private: ASSERT_EQUALS("a1(2+=",testAst("a=(t&)1+2;")); ASSERT_EQUALS("ab::r&c(=", testAst("a::b& r = (a::b&)c;")); // #5261 ASSERT_EQUALS("ab10:?=", testAst("a=(b)?1:0;")); - ASSERT_EQUALS("a&(", testAst("(int (**)[i]){&a}[0][1][5] = 0;")); // TODO: This AST is incomplete however it's very weird syntax (taken from clang/test/CodeGen/vla.c) + + // TODO: This AST is incomplete however it's very weird syntax (taken from clang test suite) + ASSERT_EQUALS("a&(", testAst("(int (**)[i]){&a}[0][1][5] = 0;")); + ASSERT_EQUALS("n0=", testAst("TrivialDefCtor{[2][2]}[1][1].n = 0;")); // ({..}) ASSERT_EQUALS("a{+d+ bc+", testAst("a+({b+c;})+d"));