| 391 | } |
| 392 | |
| 393 | static std::unordered_set<std::string> classify_argument(const argument& a) |
| 394 | { |
| 395 | std::unordered_set<std::string> result; |
| 396 | a.visit( |
| 397 | [&](auto t) { |
| 398 | for(const auto& x : t) |
| 399 | result.insert(classify(x)); |
| 400 | }, |
| 401 | [&](const auto& xs) { |
| 402 | for(const auto& x : xs) |
| 403 | { |
| 404 | auto r = classify_argument(x); |
| 405 | result.insert(r.begin(), r.end()); |
| 406 | } |
| 407 | }); |
| 408 | return result; |
| 409 | } |
| 410 | |
| 411 | static void preview_argument(std::ostream& os, const argument& a) |
| 412 | { |