@@ -373,6 +373,7 @@ class TestSymbolDatabase : public TestFixture {
373373 TEST_CASE (createSymbolDatabaseFindAllScopes4);
374374 TEST_CASE (createSymbolDatabaseFindAllScopes5);
375375 TEST_CASE (createSymbolDatabaseFindAllScopes6);
376+ TEST_CASE (createSymbolDatabaseFindAllScopes7);
376377
377378 TEST_CASE (createSymbolDatabaseIncompleteVars);
378379
@@ -5461,6 +5462,31 @@ class TestSymbolDatabase : public TestFixture {
54615462 ASSERT_EQUALS (classNC.derivedFrom [1 ].type , &classNB);
54625463 }
54635464
5465+ void createSymbolDatabaseFindAllScopes7 ()
5466+ {
5467+ GET_SYMBOL_DB (" namespace {\n "
5468+ " struct S {\n "
5469+ " void f();\n "
5470+ " };\n "
5471+ " }\n "
5472+ " void S::f() {}\n " );
5473+ ASSERT (db);
5474+ ASSERT_EQUALS (4 , db->scopeList .size ());
5475+ auto anon = db->scopeList .begin ();
5476+ ++anon;
5477+ ASSERT (anon->className .empty ());
5478+ ASSERT_EQUALS (anon->type , Scope::eNamespace);
5479+ auto S = anon;
5480+ ++S;
5481+ ASSERT_EQUALS (S->type , Scope::eStruct);
5482+ ASSERT_EQUALS (S->className , " S" );
5483+ ASSERT_EQUALS (S->nestedIn , &*anon);
5484+ const Token* f = Token::findsimplematch (tokenizer.tokens (), " f ( ) {" );
5485+ ASSERT (f && f->function () && f->function ()->functionScope && f->function ()->functionScope ->bodyStart );
5486+ ASSERT_EQUALS (f->function ()->functionScope ->functionOf , &*S);
5487+ ASSERT_EQUALS (f->function ()->functionScope ->bodyStart ->linenr (), 6 );
5488+ }
5489+
54645490 void createSymbolDatabaseIncompleteVars ()
54655491 {
54665492 {
0 commit comments