From f87db23bb532580c060a0122a175dfaa6f75a3c1 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:32:43 +0100 Subject: [PATCH 1/2] Update tokenize.cpp --- lib/tokenize.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/tokenize.cpp b/lib/tokenize.cpp index 33a59d7bda3..1fd86453e5c 100644 --- a/lib/tokenize.cpp +++ b/lib/tokenize.cpp @@ -3341,12 +3341,14 @@ bool Tokenizer::simplifyUsing() } } else if (fpArgList && fpQual && Token::Match(tok1->next(), "%name%")) { // function pointer + const bool isFuncDecl = Token::simpleMatch(tok1->tokAt(2), "("); TokenList::copyTokens(tok1->next(), fpArgList, usingEnd->previous()); Token* const copyEnd = TokenList::copyTokens(tok1, start, fpQual->link()->previous()); Token* leftPar = copyEnd->previous(); while (leftPar->str() != "(") leftPar = leftPar->previous(); - Token* const rightPar = copyEnd->next()->insertToken(")"); + Token* const insertTok = isFuncDecl ? copyEnd->linkAt(2) : copyEnd->next(); + Token* const rightPar = insertTok->insertToken(")"); Token::createMutualLinks(leftPar, rightPar); tok1->deleteThis(); substitute = true; From 6151fcb31b519becbc29047cd92d94c1d6386361 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Mon, 26 Jan 2026 13:34:49 +0100 Subject: [PATCH 2/2] Update testsimplifyusing.cpp --- test/testsimplifyusing.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/testsimplifyusing.cpp b/test/testsimplifyusing.cpp index c020b99b5dd..647668a93b2 100644 --- a/test/testsimplifyusing.cpp +++ b/test/testsimplifyusing.cpp @@ -899,13 +899,19 @@ class TestSimplifyUsing : public TestFixture { ASSERT_EQUALS(expected2, tok(code2)); ASSERT_EQUALS("", errout_str()); - const char code3[] = "using FP = std::string (*)();\n" + const char code3[] = "using FP = std::string (*)();\n" // #14421 "using FPC = std::string (*const)();\n" "FP fp;\n" "FPC fpc{};\n"; const char expected3[] = "std :: string ( * fp ) ( ) ; std :: string ( * const fpc ) ( ) { } ;"; ASSERT_EQUALS(expected3, tok(code3)); ASSERT_EQUALS("", errout_str()); + + const char code4[] = "using F = void(*)(char);\n" // #14429 + "F f(int);\n"; + const char expected4[] = "void * f ( char ) ;"; + ASSERT_EQUALS(expected4, tok(code4)); + ASSERT_EQUALS("", errout_str()); } void simplifyUsing8970() {