Files
codeql/swift/logging/Formatters.h
Alexandre Boulgakov 7ada125299 Swift: Support fmtlib for assertions/expectations.
Specifically, this adds custom formatters using `path::operator string()` and `error_code::message()` and dereferences a (non-empty) optional. `fmtlib` provides formatters for these standard library types in `fmt/std.h`, but that file also requires RTTI (which we disable) for `std::exception` so we can't use it without either patching `fmtlib` (which they're open to: https://github.com/fmtlib/fmt/issues/3170) or enabling RTTI (which will require some consideration).
2023-05-16 18:33:28 +01:00

21 lines
572 B
C++

#pragma once
// Provides formatters for standard library types to be used with fmtlib.
// TODO: Patch fmtlib to support using `fmt/std.h` without RTTI
// (https://github.com/fmtlib/fmt/issues/3170).
#include <filesystem>
#include <fmt/format.h>
#include <string_view>
namespace fmt {
FMT_FORMAT_AS(std::filesystem::path, std::string);
}
template <>
struct fmt::formatter<std::error_code> : fmt::formatter<std::string> {
auto format(const std::error_code& e, format_context& ctx) const {
return fmt::formatter<std::string>::format(e.message(), ctx);
}
};