@@ -437,6 +437,7 @@ class TestSymbolDatabase : public TestFixture {
437
437
TEST_CASE(findFunction41); // #10202
438
438
TEST_CASE(findFunction42);
439
439
TEST_CASE(findFunction43); // #10087
440
+ TEST_CASE(findFunction44); // #11182
440
441
TEST_CASE(findFunctionContainer);
441
442
TEST_CASE(findFunctionExternC);
442
443
TEST_CASE(findFunctionGlobalScope); // ::foo
@@ -6926,6 +6927,37 @@ class TestSymbolDatabase : public TestFixture {
6926
6927
}
6927
6928
}
6928
6929
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
+
6929
6961
6930
6962
void findFunctionContainer() {
6931
6963
{
0 commit comments