#include enum class ErrorVisitor { BuildVisitor, PrintVisitor, FindSymbolsVisitor, // ... }; // TODO inline void handle_error(std::string message, ErrorVisitor visitor) { // TODO: add place in code std::string visitor_str; switch (visitor) { case ErrorVisitor::BuildVisitor: visitor_str = "Build Visitor"; break; case ErrorVisitor::PrintVisitor: visitor_str = "Print Visitor"; break; case ErrorVisitor::FindSymbolsVisitor: visitor_str = "Find Symbols Visitor"; break; // ... default: break; } std::cerr << "Error: " << message << " in " << visitor_str; exit(1); }