| 6603 | } |
| 6604 | |
| 6605 | void enum14() { |
| 6606 | GET_SYMBOL_DB("void f() {\n" // #11421 |
| 6607 | " enum E { A = 0, B = 0xFFFFFFFFFFFFFFFFull, C = 0x7FFFFFFFFFFFFFFF };\n" |
| 6608 | " E e = B;\n" |
| 6609 | " auto s1 = e >> 32;\n" |
| 6610 | " auto s2 = B >> 32;\n" |
| 6611 | " enum F { F0 = sizeof(int) };\n" |
| 6612 | " F f = F0;\n" |
| 6613 | "}\n"); |
| 6614 | ASSERT(db != nullptr); |
| 6615 | auto it = db->scopeList.begin(); |
| 6616 | std::advance(it, 2); |
| 6617 | const Enumerator* B = it->findEnumerator("B"); |
| 6618 | ASSERT(B); |
| 6619 | TODO_ASSERT(B->value_known); |
| 6620 | const Enumerator* C = it->findEnumerator("C"); |
| 6621 | ASSERT(C && C->value_known); |
| 6622 | const Token* const s1 = Token::findsimplematch(tokenizer.tokens(), "s1 ="); |
| 6623 | ASSERT(s1 && s1->valueType()); |
| 6624 | ASSERT_EQUALS(s1->valueType()->type, ValueType::Type::LONGLONG); |
| 6625 | const Token* const s2 = Token::findsimplematch(s1, "s2 ="); |
| 6626 | ASSERT(s2 && s2->valueType()); |
| 6627 | ASSERT_EQUALS(s2->valueType()->type, ValueType::Type::LONGLONG); |
| 6628 | ++it; |
| 6629 | const Enumerator* F0 = it->findEnumerator("F0"); |
| 6630 | ASSERT(F0 && F0->value_known); |
| 6631 | const Token* const f = Token::findsimplematch(s2, "f ="); |
| 6632 | ASSERT(f && f->valueType()); |
| 6633 | ASSERT_EQUALS(f->valueType()->type, ValueType::Type::INT); |
| 6634 | } |
| 6635 | |
| 6636 | void enum15() { |
| 6637 | { |
nothing calls this directly
no test coverage detected