module selflinoin; import std.format : format; string makeCompilationErrorMessage(string message, string file = __FILE__, size_t line = __LINE__) { return "\x1b[1m%s(%d): \x1b[31mError:\x1b[m %s".format(file, line, message); } debug (selflinoin) unittest { assert (makeCompilationErrorMessage("this is a test message") == "\x1b[1msource/selflinoin.d(12): \x1b[31mError:\x1b[m this is a test message"); assert (makeCompilationErrorMessage("foo", "bar.d") == "\x1b[1mbar.d(13): \x1b[31mError:\x1b[m foo"); assert (makeCompilationErrorMessage("foo", "bar.d", 3141592) == "\x1b[1mbar.d(3141592): \x1b[31mError:\x1b[m foo"); pragma (msg, makeCompilationErrorMessage("This is not an actual error. Please ignore me.")); }