From 31f930325319e998553debf4dfee0aa0ce8b84a6 Mon Sep 17 00:00:00 2001 From: chrchr-github Date: Wed, 3 Jun 2026 00:14:34 +0200 Subject: [PATCH 1/2] Add test for #11841 --- test/testsymboldatabase.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index e981c8ea546..ac0ce089aa7 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -430,6 +430,7 @@ class TestSymbolDatabase : public TestFixture { TEST_CASE(symboldatabase110); TEST_CASE(symboldatabase111); // [[fallthrough]] TEST_CASE(symboldatabase112); // explicit operator + TEST_CASE(symboldatabase113); TEST_CASE(createSymbolDatabaseFindAllScopes1); TEST_CASE(createSymbolDatabaseFindAllScopes2); @@ -5864,6 +5865,33 @@ class TestSymbolDatabase : public TestFixture { ASSERT(f && f->function() && f->function()->isExplicit()); } + void symboldatabase113() { + GET_SYMBOL_DB("template \n" + "struct S {\n" + " S();\n" + " int& g() { return a; }\n" + " struct I;\n" + "private:\n" + " int a;\n" + "};\n" + "template <>\n" + "struct S::I{};\n"); + ASSERT(db->scopeList.size() == 4); + auto it = db->scopeList.begin(); + ++it; + ASSERT_EQUALS_ENUM(ScopeType::eStruct, it->type); + ASSERT_EQUALS("I", it->className); + ASSERT_EQUALS(0, it->varlist.size()); + ++it; + ASSERT_EQUALS_ENUM(ScopeType::eStruct, it->type); + ASSERT_EQUALS("S < int >", it->className); + ASSERT_EQUALS(1, it->varlist.size()); + ++it; + ASSERT_EQUALS_ENUM(ScopeType::eFunction, it->type); + ASSERT_EQUALS("g", it->className); + ASSERT_EQUALS(0, it->varlist.size()); + } + void createSymbolDatabaseFindAllScopes1() { GET_SYMBOL_DB("void f() { union {int x; char *p;} a={0}; }"); ASSERT(db->scopeList.size() == 3); From 1a8e053c7aa60b3fde166360fbc5188925a7a9c8 Mon Sep 17 00:00:00 2001 From: chrchr-github Date: Wed, 3 Jun 2026 00:15:31 +0200 Subject: [PATCH 2/2] Comment --- test/testsymboldatabase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index ac0ce089aa7..84681b00c85 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -5865,7 +5865,7 @@ class TestSymbolDatabase : public TestFixture { ASSERT(f && f->function() && f->function()->isExplicit()); } - void symboldatabase113() { + void symboldatabase113() { // #11841 GET_SYMBOL_DB("template \n" "struct S {\n" " S();\n"