19 template<
class... Args>
static void note(
Loc loc, format::format_string<Args...> fmt, Args&&... args) {
20 std::cerr << loc <<
": note: " << format::format(fmt, std::forward<Args&&>(args)...) << std::endl;
22 template<
class... Args>
void warn(
Loc loc, format::format_string<Args...> fmt, Args&&... args) {
24 std::cerr << loc <<
": warning: " << format::format(fmt, std::forward<Args&&>(args)...) << std::endl;
26 template<
class... Args>
void err(
Loc loc, format::format_string<Args...> fmt, Args&&... args) {
28 std::cerr << loc <<
": error: " << format::format(fmt, std::forward<Args&&>(args)...) << std::endl;
36 unsigned num_errors_ = 0;
37 unsigned num_warnings_ = 0;
Hash set where all strings - wrapped in Symbol - live in.
Use/derive from this class for "global" variables that you need all over the place.
unsigned num_warnings() const
void err(Loc loc, format::format_string< Args... > fmt, Args &&... args)
unsigned num_errors() const
void warn(Loc loc, format::format_string< Args... > fmt, Args &&... args)
static void note(Loc loc, format::format_string< Args... > fmt, Args &&... args)