| 617 | } |
| 618 | |
| 619 | const Token* getParentLifetime(const Token* tok) |
| 620 | { |
| 621 | if (!tok) |
| 622 | return tok; |
| 623 | // Skipping checking for variable if its a pointer-to-member |
| 624 | if (!Token::simpleMatch(tok->previous(), ". *")) { |
| 625 | const Variable* var = tok->variable(); |
| 626 | // TODO: Call getLifetimeVariable for deeper analysis |
| 627 | if (!var) |
| 628 | return tok; |
| 629 | if (var->isLocal() || var->isArgument()) |
| 630 | return tok; |
| 631 | } |
| 632 | const Token* parent = getParentMember(tok); |
| 633 | if (parent != tok) |
| 634 | return getParentLifetime(parent); |
| 635 | return tok; |
| 636 | } |
| 637 | |
| 638 | static std::vector<const Token*> getParentMembers(const Token* tok) |
| 639 | { |
no test coverage detected