From 1515139c94db1af34357dcbaea250214b8ce7255 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 4 Apr 2024 10:49:23 +0200 Subject: [PATCH 1/2] Update symboldatabase.cpp --- lib/symboldatabase.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index d391f053496..b51d10b517e 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1554,6 +1554,9 @@ void SymbolDatabase::createSymbolDatabaseIncompleteVars() parent = parent->astParent(); if (Token::simpleMatch(parent, "new")) continue; + // trailing return type + if (Token::simpleMatch(ftok, ".") && ftok->originalName() == "->" && Token::Match(ftok->tokAt(-1), "[])]")) + continue; } tok->isIncompleteVar(true); } From e7e7d52eebee0ab634661643c3074705432a1306 Mon Sep 17 00:00:00 2001 From: chrchr-github <78114321+chrchr-github@users.noreply.github.com> Date: Thu, 4 Apr 2024 10:50:16 +0200 Subject: [PATCH 2/2] Update testsymboldatabase.cpp --- test/testsymboldatabase.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index fc684d9314b..43330c0541f 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -5845,6 +5845,16 @@ class TestSymbolDatabase : public TestFixture { const Token* r = Token::findsimplematch(q, "r"); ASSERT(r && !r->isIncompleteVar()); } + { + GET_SYMBOL_DB("void f() {\n" // #12571 + " auto g = []() -> std::string* {\n" + " return nullptr;\n" + " };\n" + "}\n"); + ASSERT(db && errout_str().empty()); + const Token* s = Token::findsimplematch(tokenizer.tokens(), "string"); + ASSERT(s && !s->isIncompleteVar()); + } } void enum1() {