From d77fa6405125495bfd6d9a4f27cc1e3f33f9d5a2 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 21 Feb 2022 18:06:26 +0100 Subject: [PATCH] Fix #10256 Function::addArguments found argument 'x' with varid 0 (#3845) --- lib/tokenize.cpp | 2 +- test/testtokenize.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index fc9a562df..2b0a4fc2e 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -2910,7 +2910,7 @@ void Tokenizer::combineOperators() const char c2 = tok->next()->str()[0]; // combine +-*/ and = - if (c2 == '=' && (std::strchr("+-*/%|^=!<>", c1))) { + if (c2 == '=' && (std::strchr("+-*/%|^=!<>", c1)) && !Token::Match(tok->previous(), "%type% *")) { // skip templates if (cpp && (tok->str() == ">" || Token::simpleMatch(tok->previous(), "> *"))) { const Token* opening = diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index ea6400a43..566071c97 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -347,6 +347,7 @@ private: TEST_CASE(simplifyOperatorName28); TEST_CASE(simplifyOperatorName29); // spaceship operator TEST_CASE(simplifyOperatorName31); // #6342 + TEST_CASE(simplifyOperatorName32); // #10256 TEST_CASE(simplifyOverloadedOperators1); TEST_CASE(simplifyOverloadedOperators2); // (*this)(123) @@ -4909,6 +4910,12 @@ private: ASSERT_EQUALS("", errout.str()); } + void simplifyOperatorName32() { // #10256 + const char code[] = "void f(int* = nullptr) {}\n"; + ASSERT_EQUALS("void f ( int * = nullptr ) { }", tokenizeAndStringify(code)); + ASSERT_EQUALS("", errout.str()); + } + void simplifyOperatorName10() { // #8746 const char code1[] = "using a::operator=;"; ASSERT_EQUALS("using a :: operator= ;", tokenizeAndStringify(code1));