diff --git a/src/Statement.cc b/src/Statement.cc index 42c9b1e4df607eea44f4bbae556e420d084c82fb..60513a8ac03f36a031fdc7acc763b6af68be745d 100644 --- a/src/Statement.cc +++ b/src/Statement.cc @@ -185,12 +185,22 @@ void OptionsList::writeOutputCommon(ostream& output, const string& option_group) const { // NOLINTBEGIN(clang-analyzer-core.CallAndMessage) - for (const auto& [name, val] : options) - std::visit( - [&]<class T>(const T& v) { - if constexpr (is_same_v<T, SymbolListVal>) - v.writeOutput(option_group + "." + name, output); - else + for (const auto &[name, val] : options) + auto name1 = name; + std::visit([&]<class T>(const T &v) + { + if constexpr(is_same_v<T, SymbolListVal>) + v.writeOutput(option_group + "." + name1, output); + else + { + output << option_group << "." << name1 << " = "; + if constexpr(is_same_v<T, NumVal> || is_same_v<T, DateVal>) + output << v; + else if constexpr(is_same_v<T, pair<string, string>>) + output << '[' << v.first << "; " << v.second << ']'; + else if constexpr(is_same_v<T, StringVal>) + output << "'" << v << "'"; + else if constexpr(is_same_v<T, vector<int>>) { output << option_group << "." << name << " = "; if constexpr (is_same_v<T, NumVal> || is_same_v<T, DateVal>)