@@ -437,6 +437,7 @@ class TestSymbolDatabase : public TestFixture {
437437 TEST_CASE (findFunction41); // #10202
438438 TEST_CASE (findFunction42);
439439 TEST_CASE (findFunction43); // #10087
440+ TEST_CASE (findFunction44); // #11182
440441 TEST_CASE (findFunctionContainer);
441442 TEST_CASE (findFunctionExternC);
442443 TEST_CASE (findFunctionGlobalScope); // ::foo
@@ -6926,6 +6927,37 @@ class TestSymbolDatabase : public TestFixture {
69266927 }
69276928 }
69286929
6930+ void findFunction44 () { // #11182
6931+ {
6932+ GET_SYMBOL_DB (" struct T { enum E { E0 }; };\n "
6933+ " struct S {\n "
6934+ " void f(const void*, T::E) {}\n "
6935+ " void f(const int&, T::E) {}\n "
6936+ " void g() { f(nullptr, T::E0); }\n "
6937+ " };\n " );
6938+ ASSERT_EQUALS (" " , errout.str ());
6939+ const Token *functok = Token::findsimplematch (tokenizer.tokens (), " f ( nullptr" );
6940+ ASSERT (functok);
6941+ ASSERT (functok->function ());
6942+ ASSERT (functok->function ()->name () == " f" );
6943+ ASSERT_EQUALS (3 , functok->function ()->tokenDef ->linenr ());
6944+ }
6945+ {
6946+ GET_SYMBOL_DB (" enum E { E0 };\n "
6947+ " struct S {\n "
6948+ " void f(int*, int) {}\n "
6949+ " void f(int, int) {}\n "
6950+ " void g() { f(nullptr, E0); }\n "
6951+ " };\n " );
6952+ ASSERT_EQUALS (" " , errout.str ());
6953+ const Token *functok = Token::findsimplematch (tokenizer.tokens (), " f ( nullptr" );
6954+ ASSERT (functok);
6955+ ASSERT (functok->function ());
6956+ ASSERT (functok->function ()->name () == " f" );
6957+ ASSERT_EQUALS (3 , functok->function ()->tokenDef ->linenr ());
6958+ }
6959+ }
6960+
69296961
69306962 void findFunctionContainer () {
69316963 {
0 commit comments