From 11cbb2eb005501b180a429e74ee4da24ddf4284a Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 28 Mar 2022 22:05:41 +0200 Subject: [PATCH] Fix AST cyclic dependency [cppcheckError] 3 (#3953) --- lib/tokenlist.cpp | 2 +- test/testtokenize.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/tokenlist.cpp b/lib/tokenlist.cpp index 8242e6240..4b16cbb52 100644 --- a/lib/tokenlist.cpp +++ b/lib/tokenlist.cpp @@ -814,7 +814,7 @@ static void compileTerm(Token *&tok, AST_state& state) state.op.push(tok); if (Token::Match(tok, "%name% <") && tok->linkAt(1)) tok = tok->linkAt(1); - else if (Token::Match(tok, "%name% ...") || (state.op.size() == 1 && state.depth == 0 && Token::Match(tok->tokAt(-2), ") ( %name% ) ="))) + else if (Token::Match(tok, "%name% ...") || (state.op.size() == 1 && state.depth == 0 && Token::Match(tok->tokAt(-3), "!!& ) ( %name% ) ="))) tok = tok->next(); tok = tok->next(); if (Token::Match(tok, "%str%")) { diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index 80d4b32a3..13184d35e 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -6222,6 +6222,7 @@ private: ASSERT_EQUALS("x0=a, stdtie::a(x=", testAst("int x = 0, a; std::tie(a) = x;\n")); ASSERT_EQUALS("tmpa*=a*b*=,b*tmp=,", testAst("{ ((tmp) = (*a)), ((*a) = (*b)), ((*b) = (tmp)); }")); ASSERT_EQUALS("a(*v=", testAst("(*(volatile unsigned int *)(a) = (v));")); + ASSERT_EQUALS("i(j=", testAst("(int&)(i) = j;")); } void astunaryop() { // unary operators