| 6634 | } |
| 6635 | |
| 6636 | void enum15() { |
| 6637 | { |
| 6638 | GET_SYMBOL_DB("struct S {\n" |
| 6639 | " S();\n" |
| 6640 | " enum E { E0 };\n" |
| 6641 | "};\n" |
| 6642 | "S::S() {\n" |
| 6643 | " E e = E::E0;\n" |
| 6644 | "}\n"); |
| 6645 | ASSERT(db != nullptr); |
| 6646 | auto it = db->scopeList.begin(); |
| 6647 | std::advance(it, 2); |
| 6648 | const Enumerator* E0 = it->findEnumerator("E0"); |
| 6649 | ASSERT(E0 && E0->value_known && E0->value == 0); |
| 6650 | const Token* const e = Token::findsimplematch(tokenizer.tokens(), "E0 ;"); |
| 6651 | ASSERT(e && e->enumerator()); |
| 6652 | ASSERT_EQUALS(E0, e->enumerator()); |
| 6653 | } |
| 6654 | { |
| 6655 | GET_SYMBOL_DB("struct S {\n" |
| 6656 | " S(bool x);\n" |
| 6657 | " enum E { E0 };\n" |
| 6658 | "};\n" |
| 6659 | "S::S(bool x) {\n" |
| 6660 | " if (x)\n" |
| 6661 | " E e = E::E0;\n" |
| 6662 | "}\n"); |
| 6663 | ASSERT(db != nullptr); |
| 6664 | auto it = db->scopeList.begin(); |
| 6665 | std::advance(it, 2); |
| 6666 | const Enumerator* E0 = it->findEnumerator("E0"); |
| 6667 | ASSERT(E0 && E0->value_known && E0->value == 0); |
| 6668 | const Token* const e = Token::findsimplematch(tokenizer.tokens(), "E0 ;"); |
| 6669 | ASSERT(e && e->enumerator()); |
| 6670 | ASSERT_EQUALS(E0, e->enumerator()); |
| 6671 | } |
| 6672 | { |
| 6673 | GET_SYMBOL_DB("struct S {\n" |
| 6674 | " enum E { E0 };\n" |
| 6675 | " void f(int i);\n" |
| 6676 | " S();\n" |
| 6677 | " int m;\n" |
| 6678 | "};\n" |
| 6679 | "S::S() : m(E0) {}\n" |
| 6680 | "void S::f(int i) {\n" |
| 6681 | " if (i != E0) {}\n" |
| 6682 | "}\n"); |
| 6683 | ASSERT(db != nullptr); |
| 6684 | auto it = db->scopeList.begin(); |
| 6685 | std::advance(it, 2); |
| 6686 | const Enumerator* E0 = it->findEnumerator("E0"); |
| 6687 | ASSERT(E0 && E0->value_known && E0->value == 0); |
| 6688 | const Token* e = Token::findsimplematch(tokenizer.tokens(), "E0 )"); |
| 6689 | ASSERT(e && e->enumerator()); |
| 6690 | ASSERT_EQUALS(E0, e->enumerator()); |
| 6691 | e = Token::findsimplematch(e->next(), "E0 )"); |
| 6692 | ASSERT(e && e->enumerator()); |
| 6693 | ASSERT_EQUALS(E0, e->enumerator()); |
nothing calls this directly
no test coverage detected