From fad1f6b559c36b831276d5c588617c2b749382f9 Mon Sep 17 00:00:00 2001 From: chrchr Date: Tue, 13 Jun 2023 14:32:31 +0200 Subject: [PATCH] Fix AST regression --- lib/tokenize.cpp | 2 +- test/testtokenize.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index b0fc121dd..f53ab29d1 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -5248,7 +5248,7 @@ void Tokenizer::createLinks2() } else if (token->str() == "<" && ((token->previous() && (token->previous()->isTemplate() || (token->previous()->isName() && !token->previous()->varId()) || - token->strAt(-1) == "]")) || + (token->strAt(-1) == "]" && !Token::Match(token->linkAt(-1)->previous(), "%name%|)")))) || Token::Match(token->next(), ">|>>"))) { type.push(token); if (token->previous()->str() == "template") diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index af455a0cf..594cad067 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -5955,6 +5955,7 @@ private: ASSERT_EQUALS("x00throw:?return", testAst("return x ? 0 : throw 0;")); // #9768 ASSERT_EQUALS("val0<1throwval:?return", testAst("return val < 0 ? throw 1 : val;")); // #8526 ASSERT_EQUALS("ix0<00throw:?=", testAst("int i = x < 0 ? 0 : throw 0;")); + ASSERT_EQUALS("pa[pb[<1-pa[pb[>:?return", testAst("return p[a] < p[b] ? -1 : p[a] > p[b];")); ASSERT_EQUALS("a\"\"=", testAst("a=\"\"")); ASSERT_EQUALS("a\'\'=", testAst("a=\'\'"));