MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / enum16

Method enum16

test/testsymboldatabase.cpp:6718–6802  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6716 }
6717
6718 void enum16() {
6719 {
6720 GET_SYMBOL_DB("struct B {\n" // #12538
6721 " struct S {\n"
6722 " enum E { E0 = 0 };\n"
6723 " };\n"
6724 "};\n"
6725 "struct D : B {\n"
6726 " S::E f() const {\n"
6727 " return S::E0;\n"
6728 " }\n"
6729 "};\n");
6730 ASSERT(db != nullptr);
6731 auto it = db->scopeList.begin();
6732 std::advance(it, 3);
6733 const Enumerator* E0 = it->findEnumerator("E0");
6734 ASSERT(E0 && E0->value_known && E0->value == 0);
6735 const Token* const e = Token::findsimplematch(tokenizer.tokens(), "E0 ;");
6736 ASSERT(e && e->enumerator());
6737 ASSERT_EQUALS(E0, e->enumerator());
6738 }
6739 {
6740 GET_SYMBOL_DB("namespace ns {\n" // #12567
6741 " struct S1 {\n"
6742 " enum E { E1 } e;\n"
6743 " };\n"
6744 " struct S2 {\n"
6745 " static void f();\n"
6746 " };\n"
6747 "}\n"
6748 "void ns::S2::f() {\n"
6749 " S1 s;\n"
6750 " s.e = S1::E1;\n"
6751 "}\n");
6752 ASSERT(db != nullptr);
6753 auto it = db->scopeList.begin();
6754 std::advance(it, 3);
6755 const Enumerator* E1 = it->findEnumerator("E1");
6756 ASSERT(E1 && E1->value_known && E1->value == 0);
6757 const Token* const e = Token::findsimplematch(tokenizer.tokens(), "E1 ;");
6758 ASSERT(e && e->enumerator());
6759 ASSERT_EQUALS(E1, e->enumerator());
6760 }
6761 {
6762 GET_SYMBOL_DB("namespace N {\n"
6763 " struct S1 {\n"
6764 " enum E { E1 } e;\n"
6765 " };\n"
6766 " namespace O {\n"
6767 " struct S2 {\n"
6768 " static void f();\n"
6769 " };\n"
6770 " }\n"
6771 "}\n"
6772 "void N::O::S2::f() {\n"
6773 " S1 s;\n"
6774 " s.e = S1::E1;\n"
6775 "}\n");

Callers

nothing calls this directly

Calls 3

findsimplematchFunction · 0.85
findEnumeratorMethod · 0.80
beginMethod · 0.45

Tested by

no test coverage detected