| 1847 | } |
| 1848 | |
| 1849 | bool ValueFlow::isLifetimeBorrowed(const Token *tok, const Settings &settings) |
| 1850 | { |
| 1851 | if (!tok) |
| 1852 | return true; |
| 1853 | if (tok->str() == ",") |
| 1854 | return true; |
| 1855 | if (!tok->astParent()) |
| 1856 | return true; |
| 1857 | const Token* parent = nullptr; |
| 1858 | const ValueType* vt = tok->valueType(); |
| 1859 | std::vector<ValueType> vtParents = getParentValueTypes(tok, settings, &parent); |
| 1860 | for (const ValueType& vtParent : vtParents) { |
| 1861 | if (isLifetimeBorrowed(vt, &vtParent)) |
| 1862 | return true; |
| 1863 | if (isLifetimeOwned(vt, &vtParent)) |
| 1864 | return false; |
| 1865 | } |
| 1866 | if (parent) { |
| 1867 | if (isDifferentType(tok, parent, settings)) |
| 1868 | return false; |
| 1869 | } |
| 1870 | return true; |
| 1871 | } |
| 1872 | |
| 1873 | static void valueFlowLifetimeFunction(Token *tok, const TokenList &tokenlist, ErrorLogger &errorLogger, const Settings &settings); |
| 1874 |
nothing calls this directly
no test coverage detected