| 636 | } |
| 637 | |
| 638 | static std::vector<const Token*> getParentMembers(const Token* tok) |
| 639 | { |
| 640 | if (!tok) |
| 641 | return {}; |
| 642 | if (!Token::simpleMatch(tok->astParent(), ".")) |
| 643 | return {tok}; |
| 644 | const Token* parent = tok->astParent(); |
| 645 | while (Token::simpleMatch(parent->astParent(), ".")) |
| 646 | parent = parent->astParent(); |
| 647 | std::vector<const Token*> result; |
| 648 | for (const Token* tok2 : astFlatten(parent, ".")) { |
| 649 | if (Token::simpleMatch(tok2, "(") && Token::simpleMatch(tok2->astOperand1(), ".")) { |
| 650 | std::vector<const Token*> sub = getParentMembers(tok2->astOperand1()); |
| 651 | result.insert(result.end(), sub.cbegin(), sub.cend()); |
| 652 | } |
| 653 | result.push_back(tok2); |
| 654 | } |
| 655 | return result; |
| 656 | } |
| 657 | |
| 658 | static const Token* getParentLifetimeObject(const Token* tok) |
| 659 | { |
no test coverage detected