NOLINTNEXTLINE(performance-unnecessary-value-param) - false positive
| 2100 | template<class Iterator> |
| 2101 | // NOLINTNEXTLINE(performance-unnecessary-value-param) - false positive |
| 2102 | static ValueIterator removeAdjacentValues(std::list<ValueFlow::Value>& values, ValueIterator x, Iterator start, Iterator last) |
| 2103 | { |
| 2104 | if (!isAdjacent(*x, **start)) |
| 2105 | return std::next(x); |
| 2106 | auto it = std::adjacent_find(start, last, [](ValueIterator x, ValueIterator y) { |
| 2107 | return !isAdjacent(*x, *y); |
| 2108 | }); |
| 2109 | if (it == last) |
| 2110 | it--; |
| 2111 | (*it)->bound = x->bound; |
| 2112 | std::for_each(std::move(start), std::move(it), [&](ValueIterator y) { |
| 2113 | values.erase(y); |
| 2114 | }); |
| 2115 | return values.erase(x); |
| 2116 | } |
| 2117 | |
| 2118 | static void mergeAdjacent(std::list<ValueFlow::Value>& values) |
| 2119 | { |
no test coverage detected