| 6822 | } |
| 6823 | |
| 6824 | void enum18() { |
| 6825 | { |
| 6826 | GET_SYMBOL_DB("namespace {\n" |
| 6827 | " enum { E0 };\n" |
| 6828 | "}\n" |
| 6829 | "void f() {\n" |
| 6830 | " if (0 > E0) {}\n" |
| 6831 | "}\n"); |
| 6832 | ASSERT(db != nullptr); |
| 6833 | auto it = db->scopeList.begin(); |
| 6834 | std::advance(it, 2); |
| 6835 | const Enumerator* E0 = it->findEnumerator("E0"); |
| 6836 | ASSERT(E0 && E0->value_known && E0->value == 0); |
| 6837 | const Token* const e = Token::findsimplematch(tokenizer.tokens(), "E0 )"); |
| 6838 | ASSERT(e && e->enumerator()); |
| 6839 | ASSERT_EQUALS(E0, e->enumerator()); |
| 6840 | } |
| 6841 | { |
| 6842 | GET_SYMBOL_DB("namespace ns {\n" // #12114 |
| 6843 | " enum { V1 };\n" |
| 6844 | " struct C1 {\n" |
| 6845 | " enum { V2 };\n" |
| 6846 | " };\n" |
| 6847 | "}\n" |
| 6848 | "using namespace ns;\n" |
| 6849 | "void f() {\n" |
| 6850 | " if (0 > V1) {}\n" |
| 6851 | " if (0 > C1::V2) {}\n" |
| 6852 | "}\n"); |
| 6853 | ASSERT(db != nullptr); |
| 6854 | auto it = db->scopeList.begin(); |
| 6855 | std::advance(it, 2); |
| 6856 | const Enumerator* V1 = it->findEnumerator("V1"); |
| 6857 | ASSERT(V1 && V1->value_known && V1->value == 0); |
| 6858 | const Token* const e1 = Token::findsimplematch(tokenizer.tokens(), "V1 )"); |
| 6859 | ASSERT(e1 && e1->enumerator()); |
| 6860 | ASSERT_EQUALS(V1, e1->enumerator()); |
| 6861 | std::advance(it, 2); |
| 6862 | const Enumerator* V2 = it->findEnumerator("V2"); |
| 6863 | ASSERT(V2 && V2->value_known && V2->value == 0); |
| 6864 | const Token* const e2 = Token::findsimplematch(tokenizer.tokens(), "V2 )"); |
| 6865 | ASSERT(e2 && e2->enumerator()); |
| 6866 | ASSERT_EQUALS(V2, e2->enumerator()); |
| 6867 | } |
| 6868 | { |
| 6869 | GET_SYMBOL_DB("namespace ns {\n" |
| 6870 | " enum { V1 };\n" |
| 6871 | " struct C1 {\n" |
| 6872 | " enum { V2 };\n" |
| 6873 | " };\n" |
| 6874 | "}\n" |
| 6875 | "void f() {\n" |
| 6876 | " using namespace ns;\n" |
| 6877 | " if (0 > V1) {}\n" |
| 6878 | " if (0 > C1::V2) {}\n" |
| 6879 | "}\n"); |
| 6880 | ASSERT(db != nullptr); |
| 6881 | auto it = db->scopeList.begin(); |
nothing calls this directly
no test coverage detected